Documentation
Public Role and Feature Matrix
This page serves as the primary documentation for now. Use the matrix below to quickly compare available features by role. Rows marked Planned are product direction and are not implemented in this frontend yet.
Authentication and API contract
Sign-in uses Auth0 SPA Authorization Code + PKCE against the Auth0 custom domain. The SPA requests an Auth0 API audience access token and calls the backend with Authorization: Bearer. There is no first-party password form and no CSRF / Django session exchange for the current contract.
API traffic uses stable /api/... paths and negotiates version 2026-08-01 via the Accept-Version header. The app loads the live contract from GET /openapi.json with the same version header. Bootstrap after login uses GET /api/me/context and GET /api/entitlements/me.
Journeys
Practitioners use one Journeys destination with Current, Available, and History sections under /journeys.
- Free and gym-licensed practitioners can view active journeys, browse eligible definitions, and adopt journeys. Progress is calculated by the backend from training activity — the UI never patches goal progress.
- Premium Individual practitioners can create and edit personal journeys at
/journeys/newand/journeys/[journeyId]/edit. - Legacy
/goalsand/journey-templatesroutes redirect into the Journeys section.
Gym announcements and calendar
Authenticated members with gym access see a single Gym destination in the shell with Announcements and Calendar tabs. Routes are gym-scoped under /gyms/[gymId]/....
- Members read published announcements and upcoming events. Staff with verified capabilities can create drafts, publish (with explicit confirmation), archive history, and manage calendar events.
- Publishing makes content visible to members and triggers backend email delivery; the UI may show aggregate delivery warnings without recipient addresses. Saving or cancelling an event does not email members.
- Event schedules display in each event's IANA timezone. Calendar ranges use inclusive
fromand exclusivetoquery parameters. - Deferred: unread/read markers, mark-read actions, retry/resend delivery, and recipient selection — not exposed by the current API contract.
| Feature | Free Practitioner | Subscribed Individual | Gym Member | Gym Instructor | Gym Owner |
|---|---|---|---|---|---|
| Create account | Yes | Yes | Yes | Yes | Yes |
| Log sessions | Yes | Yes | Yes | Yes | Yes |
| Record submissions | Yes | Yes | Yes | Yes | Yes |
| View basic reports | Yes | Yes | Yes | Yes | Yes |
| Access default/basic journey | Yes | Yes | Yes | Yes | Yes |
| Adopt eligible journeys | Yes | Yes | Yes | Yes | Yes |
| Create custom personal journeys | No | Yes | Yes* | Yes | Yes |
| Authoritative journey progress (no manual goal edits) | Yes | Yes | Yes | Yes | Yes |
| View advanced/premium reports | No | Yes | Yes* | Yes | Yes |
| Access gym-specific techniques | No | No | Yes | Yes | Yes |
| Access gym community/forum | — | — | Planned | Planned | Planned |
| View gym calendar/events | — | — | Yes | Yes | Yes |
| Receive gym notifications | — | — | Yes | Yes | Yes |
| Opt out of gym notifications | — | — | Planned | Planned | Planned |
| Send gym-wide notifications | — | — | — | Yes* | Yes* |
| Manage gym journeys | — | — | — | Planned | Yes* |
| Assign/remove gym licenses | — | — | — | Planned | Yes* |
| Manage technique visibility settings | — | — | — | Planned | Planned |
| Delegate instructor permissions | — | — | — | — | Planned |
| Manage gym billing | — | — | — | — | Yes* |
| Cancel gym subscription | — | — | — | — | Yes* |
Yes* = available when the gym member has an active assigned gym license/plan, or when gym-owner admin surfaces are enabled for that account.
Planned = described in platform vision/domain docs but not shipped in this Next.js client (for example competitions and full instructor delegation).
This matrix is current public guidance and may evolve as features ship. UI gates follow buildCapabilities.