LogShip ERP — Merchant-Edition Pod (Cell) Architecture
Fleet of capped pods · unified accounting WITHIN a pod · scale out by adding pods, never by growing one DB
Merchants (self-service)
self-register · {sub}.logship.de
Control plane — shared (NEW)
Tenant registry: merchant → pod / org
Signup router + org provisioning
Pod capacity meter
nginx — TLS termination + host → pod routing
{sub}.logship.de
lookup
Pod A · cap ~N merchants
Nuxt SSR — PM2 'erpfrontend-podA' :3001
.env URLV1 → iDempiere A
iDempiere A — REST API
Postgres A — 1 AD_Client
merchants = AD_Orgs · fact_acct unified
Read replica A
dashboards / BI (read-only)
stream
Pod B
Nuxt SSR — PM2 'erpfrontend-podB' :3002
.env URLV1 → iDempiere B
iDempiere B — REST API
Postgres B — 1 AD_Client
merchants = AD_Orgs · fact_acct unified
Pod C … add to scale out
spin up another
purged seed (Deliverable 1)
→ horizontal scale-out
Shared, stateless services
Strapi media (org-namespaced)
Elasticsearch (per-pod index prefix)
Import workers (rate-limited / merchant)
Sentry · Web Push
request / write path
async import · analytics · pod lookup
Pod = isolated per-customer stack (today’s purged seed, deployed once)
Control plane (shared)
Shared stateless