Authentication & Accountsv0.1.0
User accounts, sessions, roles and password resets.
FE:3BE:11API:36i18n:4
Directory (Tenants & Organizations)v0.1.0
Multi-tenant directory with tenants and organizations.
BE:7API:13i18n:4
Configurationv0.1.0
Shared configuration storage and helpers for module settings.
BE:3API:8i18n:4
Custom Entities & Fieldsv0.1.0
User-defined entities, custom fields, and dynamic records storage.
BE:9API:19i18n:4
Query Indexesv0.1.0
Hybrid query layer with full-text and vector search capabilities.
BE:1API:3i18n:4
API Documentation
Auto-generated documentation for all HTTP endpoints.
FE:1BE:1API:1
Audit & Action Logsv0.1.0
Tracks user actions and data accesses with undo support scaffolding.
BE:1API:5i18n:4
Notificationsv0.1.0
In-app notifications with module-extensible types and actions.
BE:1API:13i18n:4
Admin Dashboardsv0.1.0
Configurable admin dashboard with module-provided widgets.
API:10i18n:4
Events
Event bus and subscriber dispatch
API:2
Attachmentsv0.1.0
File attachments and media management.
BE:2API:14i18n:4
Customer Identity & Portal Authenticationv0.1.0
Customer-facing authentication with two-tier identity model and full RBAC.
BE:7API:50i18n:4
Customer Portalv0.1.0
Self-service customer portal framework with login, signup, dashboard, sidebar navigation, and extensible widget system.
FE:7i18n:4
Feature Togglesv0.1.0
Global feature flags with tenant-level overrides.
BE:5API:12i18n:4
Clubsv0.1.0
Club-as-tenant layer: club settings, the club_admin role, and operator club provisioning. Teams and team-scoped domain arrive in a later slice.
BE:5API:18i18n:1
Teamsv0.1.0
Team-as-container-with-staff layer: teams as directory orgs with sport/age-group profiles, per-team coach/coordinator assignments, and the invite-vs-assign onboarding split. Players and rosters arrive in a later slice.
BE:3API:7i18n:1
Playersv0.1.0
The persistent player-identity layer: coach-managed profiles with encrypted personal data, derived minor status, anonymized departure archival, and request-only deletion. Rosters, guests, and player accounts arrive in later slices.
API:6i18n:1
Rostersv0.1.0
The team↔player membership layer: per-team roster attributes, retained membership history, within-club transfers with an optional transition window, and the in-club guest-candidate picker. Cross-club transfers and the event editor arrive in later slices.
BE:1API:10i18n:1
Sessions and matchesv0.1.0
The training-session / match event occurrence (PRD 5.3.1): per-team scheduling with match detail, weekly recurring trainings materialized as rows, cancellation-is-not-deletion with the workload-exclusion contract, and the single-match delegated coach. The calendar grid, notifications, sync, results, and reservations are later slices.
BE:1API:12i18n:1
Attendance trackingv0.1.0
Coach-recorded attendance per session/match (PRD 5.4.1): one record per player per session over the session team's roster at session time, attached to the persistent player profile, with an encrypted absence reason, one-off in-club guest participants with per-event home-team consent, and phase-2 self-report fields present but unused. Workload/fatigue/reporting reads are later slices.
BE:1API:10i18n:1
Match data entryv0.1.0
Coach-entered post-match protocol (PRD 5.5.1): one stat line per player per match (goals, assists, cards, minutes played, a derived match role) over the match team's roster plus guests, and a shared per-match timeline of minute-stamped goals and substitutions that live tagging pre-fills. Attached to the persistent player profile; matches only; derived statistics are a later slice.
BE:1API:9i18n:1
Health monitoringv0.1.0
Coach-entered periodic health checks with a mandatory encrypted test-result file, fitness/PHV/somatic measurement series, derived expiry highlighting, and the expired/expiring compliance list. Player/guardian entry, the medical-staff role, and expiry reminders arrive in later slices.
BE:1API:8i18n:1
Cross-club transfersv0.1.0
The single sanctioned exception to per-club isolation: a two-party, consent-gated inter-club transfer agreement (mirrored per tenant), a single-record time-boxed scoped read grant, and the secure decrypt-under-source / re-encrypt-under-destination handover of one player profile. Admin-only on both sides, fully audited.
BE:1API:8i18n:1
Calendar and schedulingv0.1.0
The calendar layer over the sessions occurrence (PRD 5.3.2 + 5.3.4): the editable day-by-team schedule grid with week/month views, the view-only club-wide calendar, and the one-way ICS export. No new store - every write goes through the sessions routes.
BE:2API:3i18n:1
Training content tallyv0.1.0
Per-session training-content tagging and its derived statistics (PRD 5.4.2-5.4.4): the club-wide category/goal taxonomy and behavior catalogue, two-level (goal then behavior) tagging of training sessions, the per-session and cumulative percentage split, the priority-derived required split, per-round plan targets with the drift alert, and the element-vs-fatigue correlation contract (compute deferred to the workload slice).
BE:2API:27i18n:1
Facility reservationsv0.1.0
Coordinator-owned pitch + locker-room reservations over the club-wide facility inventory (PRD 5.3.7), the match → reservation attachment that supplies a home match its location, and the derived auto locker-room schedule (PRD 5.3.8). Double-booking is flagged with a click-through confirm, never blocked.
BE:2API:5i18n:1
User profilev0.1.0
Optional self-service personal profile (photo URL, coaching license {number, expiry}, phone, bio) as custom fields on auth:user, plus the read-only staff-compliance list over coaching-license expiry. Every field optional; nothing gates on completeness.
BE:2API:3i18n:1
Surveys and RPEv0.1.0
Post-session RPE and wellness surveys (PRD 5.5.2-5.5.6): a club default RPE survey and per-team wellness surveys built from a question bank plus custom fields, one RPE response (with an in-survey per-exercise breakdown) and one wellness response per player per session over the session team's roster, per-survey capture mode (self-report / coach-panel / hybrid, first-write-wins), a combined roll-call writing the attendance record in the same pass, a no-login kiosk, and a minors' consent gate. sRPE/workload aggregation and the completion alert are later slices.
BE:3API:11i18n:1
AI training plansv0.1.0
AI-assisted training-plan generation (PRD 5.8.1): a coach prompt plus the club game model, the tiered training-method library, an optional academy-model corpus, and the derived coach training history feed a pluggable generator into an editable, retained session outline that is never auto-applied.
BE:4API:14i18n:1
Session notificationsv0.1.0
In-app schedule notifications (PRD 5.3.3) over the sessions occurrence: create/change notices (actor-suppressed), a cancellation notice carrying the optional reason and withdrawing the pending reminder, a per-club-lead-time reminder scan, and the once-per-team-week weekly report. Delivery reuses the OM notifications module behind an injectable channel so the phase-2 push slice swaps the transport without touching this one.
i18n:1
Competition and resultsv0.1.0
The own-team match result (PRD 5.3.5): at most one result per match — an outcome (win/loss/draw from the own team's perspective) with an optional own/opponent score, recorded and corrected by staff after the match. The opponent name is reused from the scheduled match, a training session or cancelled match takes no result, and the derived W/L/D record, standings, and result notifications are later slices.
BE:1API:3i18n:1
Statistics and analyticsv0.1.0
The first derived read surface (PRD 5.2.1-5.2.2): individual, team, and coach-defined-group statistics computed live over the input layer (post-match stat lines, the shared match timeline, attendance, match results, the training-content tally) and never stored. The only stored thing is the per-team player-group definition. Clean sheets and goals-conceded are interval-accurate over on-pitch intervals; team-only tagged metrics (shots/tackles/fouls) stay with the live-tagging companion; workload/fatigue and the season window are later slices.
BE:2API:10i18n:1
Workload and fatigue monitoringv0.1.0
Derived load and fatigue layer over the input slices (PRD 5.2.3-5.2.8, 5.1.5): sRPE workload with the light/moderate/heavy microcycle classification, the trailing-7-day Live fatigue indicator, the rolling EWMA fatigue model with a forecast, the cross-team red/orange list, the load-spike, RPE-completion, and end-of-microcycle alerts, and the per-team threshold configuration (the only stored data).
BE:3API:7i18n:1
Reporting and filteringv0.1.0
The reporting layer (PRD 5.9): a period + specific-statistic filter surface over the statistics-and-analytics computed reads (default period = the current season), the three-tier season window (app default Jul 20 - Jun 30, club override, team override; nearest wins, absence inherits) resolved by one shared primitive that also drives period-based rules such as the 5.2.6 minimum match-minutes window, and the Academy compare-teams KPI table. The only stored thing is the per-team season override row - every report is computed on read, never persisted.
BE:3API:8i18n:1
Player and guardian portalv0.1.0
Phase-2 self-service portal for player and guardian accounts (PRD 5.4.1, 5.5.5, 5.3.3): own-scope schedule, self-marked attendance and self-reported RPE/wellness over the reserved source/actor fields, club-controlled portal visibility of statistics and match views, guardian-on-behalf access to linked minors until legal age, and in-app portal reminders. Identity rides the OM customer_accounts stack; onboarding stays coach-initiated (auth spec).
FE:1BE:2API:18i18n:1
Push notificationsv0.1.0
Phase-2 mobile push transport (PRD 04, 5.3.3) for the notifications the session_notifications and player_guardian_portal slices already produce: a per-user device registry, a coarse in-app/both channel preference, and injectable FCM/APNs/Expo transports. Delivery plugs into the sessionNotificationsChannel DI seam (in-app stays the system of record) and the portal reminder hook - no producer changes, no new notification kind. First-party stand-in for the OM devices + channel-{fcm,apns,expo} subsystem that is absent in 0.6.7.
BE:1API:5i18n:1
Data archival and retentionv0.1.0
The cross-cutting player archival/retention/deletion lifecycle (PRD 5.6): a purge cascade over every per-player domain, an eligibility-gated deletion-request ledger (player at/above the club legal age, else guardian), and a retention sweep that purges anonymized records older than the club archivedRetentionYears window (null = indefinite) while backstopping the players.player.{archived,deleted} event cascade.
BE:1API:4i18n:1
Lineups and positioningv0.1.0
Coach's pre-event pitch-positioning tool (PRD 5.1.4): a per-session/match lineup of positioned players (starter with a pitch coordinate, bench substitute without), savable and correctable, reusable as a per-team template, attached to the persistent player profile, with the accepted advisory pre-selection flag reading the Live fatigue band (5.2.4) and health-check expiry (5.7.1) — computed live, never stored, never blocking.
BE:1API:7i18n:1