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:
- No Bench: We use standard Python tooling (
pip,venv,pyproject.toml). - Single Tenant: One application = One Database. Configuration happens in
.env, not in acommon_site_config.jsonburied three folders deep. - 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)
| File | Size | Uploaded | |
|---|---|---|---|
| monoframe-0.0.1.tar.gz | 10.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|