Skip to content

Container view — C4 containers

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: leekimerp Frappe 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).

Optional — repo root

Data

Frappe / ERPNext site

People & systems

realtime channel

optional

Browser / Desk users

API clients / SPAs

Xero / Stripe / DocuSign / Singpass

Frappe web + Gunicorn / Werkzeug

Background workers / scheduler

Whitelisted API layer

leekimerp.api

MariaDB

File storage

attachments

Node socket.io service

if deployed

ContainerRoleMain code / config pointers
Frappe webHTTP, Desk UI, sessionBench site, sites/
Whitelisted APIJSON-RPC style methodsleekimerp/api/*.py, API inventory
Background workersdoc_events, schedulers, queuesleekimerp/hooks.py, Schedulers
MariaDBAuthoritative transactional dataNot in git; backup per runbook
File storageAttachments, private filesSite private/files, public/files
Socket.io (optional)Realtime UI updatesRoot package.json / sockets/Socket.io realtime
External SaaSOAuth, webhooks, paymentsIntegration pages under Integrations
PageFocus
System contextSystem-of-interest vs actors and external systems
System overviewBounded contexts, upgrade risks
Request flowHTTP path through Frappe
This pageDeployable containers and data stores