This is the source code for my personal website, built on top of the astro-theme-vitesse template with extensive customizations to fit my needs.
Originally, the Vitesse theme seemed to be discontinued, and the source code was no longer being updated. Therefore, I forked it, updated it, and continue to maintain it myself. If you want to use this theme, feel free to do so!
All the packages are using the latest versions and are upgraded by me regularly.
Extensions on top of the original Vitesse theme:
- Astro 7 with the content layer API
- 7 content collections —
blog,infosec,ctf,talks,research,paper,pages - Auto OG image generation — dynamic Open Graph images per page and per post (Satori)
- View and like counters — serverless, straight to the Firestore REST API (no SDK, no key)
- Build freshness stamp — the footer shows the build's commit and checks it against GitHub
- Per-post
lastmodsupport - Self-hosted variable fonts — Google Sans Flex + Google Sans Code (no external font requests)
- Competition experience — table with CTF placements and rankings
- Friends page — clean list layout
- Gear page — share your setup and tools
- Links page — linktree-style with stagger animation
- Projects page — showcase with category grouping
- Responsive design — mobile-first with card/table adaptive layouts
- Dark-only theme — optimized for dark mode viewing
Requires Bun and Node 24.x (npm/yarn not supported here).
bun install # install dependencies
bun dev # dev server (--host enabled)
bun build # production build
bun lint:fix # auto-fix lint issuesCLAUDE.md— the single reference for repo conventions, content rules, architecture, and the checklist for adding a new content collectionAGENTS.md— a thin pointer toCLAUDE.mdfor OpenCode and other agents
This project is licensed under the MIT License.