Kevin Rich
Building ai-driven, cloud-native applications — and the high-performing engineering teams that ship them.
Building ai-driven, cloud-native applications — and the high-performing engineering teams that ship them.
A self-hosted personal video media server that reads each file's own embedded metadata as the source of truth, built in Go with a SvelteKit frontend.
Most media servers make you bend your library to fit them. You rename files to a scheme, maintain a database by hand, or hand your collection to an online service to scrape. Holodex takes the opposite stance. The metadata already embedded in your video files is the catalog: titles, cast, genres, and dates written into the container’s iTunes atoms or Matroska tags. Point it at a folder and it indexes everything with no naming conventions, no internet connection, and no telemetry.
Media is a long-running hobby of mine and my university minor, and I’ve built versions of this project for years. This time I paired with Claude Code and reached a working MVP in a few days. Previous attempts took weeks. I deliberately chose Go because I’d never used it before; in practice my approach left me little need to drop into the Go code by hand.
The backend is a single pure-Go binary running a chi REST API on top of SQLite. The frontend is a SvelteKit SPA on semantic design tokens driving three fully switchable skins from a single header control. Notable technical decisions:
amelie finds AmélieIt’s built to be run, not hosted-for-you. The library mounts read-only, the index and config live in a named volume, and the whole thing ships as one multi-arch image (amd64 + arm64) for NAS and ARM home servers. Additional capabilities:
Architecture decisions are tracked as a numbered ADR series in the repo.
A personal book-tracking app for managing reading lists and discovering new books. Built with React, Hono, and DynamoDB on AWS.
Bookshelf is a full-stack personal app for tracking what I’m reading, what I want to read, and what I’ve finished.
The frontend is a React 19 SPA built with Vite and Tailwind CSS. The backend is a Hono REST API running on AWS Lambda, backed by DynamoDB. Authentication uses Cognito with a PKCE flow. The entire infrastructure is defined as code with AWS CDK v2 and deployed via GitHub Actions with OIDC.
Key technical decisions: runtime config injection (no build-time env vars) so a single artifact can be promoted dev → prod; same-origin API routing through CloudFront to eliminate CORS; and a versioned S3 deployment layout that supports zero-downtime rollbacks.
Notes on engineering decisions, AWS, and things I've learned building.