Plain
lastmod 2025-03-30created 2025-03-301 edits
A web framework for Python
About
- A web framework designed for building products quickly with Python (a fork of Django)
- Local development can be started with a single command, and you can move to production through dashboards, feature flags, and more
- Clone the starter kit to get started quickly
Features of the plain package
- Maps URL patterns to Python view functions
- Handles HTTP requests and responses
- HTML rendering with Jinja templates
- Forms for handling user input
- Provides a command-line interface (CLI)
- Can serve static assets such as CSS, JS, and images
- Extends app functionality through middleware
- Official and third-party packages can be integrated easily
- Provides a pre-launch check feature (Preflight check system) before the app starts
Extensions through first-party packages
- plain.models: provides an ORM for storing data in Postgres, MySQL, and SQLite
- plain.cache: a caching solution that works with your existing database
- plain.email: provides app-wide email configuration and sending
- plain.sessions: enables database-backed session reads and writes
- plain.worker: a background job solution backed by your existing database
- plain.api: lets you build JSON APIs using a class-based view architecture
Authentication
- plain.auth: provides the foundation for adding users, authenticating requests, and restricting views
- plain.oauth: a flexible OAuth solution supporting modern social login and API access
- plain.passwords: supports traditional password-based login
- plain.loginlink: provides one-time login links for logging in without a password
- plain.passkeys: passwordless login feature planned
Admin
- plain.admin: provides a fully customizable admin dashboard
- plain.flags: database-backed feature flags for controlling content per user
- plain.support: provides customer support without third-party services
- plain.redirection: 404 monitoring and redirect management from the database
- plain.pageviews: see what users are viewing and provide better support
Development
- plain.dev: start a local development environment with a single command
- plain.pytest: write and run tests with the popular Python testing library
- plain.code: format and lint Python code with default settings
- plain.tunnel: expose a local app to the internet for webhook integration
Frontend
- plain.tailwind: provides first-class integration with the popular CSS framework
- plain.htmx: build modern user experiences using existing tools
- plain.elements: provides a new paradigm for reusable components in your app's templates
- plain.pages: provides file-based routing using HTML and Markdown
- plain.esbuild: provides a streamlined build process for compiling JavaScript
- plain.vendor: download and self-host JavaScript and CSS assets without relying on a CDN