Personal portfolio website built with Astro 5.
- Resume - Data-driven from JSON Resume schema (
cv.json) - Projects - Development work with case studies and media galleries
- Visuals - Creative portfolio (design, photography, motion)
- Blog - MDX-powered posts with draft support
- Dark/Light Theme - Persists to localStorage
- Keyboard Shortcuts - Quick navigation (Cmd/Ctrl + K)
- Astro 5 - Static site generator
- Svelte 5 - Interactive components
- MDX - Rich content with components
- TypeScript - Type safety
Saul Bass-inspired visual style with bold typography, geometric shapes, and high-contrast colors. Smooth animations using cubic-bezier(0.16, 1, 0.3, 1) easing.
pnpm install # Install dependencies
pnpm dev # Start dev server at localhost:4321
pnpm build # Type-check and build for production
pnpm preview # Preview production buildContent lives in src/content/ as MDX files:
src/content/
├── blog/ # Blog posts
├── projects/ # Development projects
└── visuals/ # Creative work
Resume data is in cv.json following the JSON Resume schema.
- JSON Resume schema from jsonresume.org
- Initial concept inspired by Bartosz Jarocki & Midudev
MIT