Creator & Maintainer · Oct 2026
erid.dev (this website)
A static, recruiter-focused portfolio and résumé pipeline where a local-only Keystatic editor writes validated YAML and Markdown files that build into plain HTML and a matching résumé PDF.
- Astro
- TypeScript
- Keystatic
- SST
- Cloudflare
The challenge
Most developer portfolios either hardcode copy inside components—making updates tedious and allowing the web résumé and downloadable PDF to drift apart—or introduce a hosted CMS, database, and runtime server for content that only changes when its author edits it.
The goal for erid.dev was to optimize for a recruiter's ten-second scan (role, core stack, work history, proof of shipped work, and a direct PDF résumé download) while keeping the authoring workflow local, reproducible, and static in production.
My contribution
I designed and implemented the repository as a single pnpm package built with Astro and TypeScript 7:
Content lives in portable YAML and Markdown files under src/content/ and is validated by shared Zod schemas and a cross-reference checker (pnpm content:check) that verifies résumé role IDs, date precision, case-study completeness, and image existence.
During local development (pnpm dev), Keystatic mounts at /keystatic in local storage mode so records can be edited through forms that write directly to the working tree. Production builds omit the Keystatic and React integrations entirely, shipping static HTML and CSS with zero hydrated framework runtime.
Decisions and trade-offs
Keeping the editor strictly local-only eliminated OAuth apps, hosted admin endpoints, and database state while preserving a structured editing UI when wanted and clean Git diffs before every commit.
To adopt the native TypeScript 7 compiler early without breaking ESLint or Astro's template checker, the project pairs @typescript/native (TS 7) for compiler checks with the documented @typescript/typescript6 compatibility package for tools that still consume the TypeScript 6 JavaScript API.
Outcomes and lessons
The site builds in under a second into static assets with a verified content graph, protects the contact email from raw HTML scrapers without a backend form service, and serves as a clean, inspectable code sample in its own right.