Modules
A module is a product area composed from implemented capabilities. Module state answers two separate questions:
- Is the module ready in this application?
- Has the workspace enabled it?
The effective app status is:
ready + enabled → enabled
ready + disabled → disabled
not ready → unavailableApp readiness is a code-owned release flag in
packages/domain/src/modules/catalog.ts. Workspace enablement is a persisted
boolean setting. A setting cannot make an app with incomplete behavior ready.
GET /v1/modules returns the effective matrix for authenticated workspace and
patient sessions. Apps use it to hide navigation, actions, data fetching, and
direct routes. Module-owned API routes enforce the same workspace setting.
Scheduling
Scheduling uses modules.scheduling.enabled and defaults on when no setting has
been persisted. It includes appointments, practitioners, availability, and
booking.
| Application | Ready |
|---|---|
| API | Yes |
| Dawn | Yes |
| Dawn actions | Yes |
| Patient app | No |
The patient app remains unavailable because its booking flow is not yet supported by the patient access boundary. Its Scheduling UI stays hidden until that behavior is implemented and the app readiness flag is changed.