// the find
thechangelog/changelog.com
Changelog makes world-class developer pods. This is our open source platform.
The open-source CMS and platform behind changelog.com — handles podcast publishing, episode management, news items, sponsorships, and community features for a real production site serving millions of listeners. It's a Phoenix/Elixir monolith that has been running in production since 2016, so you're looking at battle-tested code rather than a toy. Useful as a reference implementation if you're building something with Phoenix and want to see how a mature codebase structures contexts, assets, and admin tooling.
The codebase is genuinely in production and actively maintained — last push was yesterday, which means you're reading real code that solves real problems, not tutorial-quality demos. The Phoenix/Ecto patterns are idiomatic and the admin UI is hand-rolled vanilla JS rather than a framework, which makes it readable without needing a build toolchain archaeology expedition. The infrastructure story (Dagger CI pipelines, Kubernetes workflows, Fly.io) is documented in INFRASTRUCTURE.md and visible in .github/workflows, which is rare for open-source CMS projects. The VIBE.md file suggests intentional culture around how contributions work, which correlates with the 31-contributor count actually meaning something.
They say it themselves in the README: podcast names are hardcoded in application logic, which tells you this is not designed to be generalized — forking it means inheriting Changelog's specific assumptions throughout. The frontend is a mix of Sass/SCSS, vanilla JS modules, Handlebars templates, and Semantic UI, all wired together with a custom Node build — there is no coherent frontend architecture, just accumulated decisions over a decade. Test coverage signals are absent from the README and directory tree, so you have no idea what's actually tested before you start poking around. The admin interface is a separate JS build targeting its own CSS and JS bundles, which means two asset pipelines to understand and maintain.