Frappe started as the Python framework underneath ERPNext and grew into a full open-source suite โ HR, CRM, helpdesk, learning, BI, knowledge, drive, chat, and a hosted layer of its own. Every app is built the same way: declare a "doctype" once, and you get a database table, a list view, a form, a REST endpoint, and an RPC surface for free. This hub is the map.
Five bands โ foundation, ERP & finance, people & CX, knowledge & collaboration, and builders & hosting. Each card maps to a leaf in tech/frappe/*. The framework is the only one with a full explainer today; the rest land in sequence.
The flagship app โ the open-source ERP that Frappe was originally built to support. Manufacturing, stock, sales, purchasing, accounting, projects. Lives in the biz/erp branch of the tree because it's a system of record, not a framework.
Free desktop accounting for small businesses. Single-user, offline-first, built on Electron โ the answer when ERPNext is too much and a spreadsheet is too little.
HRMS โ employees, payroll, leave, attendance, expense claims, performance, recruitment. Spun out of ERPNext as a standalone app in 2023 so HR teams don't need the manufacturing baggage.
Lead-to-deal pipeline, kanban boards, email integration, call logs. The 2024 rebuild โ Vue 3 frontend on the Frappe backend. Distinct from the older ERPNext CRM module.
Ticket management with SLAs, escalations, customer portal, knowledge base, and email-to-ticket. Built to pair with Frappe CRM but stands alone.
Open-source learning management โ courses, lessons, quizzes, batches, certificates. The platform Frappe School itself runs on.
Markdown-first internal knowledge base. Versioning, sidebar navigation, search, and the same role permissions every other Frappe app uses.
Self-hosted cloud file storage with sharing, previews, and folder ACLs. The Google Drive replacement for orgs that want files inside their own infra.
Slack-style team chat โ channels, threads, reactions, file uploads, bots. Talks to the rest of the Frappe stack natively, so a CRM event can become a chat message in one hook.
Visual website builder โ drag pages onto a canvas, bind to Frappe doctypes, publish. The no-code surface for marketing pages and customer portals on top of an existing Frappe site.
Visual print format editor. Lay out invoices, quotations, and statements without writing Jinja โ replaces the old code-based print formats with a WYSIWYG canvas.
The official managed hosting layer. Bench instances, automated backups, app marketplace, custom domains, regional sites. The fastest way to run any of the apps above without standing up your own infra.
Thirteen apps could look like thirteen different codebases. They don't, because every one of them is built on the same primitive: the doctype. Define a doctype in JSON, and you get a database table, a list view, a form, validation, role permissions, audit trails, REST, RPC, full-text search, and webhook hooks โ all without writing a controller, a route, or an SQL migration.
A doctype is the unit of everything in Frappe. It's metadata: a JSON file that declares fields, links, child tables, permissions, and naming rules. The framework reads that metadata at runtime and synthesises the rest. That's why ERPNext, CRM, Helpdesk, and LMS share the same look, the same auth, and the same API shape โ they're all doctypes on the same engine.
# A minimal doctype JSON โ Frappe synthesises the rest { "doctype": "DocType", "name": "Customer Visit", "module": "CRM", "naming_rule": "By \"Naming Series\" field", "autoname": "naming_series:", "fields": [ { "fieldname": "customer", "fieldtype": "Link", "options": "Customer", "reqd": 1 }, { "fieldname": "visit_date", "fieldtype": "Date", "reqd": 1 }, { "fieldname": "notes", "fieldtype": "Long Text" }, { "fieldname": "items", "fieldtype": "Table", "options": "Visit Item" } ], "permissions": [ { "role": "Sales User", "read": 1, "write": 1, "create": 1 } ] }
From that one file you immediately get /api/resource/Customer Visit for CRUD, a list view at /app/customer-visit, role-checked permissions, the right Postgres columns, child-table editing inline, and a hookable on_submit server event. This is the same mechanism every app in this hub uses โ learn it once and the whole ecosystem opens.
Frappe is unusual in the tree โ it sits in tech/ as a framework, but its flagship app (ERPNext) lives in biz/erp/. Think of tech/frappe/framework as the substrate and the business apps as instances of it. The integration patterns you learn here apply to every Frappe-built system you'll meet downstream.