Back to blog
ArchitectureMarch 10, 20267 min read

One account, many products

The right split for OinkSky is shared identity with product-specific data. That keeps the account layer unified without mixing every table together.

Section 01#

The account pool should stay shared

Users should not have to create a different account for every product in the same company family. That introduces friction immediately and creates avoidable reconciliation work later.

For OinkSky, the cleanest option is one shared auth truth across products, with product-specific membership and workspace logic layered on top.

A diagram of shared identity infrastructure kept separate from product-domain data.
Section 02#

Where separation should happen

Identity tables, membership, credit ledger, and product definitions belong in a shared layer. Product domain data should remain separate so each product can evolve without polluting the other.

In practice, that means keeping account and billing logic central while leaving decks, slides, runs, documents, or presentation state inside the product domain.

  • Shared: users, sessions, memberships, products, credits.
  • Separate: product workspace data and feature-specific execution tables.
  • Linked: entitlements and usage events back into the shared layer.
Further note

Separate product domain data where the workflows diverge.

Further note

Accept separate login sessions across different top-level domains when necessary.

Section 03#

Cookies are not the same as account truth

Different domains can share account data in the backend, but they cannot magically share one browser cookie session across unrelated top-level domains.

That is acceptable. The important thing is unified identity, not pretending the browser's cookie model works differently than it does.

Related reading