Personal portfolio site built with Astro 6 and deployed on Cloudflare Workers.
- Framework: Astro 6 (hybrid rendering)
- Styling: Vanilla CSS with modern features (nesting,
@layer,color-mix(), scroll-driven animations) - Hosting: Cloudflare Workers
- Auth: Cloudflare Access (Google OAuth) for private content
npm install
npm run dev| Command | Description |
|---|---|
npm run dev |
Start dev server |
npm run build |
Production build |
npm run check |
TypeScript type checking |
npm run lint |
ESLint + Prettier check |
npm run lint:fix |
Auto-fix lint issues |
npm run test:unit |
Run Vitest unit tests |
npm run test:watch |
Run Vitest in watch mode |
npm run test:e2e |
Run Playwright E2E tests |
src/
components/ UI components (Astro)
content/ Markdown content collections
layouts/ Base page layout
lib/ Constants, auth, GitHub API, syntax highlighting
middleware.ts Auth guard for /private/* routes
pages/ Routes (public + private SSR)
styles/ Global CSS and design tokens
public/ Static assets, security headers
See CONTRIBUTING.md for commit conventions and workflow.
Pushes to main trigger automatic builds on Cloudflare Workers. CI runs lint, type check, unit tests, build, and E2E tests via GitHub Actions.