Overview

SmallBlock CMS is a lightweight, extensible content management system built on Python. It’s designed to be fast to set up, easy to extend, and comfortable to operate in production behind Nginx with PostgreSQL or MariaDB.

Who This Is For

  • Developers / DevOps — install, configure, deploy, extend with plugins and template tags.

  • Editors / Site Managers — create pages, manage media, publish content, work with the toolbar.

  • Architects / Tech Leads — review security model, deployment guidance, and customization options.

What You’ll Get

  • A clear installation path (local quick start → production deployment)

  • A pragmatic plugin system with template tags, toolbar extensions, and webhooks

  • A sensible permissions model with roles for Administrator, Editor, and Author

  • Friendly documentation: conceptual topics, how-to guides, and reference material

Core Capabilities

  • Publishing workflow — draft/publish, scheduled publishing

  • Templates & tags — Jinja-style tags for dynamic regions

  • Plugins — register small features without touching core

  • Multilingual content — serve multiple languages (optional)

  • Search — basic site search out of the box

  • Sitemaps — automatic XML sitemap generation

Architecture Snapshot

  • Nginx terminates TLS and proxies to the app server

  • Gunicorn/Uvicorn runs the SmallBlock application (WSGI/ASGI)

  • SmallBlock handles routing, templating, permissions, and plugins

  • PostgreSQL/MariaDB stores content, users, and plugin data

  • Static/Media served directly by Nginx in production

Tip

See Deployment Architecture Overview for a system diagram and a component-by-component summary.

Getting Started Quickly

If you want a fast local setup:

  1. Install Python and dependencies

  2. Install SmallBlock

  3. Configure a database

  4. Run the development server

Then jump into the User Guide to create your first pages.

For Production

Customization Paths

Documentation Conventions

  • Tone: direct, approachable, task-oriented

  • Code: copy-pastable, minimal, and runnable

  • Headings: sentence case; short introductions at the top of each page

  • Style guide: see SmallBlock Style Guide

Compatibility

  • Python: 3.10+

  • Databases: PostgreSQL ≥ 13 or MariaDB ≥ 10.5

  • Web server: Nginx 1.20+

Next Steps