Athas Boilerplate

Module Profiles

shared

Composition strategy for removable modules.

This page defines the profile model used to compose module sets without breaking contracts or frontend/backend boundaries.

Profiles

ProfilePurposeImplies
coreBase starter: auth/session/users + client profile/settings + baseline notifications-
commerceBilling/purchase capabilities and provider integrationscore
rbacRoles, permissions, and role assignment operationscore
notificationsNotification center and provider-backed deliverycore
walletPass and wallet workflowscore, notifications
observabilityTelemetry/OTLP runtime instrumentation and provider routingcore

Soft-disable vs hard-remove

  • Soft-disable: feature remains installed, routes/UI/API are hidden or gated via env flags.
  • Hard-remove: feature code is not wired/imported in build graph for a selected project profile.

Resolve profile flags

Use the profile resolver to generate backend/admin/client env flags from the selected profile set:

# Show all env sections
bun run profiles:resolve --profiles core,commerce,rbac

# Backend-only output
bun run profiles:resolve --profiles core,notifications --target backend

# JSON for automation
bun run profiles:resolve --profiles core,wallet --format json

Integrity validation

bun run check:module-profiles

This verifies profile keys, dependencies, and expected module flag shapes.

Generate profile bundles for starter variants:

bun run scaffold:profile --profiles core,commerce --name commerce-starter

For permanent module removal rules, see /docs/hard-remove-workflow.

Current state

  • Soft-disable is implemented.
  • Profile model tooling is implemented.
  • Observability hard-remove automation is available via bun run profiles:hard-remove.
  • Additional module hard-remove automation remains in progress.

On this page