~/joshua-eom
← All projects

Portfolio Website

A Markdown-driven portfolio with a working terminal, a live lab timeline, and zero manual wiring.

Oct 2026completedLive site ↗
  • Astro
  • TypeScript
  • Tailwind CSS
  • Vercel
  • GitHub Actions
On this page
  1. The problem
  2. Approach
  3. Results

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, and open work 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.