Application
TypeScript and Node.js
One language across the storefront, the backend and the plugins.
Why we chose it
The alternative is a translation layer at every boundary, and translation layers are where the defects live. One language means a type defined in a plugin is the same type the storefront receives.
What it does here
Backend modules, workflows, plugins, migration scripts and storefront alike.
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.
- PostgreSQLThe database we trust with orders.
- RedisCache, event bus, workflow engine and locks.
- Next.js and ReactStorefronts that render on the server, because commerce is public.
- 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.