Proper

a Rails-shaped Python web framework

Last verified:

Visit Proper

What is Proper?

Proper is a Python‑based framework designed to help developers write web applications in a structured and opinionated way. It aims to reduce boilerplate and enforce consistent patterns for routing, configuration, and project layout, so teams can focus on business logic rather than scaffolding decisions. The framework provides a simple command to generate a new project, which lays out a ready‑to‑run directory structure and basic configuration, and it is built around modern Python tooling such as uv and uvx. It targets developers who want a lightweight, convention‑driven framework that sits between bare‑bones libraries and heavyweight full‑stack options, particularly for small to medium‑scale web services or APIs.

Key features include a single command to bootstrap a new Proper project, which automatically creates the file tree and basic configuration needed to start coding. The framework encourages a clean split between application logic and infrastructure code, promotes configuration‑as‑code, and is designed to integrate smoothly with Python’s wider ecosystem of packages and tools. It is oriented toward Python developers who value simplicity, low ceremony, and the ability to extend the framework without heavy magic, making it especially suitable for solo developers, small teams, or internal tools where maintainability and clarity matter more than complex batteries‑included features.

Proper is primarily aimed at Python web developers who want a sensible default structure for their applications without the bloat of large frameworks. It suits green‑field services, microservices, and internal tools where fast setup and straightforward maintenance are prioritized. Because it is still relatively new and minimal, it is a good fit for teams comfortable managing dependencies and tooling manually while benefiting from a curated starting template and opinionated layout.

Proper pricing

Pricing model: Freemium

The website does not list any paid plans or subscription tiers for Proper; it appears to be a free, open‑source framework with no commercial pricing or freemium model described.

Proper pros

  • Simple command to bootstrap a new project
  • Opinionated project structure reduces decisions
  • Designed specifically for writing web apps in Python
  • Encourages clean separation of application logic and infrastructure
  • Lightweight and low‑ceremony compared to full‑stack frameworks
  • Integrates with modern Python tooling like uv and uvx
  • Minimal boilerplate in generated projects
  • Straightforward for solo developers and small teams
  • Focuses on maintainability and code clarity
  • Promotes configuration‑as‑code patterns
  • Easy to extend without heavy framework magic
  • Good fit for green‑field services and microservices
  • Well‑suited for internal tools and APIs
  • Reduces repetition of common scaffolding tasks
  • Encourages consistent layout across projects within a team

Proper cons

  • Relatively new and less mature than established frameworks
  • Limited ecosystem of plugins and extensions
  • Smaller community and fewer tutorials
  • Less documentation depth than larger frameworks
  • Narrower feature set for advanced use cases
  • May require manual wiring for many integrations
  • Not as batteries‑included as Django or similar
  • Limited production case studies publicly available

Frequently asked questions about Proper

What kind of applications is Proper best suited for?

Proper is best suited for small to medium‑scale web applications, APIs, and internal tools where a clean, opinionated structure and low boilerplate are more important than a large built‑in feature set. It works well for microservices, green‑field services, and projects where developers want to manage dependencies and tooling manually while benefiting from a ready‑to‑run skeleton.

How do I start a new project with Proper?

To start a new project, you run a command such as uvx proper_new myapp, which generates a new project directory with the framework’s recommended layout and base configuration. After running this command, you can immediately begin adding routes and application logic in the generated files and run the project using standard Python tooling.

Does Proper require special hosting or runtime environments?

Proper does not require proprietary hosting and is designed to run wherever standard Python web applications can run, such as standard WSGI/ASGI servers or common cloud platforms that support Python runtimes. Developers can deploy it using their usual deployment patterns for Python services, with no special hosting vendor lock‑in.

How does Proper compare to Django or Flask?

Compared to Django, Proper is much lighter and less batteries‑included, focusing on project structure and opinionated scaffolding rather than a complete ORM, admin, and ecosystem. Compared to Flask, it provides more enforced conventions and a predefined layout, trading maximum flexibility for a more structured starting point suitable for teams that want consistency without heavy framework magic.

Is Proper suitable for large enterprise applications?

Proper can be used for parts of larger systems, but its minimal feature set and smaller ecosystem mean teams must implement many enterprise patterns—such as advanced authentication, complex data layers, or complex workflows—on top of the framework. It is more comfortable for smaller applications or internal tools than for highly complex, full‑stack enterprise products.

What is the philosophy behind Proper’s design?

The framework’s philosophy centers on writing web applications in a clear, maintainable way by enforcing a sensible default structure and reducing boilerplate. It prioritizes consistency, readability, and ease of onboarding for new developers over maximum flexibility or feature density, which makes it attractive for teams that value code clarity and long‑term maintainability.

Does Proper provide an ORM or database layer?

Proper does not appear to bundle a built‑in ORM or database layer; instead, it leaves data‑access choices to the developer, who can integrate preferred Python ORMs or database libraries. This keeps the framework lightweight and flexible but shifts the responsibility of data‑layer design to the project team.

How extensible is Proper for custom patterns?

Proper is designed to be extensible, allowing developers to add their own middleware, request/response handling, and integrations without heavy framework DSLs. Because it stays relatively thin, teams can plug in their preferred Python libraries and patterns while still benefiting from the framework’s opinionated project layout and bootstrapping.

Is Proper a good fit for learning Python web development?

Proper can be a good fit for learners who want to understand how to structure a Python web application with minimal hidden magic, since it exposes a clear project layout and straightforward configuration. However, learners may find larger communities and more learning resources around Django or Flask, which can make those frameworks easier to start with for absolute beginners.

How does Proper handle configuration and environment variables?

Proper promotes configuration‑as‑code and encourages managing settings through Python files and environment variables, aligning with common Python‑web patterns. The generated project structure is set up to keep configuration separate from business logic, making it easier to manage different environments such as development, testing, and production without hard‑coding sensitive values.

Use cases

Browse all AI tools on NeedAnAI