Docs
Garden CMS is a lightweight, database-driven content management system built with Python. It gives you full control over markup, theming, and deployment while providing a clean admin interface for content management.
Overview
- Pages — Create and manage pages with Jinja2 template bodies, per-page theme overrides, and configurable navigation order
- Content Blocks — Global key/value pairs (text, HTML, or image references) available in all templates as
{{ site.key }} - Collections — Define structured content types with custom field schemas, card/detail templates, and HTMX-powered paginated feeds
- Themes — Jinja2 base templates with CSS, light/dark mode support, and per-page overrides
- Media — Upload images with pluggable storage backends (local disk or S3-compatible)
- Markdown Mounts — Map directories of
.mdfiles to URL routes with file-based routing - Authentication — Password login or OAuth2/OIDC with PKCE (e.g. Pocket ID, Authentik, Keycloak)
Stack
| Component | Technology |
|---|---|
| Framework | Litestar (Python ASGI) |
| ORM | Piccolo |
| Database | PostgreSQL |
| Templates | Jinja2 + JinjaX components |
| Admin UI | HTMX + Pico CSS |
| Code editors | CodeJar + Prism.js |
More
- Installation — Requirements, setup, and environment variables
- Getting Started — First steps after installation
- Pages — Creating and managing pages
- Content Blocks — Global template variables
- Collections — Structured content types and feeds
- Themes — Theming system and base templates
- Media — File uploads and storage backends
- Markdown Mounts — File-based markdown routing
- Templates — Jinja2 templating reference
- Authentication — Password and OAuth login
- Deployment — Docker, serverless, and production configuration
- Configuration — All environment variables and settings