Repolode
dropseed

dropseed/plain

A Python web framework forked from Django, with typed models, class-based views, Postgres-only ORM, and built-in tooling for AI coding agents.

Open-source alternative to:Django

Stars
1,044
Forks
28
Open issues
16
Last commit
3 days ago

What is it?

Plain is a Python web framework for building web applications. It began as a fork of Django and has been reshaped around explicit, typed code. Models declare fields as annotated attributes, and those types carry through views, forms, and URL routing. Models only support Postgres, and the stack uses Jinja2 templates, htmx and Tailwind CSS on the frontend, and uv, ruff and ty for Python tooling.

The framework includes OpenTelemetry tracing and slow-query detection out of the box, so N+1 query problems can be spotted without extra setup. It also ships agent-oriented features: project rules files, a command-line docs browser with search and typed-signature views, and slash-command skills for installing packages, upgrading versions, optimizing performance and filing bug reports.

Plain is organized as 31 first-party packages covering auth, sessions, REST APIs, MCP servers, background jobs, email, caching, admin, feature flags, and OAuth or magic-link login. Requires Python 3.14+.

Key features

  • 01Models use annotated, typed fields that flow through views, forms and URLs.
  • 02Postgres-only ORM with constraints declared in model options.
  • 03Built-in OpenTelemetry tracing and slow-query detection.
  • 04Command-line docs with search and typed-signature output for agents.
  • 0531 first-party packages covering auth, jobs, APIs, admin and more.
  • 06Uses Jinja2 templates with htmx and Tailwind CSS on the frontend.

Use cases

  • Building server-rendered Postgres-backed web apps in Python.
  • Teams who want typed, explicit Django-style code maintained by a single framework.
  • Projects that want AI coding agents to work from typed signatures and built-in docs.
  • Apps needing background jobs, email, and OAuth login from one ecosystem.

Quick start

  1. 1

    Start a project with uv

    uvx plain-start my-app
  2. 2

    Follow the full walkthrough on the official site

Things to know

  • Models are Postgres-only, so you need a PostgreSQL database.
  • Requires Python 3.14 or newer.
  • No license is listed in the project metadata, so usage rights are unclear.

In collections

Topics

FAQ

What is plain?
A Python web framework forked from Django, with typed models, class-based views, Postgres-only ORM, and built-in tooling for AI coding agents. Plain is a Python web framework for building web applications. It began as a fork of Django and has been reshaped around explicit, typed code. Models declare fields as annotated attributes, and those types carry through views, forms, and URL routing. Models only support Postgres, and the stack uses Jinja2 templates, htmx and Tailwind CSS on the frontend, and uv, ruff and ty for Python tooling.
Is plain free to use? What license does it have?
plain has no declared license. Its code is public, but without a license you have no explicit permission to reuse it; ask the author before relying on it.
Is plain still maintained?
Actively maintained. The last commit to plain was on Oct 20, 2026.
What can I use plain for?
Building server-rendered Postgres-backed web apps in Python. Teams who want typed, explicit Django-style code maintained by a single framework. Projects that want AI coding agents to work from typed signatures and built-in docs. Apps needing background jobs, email, and OAuth login from one ecosystem.
How do I install plain?
Start a project with uv: uvx plain-start my-app Follow the full walkthrough on the official site
Where can I get plain?
The source code and installation instructions are on GitHub: https://github.com/dropseed/plain

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects