Personal website built with Astro 5, Tailwind CSS 4, and TypeScript.
Live: xsun4231.github.io
- Astro 5 - Static site generator
- Tailwind CSS 4 - Utility-first CSS
- TypeScript - Strict mode
- Fuse.js - Client-side fuzzy search
- Shiki - Syntax highlighting
- MDX - Markdown with components
- Dark-first design with light mode toggle
- Blog with Markdown/MDX content collections
- Full-text search (Ctrl+K / Cmd+K)
- Tag-based filtering and tag pages
- RSS feed
- Responsive layout
- Syntax-highlighted code blocks
src/
├── components/
│ ├── blog/ # BlogCard, BlogList
│ ├── layout/ # Navbar, Footer, ThemeToggle
│ └── ui/ # Card, Button, SearchModal
├── content/
│ └── blog/ # Markdown blog posts
├── layouts/ # BaseLayout
├── pages/
│ ├── blog/ # Blog index, [slug] pages
│ ├── tags/ # Tag index, [tag] pages
│ ├── about.astro
│ ├── index.astro
│ ├── rss.xml.ts
│ └── search-index.json.ts
├── styles/ # global.css, code.css
└── utils/ # theme.client.ts
npm install
npm run dev # http://localhost:4321| Command | Description |
|---|---|
npm run dev |
Start dev server |
npm run build |
Production build to ./dist/ |
npm run preview |
Preview production build |
npm run lint |
ESLint check |
npm run lint:fix |
ESLint with auto-fix |
npm run format |
Prettier format |
npm run check |
Run lint + format check |
npm run test |
Run tests (Vitest) |
Automated via GitHub Actions:
- Push to
developbranch - CI runs
npm ci+npm run build - Built files deploy to
blogbranch via actions-gh-pages - GitHub Pages serves from
blogbranch
MIT