Docs · Plain

Documentation

Source code and markdown docs, combined.

All of Plain's docs are written directly in the source code. You're encouraged to read the source — either on this site, the GitHub repo, or in your local virtual environment for the version of Plain you're using.

Core

By itself, this is the bare minimum to get a Python web app up and running. It can respond to HTTP requests and render templates, but doesn't include a database. You can think of this as an alternative to Flask.

agents Sync AI agent rules and skills from installed Plain packages into your project.

assets Serve static assets (CSS, JS, images, etc.) directly or from a CDN.

chores Routine maintenance tasks.

cli The `plain` command-line interface and tools for adding custom commands.

csrf Cross-Site Request Forgery (CSRF) protection using modern request headers.

forms HTML form handling, validation, and data parsing.

http Request and response handling for Plain applications.

logs Structured logging with sensible defaults and zero configuration.

packages Register and configure Python modules as Plain packages.

preflight System checks that validate your settings and environment before running your application.

runtime Access and configure settings for your Plain application.

server A production-ready HTTP server with HTTP/2 support, originally based on gunicorn.

signals Run code when certain events happen in your application.

templates Render HTML templates using Jinja2.

test Testing utilities for making HTTP requests and inspecting responses.

urls Route incoming requests to views based on URL patterns.

utils Common utilities for working with dates, text, HTML, and more.

views Take a request, return a response.

Packages

These packages are separate and can be installed individually. They're often included in the starters.