Container view — C4 containers
Purpose
Section titled “Purpose”This page adds a C4 container-style view: the major runnable/deployable pieces and how they depend on each other. Pair with System context (context diagram) and System overview (broader narrative).
- In scope:
leekimerpFrappe app, MariaDB, file storage, optional socket.io stack at repo root, external SaaS (Xero, Stripe, DocuSign, Singpass). - Out of scope: Internal structure of ERPNext/Frappe framework (treat as part of Frappe site unless you are patching core).
Container diagram
Section titled “Container diagram”Container notes
Section titled “Container notes”| Container | Role | Main code / config pointers |
|---|---|---|
| Frappe web | HTTP, Desk UI, session | Bench site, sites/ |
| Whitelisted API | JSON-RPC style methods | leekimerp/api/*.py, API inventory |
| Background workers | doc_events, schedulers, queues | leekimerp/hooks.py, Schedulers |
| MariaDB | Authoritative transactional data | Not in git; backup per runbook |
| File storage | Attachments, private files | Site private/files, public/files |
| Socket.io (optional) | Realtime UI updates | Root package.json / sockets/ — Socket.io realtime |
| External SaaS | OAuth, webhooks, payments | Integration pages under Integrations |
Relationship to other architecture pages
Section titled “Relationship to other architecture pages”| Page | Focus |
|---|---|
| System context | System-of-interest vs actors and external systems |
| System overview | Bounded contexts, upgrade risks |
| Request flow | HTTP path through Frappe |
| This page | Deployable containers and data stores |
Related
Section titled “Related”- Engineering deliverables — Threat model aligns with external integration containers
- Architecture decisions
- Critical paths (E2E)
- Environment matrix