The problem
I wanted a portfolio I’d actually keep up to date. Most portfolio sites go stale because adding anything means editing HTML. I wanted adding a job, a certification, or a rooted box to be as simple as dropping a Markdown file in a folder.
Approach
- Content as files. Every page comes from a folder of Markdown files with typed frontmatter. Astro validates each file at build time, so a typo fails the build instead of breaking a page.
- A real terminal on the homepage.
ls,cd,cat, andopenwork against a virtual filesystem generated from the same content, with tab completion and command history. - A timeline that fills itself. A daily GitHub Actions job reads my Hack The Box activity and commits new machine roots as timeline entries, which triggers a fresh deploy. Labs fold into one row per month so they don’t drown out the milestones.
- Small serverless pieces only where needed. Blog view counts run through a single Vercel function backed by Redis. Everything else is static.
Results
- New content goes live with a
git push. No code changes needed. - Dark navy theme with every text color checked against WCAG AA contrast.
- Smooth scroll reveals and page transitions that switch off for visitors who prefer reduced motion.