# Plain **Plain is a web framework for building products with Python.** The core `plain` package provides the backbone of a Python web application (similar to [Flask](https://flask.palletsprojects.com/en/stable/)), while the additional first-party packages can power a more fully-featured database-backed app (similar to [Django](https://www.djangoproject.com/)). All Plain packages are designed to work together and use [PEP 420](https://peps.python.org/pep-0420/) to share the `plain` namespace. To quickly get started with Plain, visit [plainframework.com/start/](https://plainframework.com/start/). ## Core Modules The `plain` package includes everything you need to start handling web requests with Python: - [assets](https://plainframework.com/docs/plain/plain/assets/README.md?llm) - Serve static files and assets. - [cli](https://plainframework.com/docs/plain/plain/cli/README.md?llm) - The `plain` CLI, powered by Click. - [csrf](https://plainframework.com/docs/plain/plain/csrf/README.md?llm) - Cross-Site Request Forgery protection. - [forms](https://plainframework.com/docs/plain/plain/forms/README.md?llm) - HTML forms and form validation. - [http](https://plainframework.com/docs/plain/plain/http/README.md?llm) - HTTP request and response handling. - [logs](https://plainframework.com/docs/plain/plain/logs/README.md?llm) - Logging configuration and utilities. - [preflight](https://plainframework.com/docs/plain/plain/preflight/README.md?llm) - Preflight checks for your app. - [runtime](https://plainframework.com/docs/plain/plain/runtime/README.md?llm) - Runtime settings and configuration. - [templates](https://plainframework.com/docs/plain/plain/templates/README.md?llm) - Jinja2 templates and rendering. - [test](https://plainframework.com/docs/plain/plain/test/README.md?llm) - Test utilities and fixtures. - [urls](https://plainframework.com/docs/plain/plain/urls/README.md?llm) - URL routing and request dispatching. - [views](https://plainframework.com/docs/plain/plain/views/README.md?llm) - Class-based views and request handlers. ## Foundational Packages - [plain.models](https://plainframework.com/docs/plain-models/plain/models/README.md?llm) - Define and interact with your database models. - [plain.cache](https://plainframework.com/docs/plain-cache/plain/cache/README.md?llm) - A database-driven general purpose cache. - [plain.email](https://plainframework.com/docs/plain-email/plain/email/README.md?llm) - Send emails with SMTP or custom backends. - [plain.sessions](https://plainframework.com/docs/plain-sessions/plain/sessions/README.md?llm) - User sessions and cookies. - [plain.worker](https://plainframework.com/docs/plain-worker/plain/worker/README.md?llm) - Backgrounb jobs stored in the database. - [plain.api](https://plainframework.com/docs/plain-api/plain/api/README.md?llm) - Build APIs with Plain views. ## Auth Packages - [plain.auth](https://plainframework.com/docs/plain-auth/plain/auth/README.md?llm) - User authentication and authorization. - [plain.oauth](https://plainframework.com/docs/plain-oauth/plain/oauth/README.md?llm) - OAuth authentication and API access. - [plain.passwords](https://plainframework.com/docs/plain-passwords/plain/passwords/README.md?llm) - Password-based login and registration. - [plain.loginlink](https://plainframework.com/docs/plain-loginlink/plain/loginlink/README.md?llm) - Login links for passwordless authentication. ## Admin Packages - [plain.admin](https://plainframework.com/docs/plain-admin/plain/admin/README.md?llm) - An admin interface for back-office tasks. - [plain.flags](https://plainframework.com/docs/plain-flags/plain/flags/README.md?llm) - Feature flags. - [plain.support](https://plainframework.com/docs/plain-support/plain/support/README.md?llm) - Customer support forms. - [plain.redirection](https://plainframework.com/docs/plain-redirection/plain/redirection/README.md?llm) - Redirects managed in the database. - [plain.pageviews](https://plainframework.com/docs/plain-pageviews/plain/pageviews/README.md?llm) - Basic self-hosted page view tracking and reporting. ## Dev Packages - [plain.dev](https://plainframework.com/docs/plain-dev/plain/dev/README.md?llm) - A single command for local development. - [plain.pytest](https://plainframework.com/docs/plain-pytest/plain/pytest/README.md?llm) - Pytest fixtures and helpers. - [plain.code](https://plainframework.com/docs/plain-code/plain/code/README.md?llm) - Code formatting and linting. - [plain.tunnel](https://plainframework.com/docs/plain-tunnel/plain/tunnel/README.md?llm) - Expose your local server to the internet. ## Frontend Packages - [plain.tailwind](https://plainframework.com/docs/plain-tailwind/plain/tailwind/README.md?llm) - Tailwind CSS integration without Node.js. - [plain.htmx](https://plainframework.com/docs/plain-htmx/plain/htmx/README.md?llm) - HTMX integrated into views and templates. - [plain.elements](https://plainframework.com/docs/plain-elements/plain/elements/README.md?llm) - Server-side HTML components. - [plain.pages](https://plainframework.com/docs/plain-pages/plain/pages/README.md?llm) - Static pages with Markdown and Jinja2. - [plain.esbuild](https://plainframework.com/docs/plain-esbuild/plain/esbuild/README.md?llm) - Simple JavaScript bundling and minification. - [plain.vendor](https://plainframework.com/docs/plain-vendor/plain/vendor/README.md?llm) - Vendor JavaScript and CSS libraries.