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.
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.
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.
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.