Personal Website
My personal portfolio and resume website. Converts a YAML resume (JSON Resume schema) into an HTML page and automatically generates a PDF using Playwright. Projects and blog posts are markdown content collections with tag filtering.
Highlights
- Two-layout system: Tailwind CSS for portfolio pages, custom CSS for pixel-perfect resume PDF output
- Automated PDF generation via Playwright Chromium at build time
- Self-hosted fonts for reliable PDF rendering
- Dark mode with localStorage persistence
- Accessibility testing with axe-core
- Pre-commit hooks for formatting, type checking, and resume schema validation
- CI/CD via GitHub Actions deploying to a DigitalOcean VPS with Caddy
Tech Stack
Astro, TypeScript, Tailwind CSS v4, Svelte (theme toggle), Playwright, Zod, js-yaml.