Pages & Templates
Write page bodies in Jinja2 with full access to content blocks, media URLs, and JinjaX components. Override themes per page.
A Python content management system with live-preview editing, flexible collections, and pluggable storage.
Everything you need to manage content, nothing you don't.
Write page bodies in Jinja2 with full access to content blocks, media URLs, and JinjaX components. Override themes per page.
Define structured content types with custom field schemas. Card and detail templates with HTMX-powered paginated feeds.
Global key/value pairs editable from the admin. Text, HTML with Jinja support, or image references — available everywhere as {{ site.key }}.
Jinja2 base templates with CSS. 48 classless CSS framework presets built in. Light/dark mode support out of the box.
Upload images to local disk or S3-compatible storage. CDN support with public URL rewriting. One-year immutable cache headers.
Drop .md files in a directory, map it to a route in the admin. File-based routing with full theme integration.
Password login or OAuth2/OIDC with PKCE. Group-based access control. Rate-limited login endpoint.
Set STATELESS=true for serverless and multi-instance environments. One env var, zero code changes.
Built on mature, well-documented Python libraries.
Garden CMS is a lightweight, database-backed content management system written in Python. It is built on Litestar and Piccolo ORM, renders pages through Jinja2 and JinjaX templates, and uses HTMX for seamless interactions. Features include editable page templates with live preview, reusable content blocks, custom collections with user-defined schemas, media uploads to local disk or S3-compatible storage, swappable themes, and slug redirect history. Build any website you can imagine, dynamically.