Source code for kkhys.me — a personal website and blog built with Astro.
- Astro — Static site generator
- React — Server-side OG image generation (via Satori)
- Vanilla CSS — Styling with kiso.css reset + uchu.css color palette (OKLCH)
- TypeScript — Strictest mode type safety
- Vitest — Unit testing
- Biome — Linting and formatting
- Cloudflare Pages — Hosting and deployment
pnpm install
pnpm devOpen http://localhost:4321 to view the site.
| Command | Description |
|---|---|
pnpm dev |
Start development server |
pnpm build |
Production build (static) |
pnpm preview |
Preview production build locally |
pnpm check |
Run Astro check + TypeScript validation |
pnpm lint |
Check code with Biome |
pnpm lint:fix |
Auto-fix Biome issues |
pnpm test |
Run unit tests |
pnpm coverage |
Run tests with coverage report |
pnpm render:mermaid |
Pre-render Mermaid diagrams to SVG cache |
pnpm create:entry |
Create a new blog post |
pnpm release |
Release automation (date-based versioning) |
pnpm deploy |
Build and deploy to Cloudflare Pages |
src/
├── __fixtures__/ # Test fixtures
├── __tests__/ # Unit tests (Vitest)
├── assets/ # Static assets
├── components/ # Shared UI components
├── config/ # Site configuration
├── features/ # Feature modules
│ ├── blog/ # Blog system
│ ├── home/ # Home page
│ └── pages/ # Static pages (about, privacy, copyright)
├── layouts/ # Page layouts
├── lib/ # Libraries and custom plugins
│ ├── api/ # API wrappers (GitHub, Twitter, emoji, metadata)
│ ├── remark-* # Custom remark plugins
│ └── rehype-* # Custom rehype plugins
├── pages/ # File-based routing
├── styles/ # Global styles (kiso.css, uchu.css, prose.css)
├── utils/ # Pure helper functions
└── content.config.ts # Content schema definitions
content/
├── blog/ # Blog posts (MDX)
├── bucket-list/ # Bucket list data (YAML)
└── pages/ # Static pages (MDX)
scripts/
├── create-entry.ts # Blog post scaffolding
├── render-mermaid.ts # Mermaid SVG pre-rendering
└── release.ts # Release automation
Blog posts are organized by date (content/blog/YYYY-MM-DD/index.mdx) and categorized into 4 groups:
- Tech — Technology and programming
- Life — Daily life and experiences
- Object — Product reviews and things
- DIY — Do-it-yourself projects
Code is licensed under MIT. Content and images are licensed under CC BY-NC-SA 4.0.