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.
assets
Serve static assets (CSS, JS, images, etc.) directly from your app.
cli
The `plain` CLI loads commands from Plain itself, and any `INSTALLED_PACKAGES`.
csrf
Cross-Site Request Forgery (CSRF) protection.
forms
Handle user input.
http
internal
logs
Default logging settings and key-value logger.
middleware
Hook into the request/response cycle.
packages
Create app-packages and install third-party packages from PyPI.
preflight
Static system checks to catch misconfigurations.
runtime
Leverage user-settings at runtime.
signals
Run code when certain events happen.
templates
Render HTML templates using Jinja.
test
Testing utilities for Plain.
urls
Route requests to views.
utils
Various utilities for common things like text manipulation, parsing, dates, 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.
auth
v0.2.1
Add users to your app and define which views they can access.
cache
v0.4.0
A simple cache using the database.
code
v0.3.0
dev
v0.6.0
A single command that runs everything you need for local development.
elements
v0.2.0
```python
flags
v0.6.0
Local feature flags via database models.
htmx
v0.2.1
Integrate HTMX with templates and views.
importmap
v0.2.1
Use import maps in templates.
loginlink
v0.1.1
Link-based authentication for Plain.
mail
v0.3.0
Everything you need to send email.
models
v0.9.0
Model your data and store it in a database.
oauth
v0.7.2
Let users log in with OAuth providers.
pages
v0.3.0
passwords
v0.2.1
Password authentication for Plain.
pytest
v0.2.1
Write and run tests with pytest.
sessions
v0.6.0
Manage sessions and save them in the database.
staff
v0.3.1
An admin interface for staff users.
tailwind
v0.2.0
Integrate Tailwind CSS without JavaScript or npm.
vendor
v0.3.0
Download those CDN scripts and styles.
worker
v0.5.1
Process background jobs with a database-driven worker.