# dropseed/plain

The Python web framework for building apps.

Repository: https://github.com/dropseed/plain
Canonical: https://ross.abutalabs.com/products/plain
Homepage: https://plainframework.com
Language: Python
License Family: other
Topics: framework, python, web
Last push: 2026-09-03T01:53:42+00:00

## Health v2 (maintenance only)
Score: 75/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 100, release rhythm 35, longevity 90
- inputs: {"age_days": 1260, "days_push": 0, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases, no_license
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1041, forks 26 (observed 2026-09-03T02:15:11.404461+00:00)

## What it is
Plain is a Python web framework for building database-backed applications, originally forked from Django and redesigned around explicit, typed APIs. It ships a core HTTP/routing/views layer plus first-party packages for Postgres ORM, auth, sessions, background jobs, APIs, admin, and MCP server support, with built-in OpenTelemetry observability.

## Use cases
- build a full-stack python web app with postgres
- django alternative with modern typed apis
- build a rest api with class-based views in python
- expose my app to ai agents as an mcp server
- run background jobs with a database-backed queue
- add user authentication and sessions to a python app
- server-rendered app with jinja2, htmx and tailwind
- scaffold a python web app with an ai coding agent

## When to choose
- you want a batteries-included Python framework like Django but with explicit, typed, modern APIs
- your stack is Postgres-only and you value built-in observability (traces, slow-query detection)
- you want an app that is easy for AI coding agents to read and modify
- you want first-party auth, admin, jobs, email, and MCP packages that work together

## When to avoid
- you need databases other than Postgres (models are Postgres-only)
- you need a mature 1.0 framework — Plain is pre-1.0 and evolving
- you want an async-first or microframework approach like FastAPI or Flask
- you need a large third-party plugin ecosystem

## Facets
- artifact type: framework
- maturity: active
- function: web-framework, orm, templating, routing, auth, middleware, http-server, api-framework, mcp, cli, testing, logging, tracing, caching, email, form-handling, scheduling
- domain: web-development, backend, developer-tools, large-language-models
- platform: python, cli, cross-platform
- tags: django-alternative, flask-alternative, postgres-only, jinja2, htmx, tailwind, full-stack, agent-friendly, typed-python, background-jobs, opentelemetry, bsd-license, ai-agents, web-server

## Member repositories
- dropseed/plain (main) score 75

## Provenance
- Observed fields: from GitHub, fetched 2026-09-03T02:15:11.404461+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T07:02:56.357975+00:00, confidence not recorded.
  - readme: https://github.com/dropseed/plain (fetched 2026-09-03T02:15:11.404461+00:00, sha d4b758ee7ac5)
  - homepage: https://plainframework.com (fetched 2026-08-29T13:04:33.062851+00:00, sha 62483ee6e92f)
  - site_page: https://plainframework.com/docs/plain/plain (fetched 2026-08-29T13:04:33.067588+00:00, sha 831d5943d302)
  - site_page: https://plainframework.com/docs/plain-postgres/plain/postgres (fetched 2026-08-29T13:04:33.069881+00:00, sha 356d69e6618b)
  - site_page: https://plainframework.com/docs (fetched 2026-08-29T13:04:33.065332+00:00, sha 006e6a996bc5)
  - site_page: https://plainframework.com/docs/plain-auth/plain/auth (fetched 2026-08-29T13:04:33.073607+00:00, sha fc55ad92aeed)
  - site_page: https://plainframework.com/docs/plain-sessions/plain/sessions (fetched 2026-08-29T13:04:33.075367+00:00, sha 6657826c1a12)
  - site_page: https://plainframework.com/docs/plain-api/plain/api (fetched 2026-08-29T13:04:33.077052+00:00, sha 2c2eb00230f6)
  - site_page: https://plainframework.com/docs/plain-mcp/plain/mcp (fetched 2026-08-29T13:04:33.079153+00:00, sha 248250087d6e)
  - site_page: https://plainframework.com/docs/plain-jobs/plain/jobs (fetched 2026-08-29T13:04:33.082529+00:00, sha 441cd0871631)
- Data as of 2026-08-30T08:39:29.467469+00:00.
