Plain is headed towards 1.0! Subscribe for development updates →

Plain

A web framework for building products with Python.

Plain is a reimagined fork of Django where major design changes can be made with more freedom and fewer consequences.

Design

Everything you need to support real usage.

Plain can take you from development to production, from one user to thousands. Build a new business, an internal tool, or something for yourself.

Entrepreneurial

Plain was forked inside of PullApprove — a revenue-generating SaaS. Daily use drives development.

End-to-end

Work locally with a single command. Manage production with dashboards, toolbars, feature flags, and more.

Ecosystem

Plain is split into multiple, official packages. Major features are optional and new ideas can grow independently.

Packages

Simple solutions for common problems.

Plain makes the most of "boring technology". Use tools that are well understood and can be maintained by one person or a small team.

Established database support

Django models are famous. They're still here and continue to evolve.

Background jobs

An official solution for background work, backed by the database you already have.

Local dev tooling

Run multiple processes with plain dev. Lint and format code with a bundled plain fix.

Authentication

Password-based authentication that works like it always has. Simple and dependable.

OAuth login

A flexible OAuth solution to support modern social logins and API access.

User impersonation

Provide better support by using the app just like your users do.

Staff dashboard and toolbar

An admin dashboard that acts more like a production support tool, with per-page query stats and more.

Database-backed cache

A caching solution designed just to work with your existing database. The starting point before reaching for things like Redis.

Feature flagging

Database-backed feature flags to control who sees what and quietly deploy progress.

HTML template components

A new way to ergonomically build HTML components in your Jinja templates.

Tailwind

Officially supported across Plain packages and your app, if you want it.

HTMX

A simple integration for HTMX and a new way to think about views and frontend interactivity.

Pytest

Write and run tests with one of Python's most popular testing libraries.

Email

Send email using any provider via SMTP, or write your own simple backend.

Integrated .env files

Encouraged use of `.env` files for configuration in development.