This wiki documents Cluster ERP as the code implements it. It is the entry point for users, administrators, developers, and operators, and it links to every section. It does not repeat the content of the sections; each section index lists its own pages.
What Cluster ERP is¶
Cluster ERP is a modular enterprise resource planning system. The server is a FastAPI application built by create_app (src/cluster_erp/server/app.py:1287-1296) that stores its data in PostgreSQL through the asyncpg driver (src/cluster_erp/config/settings.py:841). Its business logic lives in 28 backend modules, counted as the 28 classes that subclass ModuleBase in src/cluster_erp/modules/*/module.py. The project's written engineering rules require modules to talk to each other only through the EventBus. Users work in a metadata-driven web app in webapp/, which the server serves at /app (src/cluster_erp/server/app.py:1633-1644), or in a PySide6 desktop client in src/cluster_erp/desktop/ (src/cluster_erp/desktop/main.py:139). Both clients build their screens from the metadata document that the server publishes at /api/v1/_meta (src/cluster_erp/server/app.py:1518, src/cluster_erp/desktop/core/metadata_store.py:13), and both call the same HTTP API.
Sections¶
| Section | What it covers | Start page |
|---|---|---|
| Overview | What Cluster ERP is, the architecture at a glance, and the repository layout | Overview |
| Platform core | The backend core: server start-up, module lifecycle, EventBus, contracts, settings, database, ids, money, change history, and shared services | Platform core |
| Identity, access, tenancy, privacy, and licensing | Sign-in, roles and permissions, attribute policies, field and row access, approvals, tenants, signup, data-subject requests, licensing, and the operator console | Identity, access, tenancy, privacy, and licensing |
| Web app platform | The metadata-driven browser client in webapp/ and the server routes it relies on |
Web app platform |
| Desktop client | The PySide6 client in src/cluster_erp/desktop/ and how it renders server metadata |
Desktop client |
| Business modules | One page or folder per backend module, from parties to analytics | Business modules |
| API reference | Conventions, authentication, errors, system and shared routes, and one page per backend module | API reference |
| Operations | Environments, node installation, configuration, migrations, backups, tenants, and release | Operations |
| Contributing | The engineering rules, quality gates, tests, the e2e battery, developer scripts, and writing wiki pages | Contributing |
| Decision records | The binding design rules and the code that enforces each | Decision records |
| Reference | The glossary and the list of related material outside the wiki | Reference |
| Intent assistant | The built-in assistant that maps typed requests to API actions | Intent assistant |
How to read this wiki¶
Each page has one type: a tutorial teaches by doing, a how-to guide completes one task, a reference page lists facts, an explanation describes how and why a part works, a module page gives an overview of one backend module, an API page lists the endpoints of one router group, and an index page lists the pages of a section. Every statement about behaviour cites the code that shows it, as a path and line range such as src/cluster_erp/core/module_base.py:62. The text "Not determined from code." marks a question that the code does not answer. A warning that starts with "Discrepancy." records a place where the code and the project's written engineering rules differ; it describes both sides and decides nothing. Every English page name.md has a Turkish twin name.tr.md in the same folder with the same structure, and the language switch moves between them. The last line of each page names the commit and the date that the page was checked against.
Related pages¶
Verified against commit 92f8051 on 2026-11-13.