Projects
Things I have designed, built, and shipped.
Firestore Rules Linter
Static analysis for security rules — flags permissive matches, missing catch-alls, and writes that trust request data.
Markdown Editor Component
A dependency-light editor with live preview, syntax-highlighted code fences, and paste-to-upload images.
Personal Blog & CMS
Statically exported Next.js site with a Firestore-backed dashboard for writing, publishing, and page composition.
Sitemap & JSON-LD Toolkit
Generates sitemaps and structured data from your content model, and validates the output.
Firestore Backup Cron
Scheduled export of every collection to Cloud Storage, with retention and a restore command.
Conventional Commit Linter
Git hook that enforces commit conventions and rejects the ones that say nothing.
Image CDN Proxy
Cloudflare Worker that resizes and re-encodes images on the fly, with a signed-URL allowlist.
Theme Toggle Without the Flash
Dark mode that respects the system setting and never flashes the wrong theme on load.
Reading Time Estimator
Word count that understands markdown — skips code fences, counts images, handles CJK text.
Static Deploy Diff
Compares a local build against what is actually live and tells you whether your last deploy landed.