Skip to main content

Access Control Model

Access control in the starter is layered on purpose.

The buyer-level takeaway is that the repo does not force you into a single blunt role model.

The Layers

Roles

Organization roles provide the baseline staff model.

Permissions

Fine-grained permission keys let the product express more specific actions than broad tenant roles alone.

Capabilities

Capabilities gate larger product areas such as billing, webhooks, or API keys.

Why This Matters

Many starters collapse access control into a small role enum and then become hard to extend. This starter already separates tenant roles, detailed permissions, and feature-area gating.

That gives buyers a more realistic growth path when the product moves past simple owner-versus-member logic.

Enforcement Boundary

Backend enforcement is the source of truth. UI gating exists for navigation and UX, not as the real security layer.