Architecture
Nine production systems with clear boundaries, one default provider per category, and documented swap paths. Built for scaling and replaceability — no hidden coupling, no lock-in.
Default stack
We ship one recommended default per system so you get a working, production-ready setup out of the box. Each is behind an interface so you can swap when your needs or compliance require it.
- Identity & Access: Better Auth — sessions, RBAC, workspace and team management
- Revenue & Billing: Dodo Payments — subscriptions, metered usage, ledger, webhooks
- Notification Delivery: Resend for email; abstracted SMS and in-app
- Workflow Engine: Trigger.dev — background jobs, retries, idempotency, dashboard
- Observability & Monitoring: PostHog for product analytics, Sentry for errors and performance
- Marketing and SEO: FumaDocs — docs and blog from MD/MDX
- Media Storage: ImageKit — upload, storage, delivery, optional transforms
- Testing: Playwright E2E — auth, billing, tenant isolation coverage
- Operational Safety Layer: Feature flags, circuit breakers, runbooks, impersonation, audit log
System diagram
How the nine production systems relate. Data flows and APIs are defined at boundaries; each box can be scaled or replaced independently.
Nine production systems. Each box is a clear boundary with a documented swap path.
Boundaries
Each system exposes a well-defined API and owns its data. Cross-system calls go through these boundaries — no hidden coupling. You can reason about failure domains, scale hot paths (e.g. workflow workers or notification senders), and replace one system without rewriting the rest.
- Identity: sessions, roles, tenant context, usage tracking for billing
- Billing: state machine, subscriptions, usage, ledger, grace periods, threshold alerts
- Notifications: email, SMS, in-app; templates, delivery state, preferences
- Workflows: job queue, retries, dead-letter, idempotency
- Observability: logs, metrics, traces; PostHog and Sentry correlated by user/session
- Marketing and SEO: docs, blog, landing pages, meta and sitemap
- Media: upload, storage, delivery, tenant-scoped paths
- Testing: E2E, billing and isolation tests, mocking patterns
- Operational safety: kill switches, circuit breakers, runbooks, impersonation, audit, export and deletion
Scaling strategy
We scale by system. Stateless APIs scale horizontally; queues and workers (e.g. Trigger.dev) scale by throughput. Database access is scoped per tenant so multi-tenancy stays safe. The architecture avoids single bottlenecks and allows you to scale what's hot (e.g. workflow workers or notification senders) without rewriting the rest.
Replaceability and removal strategy
Every system is built so it can be swapped or removed without taking down the rest. Boundaries are contracts: implement the same interface elsewhere and you can migrate. We document removal and migration paths so you're not locked in — and so you can evolve one system at a time.