// the find
stephenmcd/mezzanine
CMS framework for Django
Mezzanine is a full-featured CMS built directly on top of Django, bundling pages, a blog, a form builder, ecommerce (via the separate Cartridge project), search, and an admin dashboard into one integrated stack rather than a plugin ecosystem. It's aimed at Django developers who want a WordPress-style editing experience without leaving Python, and who are fine reading and modifying app code directly to get custom behavior.
Genuinely batteries-included: page hierarchy, drafts/scheduling, drag-and-drop forms with CSV export, and a blog engine all ship in the core rather than requiring you to wire together five separate third-party apps. i18n isn't an afterthought — every app (accounts, blog, etc.) carries its own locale tree for 35+ languages, which is a real maintenance investment most Django CMS projects don't bother with. It stays close to Django's own primitives (ORM, admin, auth) instead of replacing them, so you keep Django's migration tooling and security patch cadence. CI runs on GitHub Actions with a semantic-release config, so versioning isn't manual.
The architecture is the opposite of django-cms's plugin model — the README literally says it 'encourages diving in and hacking on the code,' which means customizing behavior often means patching core app files instead of swapping a component, making upstream upgrades painful once you've touched anything. Ecommerce lives in a separate project (Cartridge) with its own release cadence, so you're tracking compatibility between two codebases if you need a shop. The feature list still touts JVM/Jython compatibility, which is dead weight nobody exercises on a modern deploy target and signals unpruned legacy surface area. Support is funneled through a mailing list and a Freenode IRC channel — Freenode has been defunct for years, meaning the docs' support section hasn't been revisited even as the codebase keeps taking commits.