Skip to content
DBML templates

SaaS core schema (users, orgs, plans)

Multi-tenant SaaS skeleton — organisations, users, plans, subscriptions, audit log. Ref shorthand `>` for many-to-one.

Template previewDBML
saas_corePostgreSQLorganisations.plan_id > plans.idusers.org_id > organisations.idsubscriptions.org_id > organisations.idsubscriptions.plan_id > plans.idaudit_log.org_id > organisations.idaudit_log.actor_id > users.idorganisationsiduuidnamevarcharplan_iduuidcreated_attimestampusersiduuidorg_iduuidemailvarcharrolevarcharcreated_attimestampplansiduuidnamevarcharseatsintmonthly_price_centsintsubscriptionsiduuidorg_iduuidplan_iduuidstatusvarcharcurrent_period_endtimestampaudit_logidbigserialorg_iduuidactor_iduuidactionvarcharpayloadjsonbattimestamp

Make it your own.

Project saas_core {
  database_type: 'PostgreSQL'
}

Table organisations {
  id uuid [pk]
  name varchar [not null]
  plan_id uuid [ref: > plans.id]
  created_at timestamp
}

Table users {
  id uuid [pk]
  org_id uuid [ref: > organisations.id]
  email varchar [unique, not null]
  role varchar [note: 'owner | admin | member']
  created_at timestamp
}

Table plans {
  id uuid [pk]
  name varchar
  seats int
  monthly_price_cents int
}

Table subscriptions {
  id uuid [pk]
  org_id uuid [ref: > organisations.id]
  plan_id uuid [ref: > plans.id]
  status varchar
  current_period_end timestamp
}

Table audit_log {
  id bigserial [pk]
  org_id uuid [ref: > organisations.id]
  actor_id uuid [ref: > users.id]
  action varchar
  payload jsonb
  at timestamp
}