Static portfolio built with Astro (v5), Tailwind CSS v4, and Three.js for an optional background. Single scrolling homepage plus MDX blog posts, multiple themes (including Arcade), deployed to GitHub Pages.
npm ci
npm run devOther scripts: npm run build (output in dist/), npm run preview, npm run check. See AGENTS.md for CI, spellcheck, and pre-commit expectations.
| Path | Purpose |
|---|---|
src/pages/ |
Routes: index.astro, blog/[...slug].astro, 404.astro |
src/components/ |
Layout, sections, UI, Three.js |
src/content/ |
Collections (projects/, blog/), experience.json, skills.json |
src/styles/ |
Global Tailwind theme tokens and section styles |
public/ |
Static assets copied to site root (robots.txt, site.webmanifest, CNAME, images under public/images/) |
- Projects and blog: Markdown/MDX under
src/content/projects/andsrc/content/blog/. - Experience and skills: JSON in
src/content/. - Hero and section copy: Astro components under
src/components/sections/(not a single root HTML file). - Profile photo: place or replace
public/images/profile.jpg(referenced as/images/profile.jpgin the build).
Pushes to main (or manual workflow_dispatch) run .github/workflows/pages.yml: npm ci, npm run build, then deploy the dist artifact to GitHub Pages.
Semantic HTML, keyboard navigation, theme and motion preferences are part of the design. Performance and manual test notes live in AGENTS.md. There are no analytics trackers or cookies; the site loads webfonts from Google Fonts (JetBrains Mono, Sora, Marcellus, Silkscreen — see src/components/layout/BaseHead.astro).
Third-party licenses, font attribution, and game-culture homage disclaimers are in CREDITS.md. Contributor workflow and tooling are in AGENTS.md.