Skip to content
FormaBaseFormaBase home
T-02 · ArchitectureIn progress

One Core. Many products.

FormaBase is a modular monolith, the Core, that owns identity, money and attribution. Every product is a thin satellite that calls the Core through one SDK and never holds a platform secret.

Products sit on top and reach the Core only through the SDK. The portal and this site are part of the Core codebase. Vendor keys sit underneath, visible to the Core alone.

Products · each in its own repo, project and database

product-one

Own database

product-two

Own database

product-three

Own database

portal + site

Part of the Core

The Core

One codebase · one database · nine modules

Identity

One sign-in

Agreements

Versioned terms

Catalog

Products, prices

Billing

Subscriptions

Attribution

Links, codes

Ledger

Append-only

Payouts

Statements

Messaging

Email, SMS

Support

First line

Vendor accounts
StripeNeonResendTwilioClaude APISentryPostHog
Products connect to the FormaBase Core only through the SDK with a product-scoped key. The Core contains nine modules: identity, agreements, catalog, billing, attribution, ledger, payouts, messaging and support. Only the Core holds vendor keys for Stripe, Neon, Resend, Twilio, the Claude API, Sentry and PostHog.

These decisions are fixed early because each is expensive to reverse once products exist. Together they keep money and identity in one system of record, limit what any single product can reach, and let FormaBase keep running a product without depending on any one person.

  1. 01

    One Core, many satellites

    The Core is a single codebase and a single database. Products contain only their own features and their own data.

  2. 02

    Separate code, separate access

    The Core lives in the platform repository. Every product has its own repository, so a Creator can only ever see the product they build.

  3. 03

    Versioned shared code

    The brand kit and SDK are published as versioned packages. Products pin a version, so improvements apply going forward and never break a live product.

  4. 04

    Two data tiers

    The Core database is the only system of record for people, customers, subscriptions, attribution, agreements and money. Each product has an isolated database for its own features, and cannot connect to the Core database.

  5. 05

    One doorway

    Products reach the Core only through the Core API, with a key scoped to that one product.

  6. 06

    One identity

    One sign-in service for every participant and every customer. A customer has one FormaBase account across all products.

  7. 07

    One payment account

    Every product is a Stripe product tagged with its product ID, behind one webhook endpoint on the Core. Products never see a payment key.

  8. 08

    Central attribution

    Every Affiliate link goes through one redirect service that records the click. No product implements its own tracking.

  9. 09

    Secrets stay in the Core

    Payment, email, messaging and AI keys exist only in the Core. A product holds two secrets: its own Core key and its own database address.

  10. 10

    One product ID everywhere

    A single slug names a product's repository, deployment, database, payment metadata, monitoring tag, analytics property and subdomain.

The Core is one deployable application divided into modules. Each module owns its own tables and exposes functions; other modules call those functions and never query another module's tables directly. That keeps the Core simple to run today, with clean seams if a module ever needs to stand on its own.

ModuleResponsible for
IdentityAccounts, sign-in, two-factor, roles and Creator verification results
AgreementsVersioned agreements, acceptances and product addenda
CatalogProducts, statuses, prices and assets
BillingCheckout, subscriptions, refunds and payment events
AttributionAffiliate links, promo codes, clicks and customer attribution
LedgerAppend-only money entries in integer cents
PayoutsPayee onboarding, payout batches and statements
MessagingTransactional email and messages
SupportCustomer support and escalation to operations
AddressServesStatus
formabase.appThis siteLive
portal.formabase.appThe portal for Creators, Affiliates and operationsIn progress
api.formabase.appThe Core API, payment webhooks and background jobsIn progress
accounts.formabase.appSign-in for participants and customersIn progress
go.formabase.appAffiliate link redirects and click captureIn progress
product.formabase.appEach product, by default; custom domains can be addedPlanned

There are three environments: local development, a preview for every proposed change, and production. Every change is a pull request with its own preview deployment and automated checks; only reviewed changes reach production. Database changes are forward-only migrations, committed alongside the code that needs them.

LayerChoiceStatus
FrameworkNext.js (App Router), React, TypeScript in strict modeLive
InterfaceTailwind CSS, Radix primitives, Motion, the FormaBase design systemLive
Hosting and deliveryVercel, with a preview deployment for every changeLive
Source and checksGitHub, with automated checks on every pull requestLive
DatabaseNeon Postgres with Drizzle ORM and committed migrationsIn progress
Sign-inBetter Auth, with accounts in FormaBase's own databaseIn progress
Payments and payoutsStripe, and Stripe Connect Express for payoutsIn progress
EmailResend, from a dedicated sending domainIn progress
Monitoring and analyticsSentry and PostHog, tagged by productPlanned