Data and state
PostgreSQL
The database we trust with orders.
Why we chose it
Commerce is a transactional problem before it is anything else. Postgres has the isolation guarantees, the operational track record and the recovery tooling that an order table needs, and it is the database Medusa itself is built against - so we are on the well-trodden path rather than an interesting one.
What it does here
Catalog, orders, customers and platform state, one database per tenant.
The rest of the stack
- MedusaJSThe commerce engine, and the one we run our own business on.
- KubernetesThe reason the platform exists at all.
- Proxmox VEOur own virtualisation, rather than a hyperscaler's abstraction.
- RedisCache, event bus, workflow engine and locks.
- Next.js and ReactStorefronts that render on the server, because commerce is public.
- TypeScript and Node.jsOne language across the storefront, the backend and the plugins.
- S3-compatible object storageMedia and backups that outlive the container holding them.
- Our own DNSAuthoritative nameservers we operate ourselves.
- GitLabSelf-hosted source, CI and registry.
- StripePayments, without holding card data ourselves.
Running something like this already?
Tell us what you operate today and what hurts about it. We will tell you what we would change.