The stack
Layered so each piece is swappable and no app is hostage to any single dependency.
Next.js (App Router) is the web layer — SSR and React Server Components for marketing pages, apps, and admin alike.
better-auth is the shared identity layer across every app and site. You own it, it's framework-agnostic, and it's backed by Postgres via Drizzle.
Postgres + Drizzle is the data you own — typed SQL with one database per app. Payload v3 rides the same Drizzle ORM for content-shaped products, so the data story stays consistent whether or not an app uses a CMS.
Stripe handles billing — checkout and webhooks land in a Drizzle table, so revenue is wired from day one.
@novalite/design-tokens is the shared look: semantic tokens and presets feed the same components, themed per app. Share the system, diverge the brand.