I Rewrote My 2012 Music Player Last Month

Project Apollo started in 2012 as a static HTML page — hand-written, hard-coded paths, audio and image assets in folders, served by Apache. It ran untouched for over a decade.

Last month I rewrote the entire thing from scratch using Claude Design and Claude Code. The new version is a proper self-hosted PWA: a headless CMS for managing playlists, Docker Compose for the stack, and the same codebase powering two independent deployments — Project Apollo in English, and Maomao Radio for a Chinese-language audience.

The UI is new, the architecture is new, and still zero build tooling.

I wrote up the full technical breakdown on the main blog — the architecture decisions, the Docker setup, the iOS Safari quirks that took time to solve, and why one codebase handling two different audiences through CMS feature flags turned out to be the right call.

Project Apollo: Rebuilt After 13 Years