Skip to main content

Monoframe

The Frappe Framework, Distilled.

Monoframe is a lightweight, single-tenant web framework for Python. It takes the powerful metadata-driven engine of Frappe and strips away the multi-tenancy, the "Bench" tool, and the complex deployment architecture.

It is Frappe for developers who want to build one solid application, not manage a hosting platform.


Why Monoframe?

The original Frappe Framework is an engineering marvel, but it was built to run an ERP ecosystem (ERPNext) with hundreds of sites on a single server. This architectural decision brings massive complexity:

  • Bloat: A standard install can weigh over 1.8GB.
  • Complexity: Requires a custom CLI tool (bench) just to manage processes.
  • Obscurity: Database connections rely on HTTP host headers and folder lookups.

Monoframe changes the philosophy:

  1. No Bench: We use standard Python tooling (pip, venv, pyproject.toml).
  2. Single Tenant: One application = One Database. Configuration happens in .env, not in a common_site_config.json buried three folders deep.
  3. Lightweight: We stripped the "platform" code to focus on the "application" code.

Comparison

Feature Original Frappe Monoframe
Architecture Multi-Tenant (Sites) Monolithic (Single App)
Process Manager bench (Custom) Standard Python / ASGI
Config JSON files in /sites .env file
Dependency Mgmt apps.txt + bench get-app requirements.txt / poetry
Footprint Heavy (~1.8GB) Light (Goal: <200MB)
DX "The Frappe Way" Standard Python Way

Quick Start

(Note: Monoframe is currently in active development. These commands are the target DX.)

1. Installation

Monoframe is a standard Python package. You don't need to install a system-wide CLI tool first.

pip install monoframe

2. Create a Project

Generate a clean, flat project structure. No apps folder, no sites folder.

monoframe new my_cool_app
cd my_cool_app

3. Run Development Server

Connects to the DB specified in your .env and starts the server.

monoframe start
# Server running at http://localhost:8000

📂 Project Structure

Monoframe simplifies the directory hierarchy significantly.

Before (Frappe Bench):

frappe-bench/
├── apps/
│   ├── frappe/
│   └── my_app/
├── sites/
│   ├── assets/
│   ├── site1.local/
│   └── common_site_config.json
└── config/

After (Monoframe):

my_cool_app/
├── .env                # Database credentials
├── main.py             # Entry point
├── pyproject.toml      # Dependencies
└── src/
    └── doctypes/       # Your data models
    └── api/            # Your API endpoints

🛠 Roadmap

  • Phase 1: Extraction. Successfully run the Frappe ORM and Desk without bench.
  • Phase 2: Cleanup. Remove multi-tenancy code (frappe.init(site=...)) and site-based routing.
  • Phase 3: Typing. Add Type Hints to core functions for better VS Code autocompletion.
  • Phase 4: Diet. Remove heavy dependencies (PDF generation, Pandas) and make them optional extras.

❤️ Credits

Monoframe is a hard fork of Frappe. We owe everything to the genius of the Frappe team. We aren't trying to replace them; we are offering an alternative path for specific use cases.

License

MIT

Metadata

Release files for monoframe 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for monoframe 0.0.1
File Size Uploaded
monoframe-0.0.1.tar.gz 10.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for monoframe 0.0.1
File Interpreter ABI Platform
monoframe-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 21.2 MB

Release files / monoframe-0.0.1.tar.gz

Download URL monoframe-0.0.1.tar.gz
Size 10.4 MB
Tags Source
SHA-256 checksum
How to use checksums
9fa444757e71efd5bdadc1304a13ad1b8aa786b132e67f832c34517aef5a4cc7
BLAKE2b-256 checksum
How to use checksums
731837b60fc280a6608f7d703f43ef8117adb2ef3444c93100edc2dd3a97a065
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.22

Release files / monoframe-0.0.1-py3-none-any.whl

Download URL monoframe-0.0.1-py3-none-any.whl
Size 10.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
192e1430290ba868e515186a1e21bbdc7190a66fffbfaf35d5296bfca83a70ca
BLAKE2b-256 checksum
How to use checksums
5236ad32ee4cac3124252c1ecb8350c1762dc4fcbfc7c194ceac3e4bdca9ce5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.22

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page