Release 1 blueprint · 16 Oct 2026
01 · Tech stack

Azure in Chennai, one TypeScript codebase

One codebase builds the web app and the Android app. The API and records run on Azure's basic and pay-per-use tiers in South India (Chennai), with backups in Central India (Pune). The data model shows every Release 1 table and the requirements it serves.

CPK Built Release 1 application architectureAndroid app and web app call an Azure Functions API in South India over HTTPS with a sign-in token. The API uses Entra External ID, Key Vault, Azure SQL Basic behind a VNet service endpoint, and Blob Storage for movement media and meal photos. Backups are geo-redundant to Central India. GitHub, Expo EAS, Azure Monitor, Sentry and automated tests build and operate it.APPS PEOPLE USEAndroid appAndroid players and coachesReact Native + TypeScript · Expo · APK through Google DriveExpo SecureStoresign-in tokensScreen-capture blockworkout + movementscreensRepository layerphone-generated IDsWeb appiPhone playersand all staffSame codebase, web buildAzure Static Web Apps FreeAZURE CORE · SOUTH INDIA (CHENNAI)HTTPS + sign-in tokenHTTPS + sign-in tokenSIGN IN AND PROTECTIONMicrosoft Entra External IDplayers + staff · staff email codeKey Vault + managed identitiesserver credentials · no stored keysExisting chennaiparkour.fit DNSweb app address · no Azure DNSBUSINESS RULESAzure Functions FlexConsumptionTypeScript API · pay-per-useApp permissionsrole · branch rules · row-level securityRECORDSAzure VNet + service endpointAzure SQL Database · Basicplayers, gameplans, logs, sign-offs,audit · row-level securityFILESAzure Blob Storagemovement media + meal photosBACKUP REGIONCentral India (Pune)geo-redundant SQL backupsbackupsBUILD AND OPERATEGitHub Free +Actions + Biceptest + deploy AzureExpo EASbuilds and signsthe Android APKAzure Monitor +App Insightshealth, errors,alerts in 5 minSentry (free)app crash reportsAutomated testsVitest · PlaywrightMaestro · k6 · axe(epic E15)
Figure 1 — CPK Built Release 1 application architecture, updated 16 Oct 2026 (simplified view of the stack below)
Technology stack
Apps people use
05
React Native + TypeScript
One codebase for the Android app and the web app.
Expo
Builds the Android APK and the web app; Expo Go for testing on phones.
Azure Static Web Apps (Free)
Hosts the web app for iPhone players and all staff.
Expo image picker and image manipulator
Capture or choose meal photos; shrink them and strip location data on the phone.
Expo SecureStore
Keeps Android sign-in tokens in the phone's secure storage.
Records and files
03
Azure SQL Database (Basic)
All Release 1 records, with row-level security; settings and tables are under Data model.
Azure Blob Storage
Movement reference media and meal photos; private, served through short-lived links; meal photos move to Cold after 90 days.
Repository layer
One data-access layer; records carry phone-generated IDs and timestamps.
Business rules
01
Azure Functions Flex Consumption
The TypeScript API; pay-per-use in the beta, about 2 s on the first request after idle.
Sign in and protection
06
Microsoft Entra External ID
Player and staff sign-in, verification and reset; free under 50,000 monthly users.
Emailed one-time code
The second step for staff sign-in.
App permissions
Role and branch rules, enforced by row-level security.
Key Vault + managed identities
Server credentials kept out of code; GitHub deploys sign in without stored passwords.
Azure VNet + service endpoint
Only the API's subnet reaches the database.
Existing chennaiparkour.fit DNS
The web app's address; no Azure DNS zone needed.
Build and operate
06
GitHub Free + Actions + Bicep
Version, test and deploy; production deploys by the App Admin after the Business Admin's go-ahead.
Expo EAS
Builds and signs the Android APK, shared through Google Drive.
Azure Monitor + Application Insights
Backend health, and alerts within five minutes; daily data cap.
Sentry (free)
App crash reports.
Blob protection
Soft delete for movement reference media.
Automated tests
Vitest, Playwright, Maestro, k6 and axe in GitHub Actions (epic E15).
Not neededSupabase, Firestore, MSG91, FastAPI, a separate sync platform, an Azure DNS zone or an App Service plan.
Data model
40 tables in Azure SQL for Release 1, in six domains. Each table lists the user stories and non-functional requirements it serves; each feature in 03 lists its tables.
Database settings
SettingRelease 1Traced to
Service and tierAzure SQL Database Basic (5 DTU, 2 GB) in South India; moves to S0 when load or size requires.E01-F06-US12E01-F12-NFR01E01-F12-NFR06
Sign-inEntra-only: no SQL passwords; the API connects with a managed identity.E01-F06-US11E01-F06-US12
Row-level securityEvery query filters on franchise and branch keys; coaches and nutritionists see their own branches, the Executive Coach and App Admin see all; the libraries are network-wide.E01-F02-US02E03-F03-US02E01-F11-NFR01
EncryptionEncrypted at rest; health declaration answers are encrypted and kept out of logs.E01-F11-NFR01E12-F01-US03E01-F11-NFR04
Backups and recoveryPoint-in-time restore (7 days) and weekly long-term backups, geo-redundant to Central India (Pune); a restore drill before go-live.E01-F10-NFR04E01-F10-NFR05E15-F05-US05
Schema changesMigration files only, applied by the pipeline, which opens the firewall to its own address only for the run.E01-F07-US04
AuditingEvery change, and staff views of nutrition data and meal photos, recorded in audit_event; database audit logs go to write-once storage.E01-F05-US01E01-F05-US02E01-F11-NFR07
Meal photo storagePrivate container; links expire in minutes; Cold after 90 days through a lifecycle rule; deletion 12 months after programme completion by a monthly job, later.E09-F05-US03E09-F05-US07E01-F11-NFR07
Test databaseFree-offer SQL database in the test environment, rebuilt with sample data and reset nightly.E01-F06-US11E15-F02-US01E15-F02-US04
Tables and relations
CPK Built Release 1 data model by domainSix domains of tables. Batches and sessions link to people, programmes and gameplans; programmes link to the movement library; training and progress link to batches, programmes and the library; safety and audit link to people and sessions.PEOPLE AND ACCESS · 6franchisebranchpersonperson_roleinviteconsentMOVEMENT LIBRARY · 9movementmovement_variantmovement_revisionmedia_assetinfrastructure_codevariant_infrastructureinfrastructure_branchslot_categoryslot_category_variantPROGRAMMES AND GAMEPLANS · 5programmeprogramme_slothabitgameplangameplan_itemBATCHES AND SESSIONS · 5batchbatch_staffsessionenrolmentattendanceTRAINING AND PROGRESS · 5set_logcheck_inhabit_tickplayer_movementlevel_awardNUTRITION · 6nutrition_plannutrition_plan_mealmeal_entrymeal_photonutrition_daynutrition_commentSAFETY, AUDIT AND IMPORTS · 4health_declarationcoach_noteaudit_eventimport_runplayers, coachesprogrammeenrolmentmovement variantssessionsvariantsgameplan items, habitsplayerssessions
Figure 2 — Release 1 data model by domain; arrows point from the tables that refer to another domain’s tables. Every domain also links to person.

Every table has id (a GUID, generated on the phone for logged sets so a retry never duplicates), created_at and updated_at in UTC. Branch-scoped tables also carry franchise_id and branch_id, and franchise-scoped tables carry franchise_id; row-level security filters on them. Library tables are shared across the network.

People and access6 tables
franchise name branch franchise_id → franchise code name person entra_object_id email full_name phone + 2 more person_role person_id → person branch_id → branch role invite invited_by → person person_id → person email full_name phone + 2 more consent person_id → person document version accepted_at
Figure 2.1 — People and access: a crow’s foot marks the many side and a bar the one side; dashed boxes are tables in other domains.
franchiseNETWORK
A franchise that runs branches.
  • namefranchise name
branchFRANCHISE
A branch such as ECR or Ekkattuthangal.
  • franchise_idthe franchise it belongs to → franchise
  • codeshort code, e.g. ECR
  • namebranch name
personFRANCHISE
Anyone who signs in: player or staff.
  • entra_object_idthe person's Entra External ID account
  • emailsign-in email
  • full_namename
  • phonephone
  • statusinvited, active, deletion requested or deleted
  • deletion_requested_atwhen deletion was requested
person_roleBRANCH
A role a person holds, scoped to a branch.
  • person_idwho holds the role → person
  • roleplayer, coach, Executive Coach, nutritionist, Business Admin or App Admin; later roles join with their features
  • branch_idwhere it applies; empty for Executive Coach, Business Admin and App Admin → branch
inviteBRANCH
An email invitation to join.
  • emailinvitee email
  • full_nameinvitee name
  • phoneinvitee phone
  • invited_bythe Business Admin or coach who sent it → person
  • statussent, accepted or expired
  • expires_atwhen it lapses
  • person_idthe player record created with the invite → person
Movement library9 tables
movement code name base_type sub_type + 1 more movement_variant movement_id → movement code stage level + 6 more movement_revision variant_id → movement_variant edited_by → person version changes status + 1 more media_asset variant_id → movement_variant uploaded_by → person kind blob_path infrastructure_code code name specification variant_infrastructure variant_id → movement_variant infrastructure_id → infrastructure_code infrastructure_branch infrastructure_id → infrastructure_code branch_id → branch slot_category name slot_category_variant category_id → slot_category variant_id → movement_variant
Figure 2.2 — Movement library: a crow’s foot marks the many side and a bar the one side; dashed boxes are tables in other domains.
movementNETWORK
A movement family, e.g. 43 Bicep curls.
  • codefamily code, e.g. 43
  • namefamily name
  • base_typee.g. Calisthenics & Strength
  • sub_typesub type
  • muscle_groupsmuscles worked
movement_variantNETWORK
A coded variant, e.g. 43.1A, with its level content.
  • movement_idits family → movement
  • codevariant code, e.g. 43.1A
  • stage1 to 5, from the code
  • levelL1 to L3, from the agreed stage mapping
  • namevariant name
  • definitiondefinition and technique
  • training_methodhow to train it
  • success_criteriawhat counts as passed
  • safety_requirementsafety rule
  • statusdraft or published
movement_revisionNETWORK
A draft change to a variant, published by an Executive Coach; a second approval comes in R2 (E02-F06).
  • variant_idthe variant changed → movement_variant
  • versionrevision number
  • changeschanged fields (JSON)
  • statusdraft or published
  • edited_byExecutive Coach who edited and published → person
  • published_atwhen published
media_assetNETWORK
A reference photo or video on a variant; never of players.
infrastructure_codeNETWORK
Equipment or a facility feature, e.g. INF1 balance line.
  • codeinfrastructure code
  • namename
  • specificationspecification
variant_infrastructureNETWORK
Equipment a variant needs.
infrastructure_branchNETWORK
Branches that have the equipment.
Traced to E03-F02-US02
slot_categoryNETWORK
A weight-loss slot list: Balance, Pull, Push, Accessory, Lower anterior, Core or Cardio.
  • namecategory name
slot_category_variantNETWORK
Variants allowed in a category (WL_Lists).
Programmes and gameplans5 tables
programme name weeks status version programme_slot programme_id → programme category_id → slot_category variant_id → movement_variant week day slot + 1 more slot_category in movement library movement_variant in movement library habit programme_id → programme name sort_order gameplan enrolment_id → enrolment published_by → person week status published_at enrolment in batches and sessions gameplan_item gameplan_id → gameplan variant_id → movement_variant day slot targets
Figure 2.3 — Programmes and gameplans: a crow’s foot marks the many side and a bar the one side; dashed boxes are tables in other domains.
programmeNETWORK
A package template, e.g. Weight loss, 12 weeks.
  • nameprogramme name
  • weekslength in weeks
  • statusdraft or published
  • versiontemplate version
programme_slotNETWORK
One slot of the template: week, day, slot and targets.
habitNETWORK
A daily habit the programme tracks.
  • programme_idthe programme → programme
  • namehabit
  • sort_orderdisplay order
Traced to E09-F02-US02
gameplanBRANCH
A player's plan for one week.
  • enrolment_idthe player's enrolment → enrolment
  • weekprogramme week
  • statusdraft or published
  • published_bycoach who published → person
  • published_atwhen published
gameplan_itemBRANCH
One slot in a player's week: movement and targets.
  • gameplan_idthe week → gameplan
  • dayMon to Sun
  • slote.g. Pull 1
  • variant_idthe movement → movement_variant
  • targetssets, reps, time (s), distance (ft), weight (kg), rest (s), RPE
Batches and sessions5 tables
batch branch_id → branch programme_id → programme name days start_time + 3 more programme in programmes and gameplans batch_staff batch_id → batch person_id → person role session batch_id → batch starts_at ends_at enrolment person_id → person batch_id → batch programme_id → programme start_date status attendance session_id → session person_id → person marked_by → person status
Figure 2.4 — Batches and sessions: a crow’s foot marks the many side and a bar the one side; dashed boxes are tables in other domains.
batchBRANCH
A training group on a fixed timetable.
  • branch_idwhere it trains → branch
  • programme_idthe programme it runs → programme
  • namebatch name
  • daystraining days
  • start_timestart time
  • length_minsession length
  • capacityplaces
  • start_datefirst day
batch_staffBRANCH
Coaches and nutritionists allocated to a batch.
  • batch_idthe batch → batch
  • person_ida coach or nutritionist → person
  • rolecoach or nutritionist
sessionBRANCH
One scheduled session of a batch.
  • batch_idthe batch → batch
  • starts_atstart
  • ends_atend
enrolmentBRANCH
A player enrolled in a batch's programme.
attendanceBRANCH
Present or absent for a session.
Training and progress5 tables
set_log gameplan_item_id → gameplan_item session_id → session person_id → person set_no done reps + 3 more gameplan_item in programmes and gameplans session in batches and sessions check_in person_id → person week_start weight_kg waist_cm habit_tick person_id → person habit_id → habit day done habit in programmes and gameplans player_movement person_id → person variant_id → movement_variant unlocked_by → person assessed_by → person unlocked_at ready_at result + 1 more movement_variant in movement library level_award person_id → person level awarded_at
Figure 2.5 — Training and progress: a crow’s foot marks the many side and a bar the one side; dashed boxes are tables in other domains.
set_logBRANCH
One logged set; its id is made on the phone so a retry saves once.
  • gameplan_item_idwhat was prescribed → gameplan_item
  • session_idthe session → session
  • person_idthe player → person
  • set_noset number
  • donecompleted or not
  • repsreps
  • weight_kgload
  • time_stime
  • logged_atphone time of logging
check_inBRANCH
Weekly weight and waist.
  • person_idthe player → person
  • week_startweek
  • weight_kgweight
  • waist_cmwaist
habit_tickBRANCH
A habit done on a day.
Traced to E09-F02-US02
player_movementBRANCH
A player's state on a variant: unlocked, ready and assessed.
  • person_idthe player → person
  • variant_idthe variant → movement_variant
  • unlocked_bycoach who unlocked → person
  • unlocked_atwhen unlocked
  • ready_atwhen the player tapped Ready
  • resultpassed, not yet or not assessed
  • assessed_bycoach who assessed → person
  • assessed_atwhen
level_awardBRANCH
A level a player has earned.
  • person_idthe player → person
  • levelL1, L2 or L3
  • awarded_atwhen
Nutrition6 tables
nutrition_plan player_id → person nutritionist_id → person notes valid_from status nutrition_plan_meal nutrition_plan_id → nutrition_plan meal guidance meal_entry player_id → person day meal snack_no + 2 more meal_photo meal_entry_id → meal_entry blob_path taken_at uploaded_at nutrition_day player_id → person reviewed_by → person day review reviewed_at nutrition_comment player_id → person author_id → person day comment
Figure 2.6 — Nutrition: a crow’s foot marks the many side and a bar the one side; dashed boxes are tables in other domains.
nutrition_planBRANCH
A player's nutrition plan, set by the nutritionist.
  • player_idthe player → person
  • nutritionist_idthe nutritionist → person
  • notesgeneral guidance
  • valid_fromfrom when
  • statusactive or ended
nutrition_plan_mealBRANCH
What to eat for one meal of the plan.
  • nutrition_plan_idthe plan → nutrition_plan
  • mealbreakfast, lunch, dinner or snacks
  • guidancefoods and portions
Traced to E09-F05-US01
meal_entryBRANCH
One meal a player logs on a day, with its self-attest tick.
  • player_idthe player → person
  • daydate
  • mealbreakfast, lunch, dinner or snack
  • snack_no1, 2 and so on for snacks
  • tickedas per plan; unticked by default
  • ticked_atwhen ticked
meal_photoBRANCH
A photo of a meal; location data stripped, private, Cold after 90 days.
  • meal_entry_idthe meal it belongs to → meal_entry
  • blob_pathprivate Blob Storage path
  • taken_atphone time
  • uploaded_atupload time
nutrition_dayBRANCH
The review of a player's day.
  • player_idthe player → person
  • daydate
  • reviewon plan, partly or off plan
  • reviewed_bynutritionist or coach → person
  • reviewed_atwhen
Traced to E09-F05-US06
nutrition_commentBRANCH
A coach's or nutritionist's comment on a day; the player sees it.
Traced to E09-F05-US05
Safety, audit and imports4 tables
health_declaration person_id → person version answers restrictions + 1 more coach_note player_id → person author_id → person session_id → session tags note session in batches and sessions audit_event actor_id → person table_name record_id action + 2 more import_run run_by → person kind file_name status + 4 more
Figure 2.7 — Safety, audit and imports: a crow’s foot marks the many side and a bar the one side; dashed boxes are tables in other domains.
health_declarationFRANCHISE
A player's health declaration; answers stored encrypted, never logged.
  • person_idthe player → person
  • versionquestion set version
  • answersencrypted answers
  • restrictionsrestrictions shown to coaches
  • submitted_atwhen
coach_noteBRANCH
A private note; only its author can read it.
Traced to E12-F05-US01
audit_eventBRANCH
Who changed what, and when.
  • actor_idwho acted → person
  • table_nametable changed
  • record_idrecord changed
  • actioncreate, update, delete, or view for staff views of nutrition data and meal photos
  • changesbefore and after (JSON)
  • atwhen
import_runFRANCHISE
A checked file import and the rows it rejected.
  • kindmovement workbook or player list
  • file_nameuploaded file
  • statuschecked, imported or failed
  • rows_totalrows in the file
  • rows_rejectedrows rejected
  • rejectionsrow and reason for each rejection (JSON)
  • run_bywho ran it → person
  • run_atwhen
A · Onboarding
First run: interests, starting level, household and guardian consent.
A1 Interests wireframe
A1InterestsLATER
Pick up to five disciplines to shape the first package.
A2 Starting level wireframe
A2Starting levelLATER
Self-reported; a coach confirms at the baseline assessment.
A3 Household setup wireframe
A3Household setupLATER
Add adults and children; each gets their own plan and level.
A4 Guardian consent wireframe
A4Guardian consentLATER
Participation, photography and emergency medical for under-14s.
B · Today
The daily home: next session, workout detail, transformation goal, wellness habits and nutrition.
B1 Today wireframe
B1TodayR1
Next confirmed session, goal card, tracking entry and shelf of current movements.
B2 Session detail · member wireframe
B2Session detail · memberR1
Date strip, one line per workout with sets / reps / kg / sec / ft / rest; tap to expand sets.
B3 Session detail · coach wireframe
B3Session detail · coachR1PART
Adds capacity, attendee picker, readiness from last 12 h, RPE / RIR and load adjust per member.
Readiness and in-session load adjustment come later.
B4 Transformation goal wireframe
B4Transformation goalR1PART
12-week programme mantra, weekly top-3 goals and daily non-negotiables.
The mantra and weekly goals come later.
B5 Wellness Habits wireframe
B5Wellness HabitsR1PART
Habits with streaks and weekly measurements; the Nutrition link opens B6.
Resting heart rate and progress photos come later.
B6 Nutrition · member wireframe
B6Nutrition · memberR1
Plan per meal, photos, a self-attest tick beside each meal and the coach's comment.
B7 Nutrition · coach wireframe
B7Nutrition · coachR1
Player picker, each meal's tick and photos, habits, the review and a comment the player sees.
The review itself lands by 23 Nov, after the beta.
C · Summary
Accomplishments, badges, progress index and the movement library.
C1 My Journey wireframe
C1My JourneyR1PART
Studio, movements and nutrition rings; progress index; badges earned.
Badges come later.
C2 Movement library wireframe
C2Movement libraryR1
Unlocked movements named; locked ones shown but unnamed.
C3 Movement detail wireframe
C3Movement detailR1
Level, who signed it off and what it opens next.
Home practice comes with a later content release.
D · Explore and plans
Disciplines, packages and the member's schedule.
D1 Explore wireframe
D1ExploreLATER
Browse by discipline: strength, mindfulness, yoga, martial arts, LTAD.
Browsing by discipline comes later.
D2 Discipline group wireframe
D2Discipline groupLATER
Movements within one discipline with open / locked state.
D3 Package detail wireframe
D3Package detailLATER
Week-by-week outline; request sent to coach, not a booking.
D4 Plans wireframe
D4PlansLATER
Coach-assigned packages plus a preferred-week request.
D5 Build your week wireframe
D5Build your weekLATER
Days, session length and branch (EKT, ECR, ALW, CBE, BLR).
D6 Schedule wireframe
D6ScheduleR1
Month view and next four sessions.
E · Membership
Plan, payments, referrals and the household with guardian controls.
E1 Membership wireframe
E1MembershipLATER
Current plan, payment history, household and refer a friend.
E2 Payment wireframe
E2PaymentLATER
UPI, card, bank transfer or cash; admin reconciles before plan extends.
E3 Household wireframe
E3HouseholdLATER
Linked profiles; switching re-points the whole app.
E4 Guardian controls wireframe
E4Guardian controlsLATER
Consent on file, permissions and a monthly spend cap.
F · Coach
Roster, package allocation, level sign-off, coach-only notes and nutrition follow-up.
F1 Roster wireframe
F1RosterR1
Today's batches; mark attendance per member.
F2 Allocate package wireframe
F2Allocate packageR1
Member, package and start date.
F3 Sign off movements wireframe
F3Sign off movementsR1
Passed / not yet / not assessed — levels only, no comments to members.
F4 Private notes wireframe
F4Private notesR1
Coach-only observations per member per session, e.g. knee pain.
F5 Nutrition Today wireframe
F5Nutrition TodayR1
Who hasn't logged meals today, with a comment action for follow-up.
F6 Nutrition plan wireframe
F6Nutrition planR1
The nutritionist sets each meal and copies the plan to batch players.
G · Master data
Movement, package and infrastructure libraries shared across the network.
G1 Movements wireframe
G1MovementsR1
Library coded MOV01…, filtered by base type.
Codes follow the workbook (for example 43.1A); the wireframe's MOV01 codes were sample data.
G2 Movement record wireframe
G2Movement recordR1
Definition, training method, success criteria, safety, muscles, infra, video.
G3 Create movement wireframe
G3Create movementR1
Auto-assigned code and a publish checklist.
G4 Package creation wireframe
G4Package creationR1PART
Programme templates such as 12-week weight loss.
Packages other than weight loss come later.
G5 Package builder wireframe
G5Package builderR1
Week × day grid; each slot a movement with sets, reps and rest.
G6 Infrastructure wireframe
G6InfrastructureR1
Equipment coded INF1…, with spec, branches and movements using it.
03 · Epics, features and user stories

15 epics, every story traced

Every feature has a permanent ID: E01-F06 is epic 01, feature 06. Functional stories add US (E01-F06-US01); non-functional requirements add NFR (E01-F08-NFR01). Each feature shows its Release 1 build sequence; the full order is in 04 · Project plan. Release 1 builds 33 features through 121 user stories, held to 26 non-functional requirements.

Vocabulary, in the Chennai Parkour spirit of play: the member is the Player, the coach is the Coach, and the workout plan is the Gameplan.

Epic numbers follow C:\CPK_Built as built on 6 Sep 2026 (question 1), with three changes to confirm (question 2): E01 merges platform foundation and operations (EPIC-01 and EPIC-14), E14 is special programmes (was EPIC-15) and E15 automated testing is new. E01-F14 data import, E09-F05 nutrition plan and meal log, E12-F05 coach notes and the non-functional groups E01-F08 to E01-F13 are also new; E02-F06 movement edit approval is deferred to R2. Features outside Release 1 get their stories when scheduled. IDs are permanent from this baseline: a removed item's ID is retired, never reused. Requirements follow the latest executive review, including WhatsApp group messages (E13-F01-US03).

Roles and RACI
Release 1 roles, the roles that come later, and who does what. R does the work, A is accountable, and I gets a notification; no Release 1 workflow needs a C.
Release 1 roles
RolePurpose
PlayerActive member who trains
CoachRuns batches: gameplans, attendance, sign-offs, nutrition comments
Executive CoachOwns the method: movement library and programme templates
NutritionistNutrition plans; reviews meals and habits with the coach
Business AdminBusiness setup and approvals; held by the business owner
App AdminIT: environments, deployments and configuration

Nutrition data and meal photos: the player, their allocated coach and nutritionist, the Executive Coach and the App Admin; staff views are audited (E01-F11-NFR07).

RACI, Release 1
ActivityPlayerCoachExecutive CoachNutritionistBusiness AdminApp Admin
Environments, releases, quality gatesR, A
Production go/no-go
AR
Staff accounts and rolesR, AI (role-change alert)
Player importI (invite email)AR
Invites and enrolmentI (invite email)RR, A
Batches, timetable, staff allocationR, A
Movement library, programme templatesR, A
Gameplans, sessions, sign-offsR, A
Health declarationRA
Nutrition plansR, A
Meal photos and ticks, daily review, habitsRRR, A
Privacy and deletion requestsAR
Later roles
RolePurposeArrives with
Reception, Branch ManagerFront desk and branch operations; Reception sees no branch metrics or financesE04
CRM & BillingMemberships, renewals, paymentsE04
Sales, Marketing & BDLeads, trials, campaignsE05
Parent, GuardianNot players; linked to a child who playsE01-F03
FriendInvited by a player, for referral benefits; no accountE05
Franchise Owner and F- rolesF-Branch Manager, F-Reception, F-Coach, F-Nutritionist, F-CRM & Billing, F-Sales & BD: the same duties within one franchiseE03
E01 · Platform
Sign-in, people, consent, configuration, audit, environments and releases, plus the non-functional requirements every feature must meet.
E01-F01AuthR1 · 5PARTData person
Email sign-in, password reset and staying signed in; an emailed one-time code for staff; a branded sign-in address later.
StoryWhoWhatDone whenRelease
E01-F01-US01PlayerSign in with email and password through Entra External ID.An invited player signs in on the web app and the Android app.R1
E01-F01-US02PlayerReset a forgotten password by email.The reset works end to end.R1
E01-F01-US03Coach, Executive Coach, Nutritionist, Business Admin, App AdminEnter an emailed one-time code at every sign-in.Staff can't sign in without the code.R1
E01-F01-US04PlayerStay signed in: the Android app keeps its token in secure phone storage; the web app keeps the browser session.Reopening the app doesn't ask to sign in while the session is valid.R1
E01-F01-US05EveryoneSign out from settings.Signing out ends the session on that device.R1
E01-F01-US06App AdminMove sign-in to a branded chennaiparkour.fit address through Azure Front Door.Written when branded sign-in is scheduled.LATER
E01-F02People and rolesR1 · 7Data audit_eventbranchenrolmentpersonperson_role
Player and staff profiles; roles player, coach, Executive Coach, nutritionist, Business Admin and App Admin, scoped by branch; account-deletion requests.
StoryWhoWhatDone whenRelease
E01-F02-US01Business AdminCreate staff accounts and give each a role and branches: coach, Executive Coach or nutritionist.Each role sees only its own screens, for its own branches.R1
E01-F02-US02Coach, nutritionistSee only players of my own branches; the Executive Coach and App Admin see all players.A coach looking up a player from another branch finds nothing; staff views of nutrition data and meal photos are audited.R1
E01-F02-US03PlayerKeep a profile with name, phone, branch and batch.The profile shows name, phone, branch and batch.R1
E01-F02-US04PlayerRequest account deletion from settings; the Business Admin approves and the App Admin completes it.Completing it removes the player's personal data, nutrition records and meal photos.R1
E01-F03Household—Screens A3E3E4
Family profiles in one household; guardian-managed child profiles; switching profiles.
Stories are written when this feature is scheduled.
E01-F04ConsentR1 · 9PARTScreens A4E4Data consent
Player terms and privacy consent at first sign-in; guardian consent for under-14s later.
StoryWhoWhatDone whenRelease
E01-F04-US01PlayerAccept the current terms and privacy notice, which also cover nutrition data and meal photos; the version and time are stored.The acceptance shows on the player's record with version and time.R1
E01-F04-US02GuardianGive consent for an under-14: participation, photography and emergency medical.Written when child profiles are scheduled.LATER
E01-F05AuditR1 · 8Data audit_event
Who changed what and when; database audit logs in write-once storage; alerts on role or setting changes.
StoryWhoWhatDone whenRelease
E01-F05-US01App AdminRecord who created, changed or deleted any record, and when.The audit test finds an entry for each action.R1
E01-F05-US02App AdminSend database audit logs to write-once storage that only the App Admin controls.Audit logs land in the write-once container.R1
E01-F05-US03App AdminGet an email when roles, network or audit settings change.A test role change triggers the email.R1
E01-F06EnvironmentsR1 · 1PART
Accounts, the Azure subscription, resource groups, sign-in tenants, PC tools, and the test and production environments.
StoryWhoWhatDone whenRelease
E01-F06-US01App AdminSet up a business email, a password manager and an authenticator app, and turn on two-step sign-in.You sign in to the business email with a two-step code.R1
E01-F06-US02App AdminCreate the Microsoft account and Azure subscription with the business email.portal.azure.com shows the subscription.R1
E01-F06-US03App AdminUpgrade the subscription to pay-as-you-go, because Flex Consumption doesn't run on a free trial.The subscription type shows Pay-As-You-Go; allow up to 24 hours.R1
E01-F06-US04App AdminCreate a $15 monthly Azure budget with email alerts at 50%, 80% and 100%.The budget lists your email as recipient.R1
E01-F06-US05App AdminCreate the resource groups rg-cpk-test and rg-cpk-prod in South India.Both show region South India.R1
E01-F06-US06App AdminCreate two Entra External ID tenants, one for test and one for production.You can switch into each tenant's admin centre.R1
E01-F06-US07App AdminCreate the GitHub organisation on the Free plan and a private repository named cpk-built, and push C:\CPK_Built to it.The repository holds C:\CPK_Built and you are the only owner.R1
E01-F06-US08App AdminCreate the Expo account and organisation.The organisation shows on expo.dev.R1
E01-F06-US09App AdminCreate the business Google account and the "CPK Built beta" Drive folder, not shared yet.The folder exists, owned by the business account.R1
E01-F06-US10App AdminInstall the PC tools: WSL2, Docker Desktop, VS Code with the MSSQL extension, Git, Node.js LTS, Azure CLI, Azure Functions Core Tools, GitHub CLI and Claude Code; install Expo Go on one Android phone and one iPhone.Each tool reports its version, and Expo Go opens a sample app.R1
E01-F06-US11App AdminCreate the test environment from Bicep files: Functions (pay-per-use), the free-offer SQL database, storage, Key Vault, VNet with a service endpoint, Application Insights and Static Web Apps.One pipeline run creates every test resource in South India.R1
E01-F06-US12App AdminCreate the production environment from the same Bicep files, with SQL Basic and every tier pinned.Production resources exist and the Azure cost forecast stays under the $15 budget.R1
E01-F06-US13Business AdminRequest the free D-U-N-S number through Apple's lookup tool, for the public store launch.A confirmation email arrives from D&B.LATER
E01-F06-US14App AdminAdd an always-ready API instance (about ₹530 a month) to remove the first-request delay.Written when the public launch is scheduled.LATER
E01-F06-US15App AdminMove the database behind a private endpoint.Written when the budget allows it.LATER
E01-F07ReleaseR1 · 2PART
CI, deploy gates, migrations, the APK build and Drive distribution, web hosting, the privacy pages and alerts; the iPhone app and store listings later.
StoryWhoWhatDone whenRelease
E01-F07-US01App AdminRun type checks and the automated suites on every pull request.A test pull request shows all checks.R1
E01-F07-US02App AdminDeploy to the test environment on every merge to main.The test environment updates with no manual steps.R1
E01-F07-US03App AdminDeploy to production only through a manual workflow that you start after the Business Admin's go-ahead; it signs in to Azure with GitHub's federated identity, re-runs the suite and stops on any failure.A failing test blocks a production deploy.R1
E01-F07-US04App AdminShip database changes only as migration files; the pipeline opens the database firewall to its own address for the run and closes it afterwards.A migration applies in test, and no firewall rule remains.R1
E01-F07-US05App AdminBuild a signed Android APK with Expo from the release commit, always with the same signing key.A new APK installs over the previous one without signing the tester out.R1
E01-F07-US06App AdminUpload each APK to the Drive folder, named with version and date; share it only with named testers; send the one-page tester guide.A tester installs from Drive by following the guide.R1
E01-F07-US07App AdminDeploy the web build to Static Web Apps Free on a chennaiparkour.fit address.The web app opens at that address in Chrome on Android and Safari on iPhone.R1
E01-F07-US08App AdminPublish a privacy policy and an account-deletion page on chennaiparkour.fit, linked from the app.Both pages are live and linked.R1
E01-F07-US09App AdminSet Azure Monitor alerts on API failures and errors, emailed to you.A forced failure in test sends an alert within five minutes.R1
E01-F07-US10App AdminBuild the iPhone app and share it through TestFlight on a personal Apple account ($99 a year).Written when the Android beta signs off (question 12).LATER
E01-F07-US11App Admin, Business AdminPublish to the App Store and Google Play under business accounts: legal entity, D-U-N-S number, signatory, domain email and an Apple device.Written when the public launch is scheduled.LATER
E01-F08Fast and usable with poor signalNFR7 OF 8 IN R1Data meal_photoset_log
Non-functional: response times, offline behaviour, data use, app size and accessibility.
NFRRequirementTarget (executive review)Release 1 positionVerified byRelease
E01-F08-NFR01Immediate feedbackTicks, reps and weights respond within 100 ms; no network wait.Screens respond at once; saving runs in the background, with a retry if it fails.E09-F01-US03E09-F01-US04R1
E01-F08-NFR02Fast screensSaved screens ≤ 300 ms; saved Today startup ≤ 2.0 s; online reads ≤ 1 s on 4G.Online reads ≤ 1 s when warm, about 2 s on the first request after idle during the beta. The saved-screen targets arrive with offline.E15-F04-US01R1PART
E01-F08-NFR03Offline trainingSaved plans and workout edits survive restarts; show pending sync clearly.Not in Release 1, which is online only.—LATER
E01-F08-NFR04Correct syncTest retries and conflicting edits; never silently lose or duplicate progress.No silent loss: a failed save stays marked and saves once on retry. Conflict handling arrives with offline.E09-F01-US04R1PART
E01-F08-NFR05Online authorityBookings, payments, access changes and certificates need server approval.Met: the server decides every change, including sign-offs and level awards.E15-F01-US01R1
E01-F08-NFR06Lightweight use≤ 2 MB per 10 minutes, excluding media and first sync; download videos separately.Checked nightly; videos stream only; meal photos are shrunk to about 250 KB on the phone.E15-F04-US05R1
E01-F08-NFR07Small appStore download target ≤ 50 MB on Android and iOS; test each feature release.Android APK ≤ 50 MB, checked on every build; the iPhone app comes later.E15-F04-US04R1
E01-F08-NFR08Accessible screensSupport large text and screen readers; replace endless spinners with status.axe checks on player screens; status messages instead of endless spinners.E15-F04-US03R1
E01-F09Payments members can trustLATER
Non-functional: safe checkout, retries and reconciliation. Applies when payments arrive.
NFRRequirementTarget (executive review)Release 1 positionVerified byRelease
E01-F09-NFR01Before checkoutBlock failed connection checks with an alert; never queue payments offline.No payments in Release 1.—LATER
E01-F09-NFR02After submissionShow “Checking payment” when uncertain; never label a timeout as unpaid.No payments in Release 1.—LATER
E01-F09-NFR03Safe retriesKeep one order reference; verify its result before allowing another payment.No payments in Release 1.—LATER
E01-F09-NFR04Verified moneyCheck signed gateway updates; reconcile daily and after restoring a backup.No payments in Release 1.—LATER
E01-F10Reliable service and recoveryNFR4 OF 5 IN R1
Non-functional: uptime, reminders, alerts and recovery targets.
NFRRequirementTarget (executive review)Release 1 positionVerified byRelease
E01-F10-NFR01AvailabilityTarget 99.9% monthly API uptime and 99.8% crash-free mobile sessions.Target held on SLA-backed services, without zone redundancy at this budget; crash-free sessions tracked in Sentry.E15-F01-US05R1
E01-F10-NFR02RemindersSubmit 1,000 queued pushes within 60 s? Phone delivery guaranteed?Push reminders move after the beta; then Notification Hubs Free sends them, delivery isn't guaranteed, and the 60-second target stays open.E13-F01-US01LATER OPEN
E01-F10-NFR03AlertsDetect backend, payment, sync and job failures within five minutes; flag offline reports on reconnect.Backend and job failures alert you within five minutes; payment and sync alerts arrive with those features.E01-F07-US09R1PART
E01-F10-NFR04Database recoveryTarget ≤ 1 h restore and ≤ 5 min loss within retained backup history.Point-in-time restore; up to about 10 minutes of loss (log backups every 5–10 minutes); restore time measured in the drill.E15-F05-US05R1PART
E01-F10-NFR05Disaster recoveryDaily independent copies; redundant data so zero data is lost during recovery; rehearse quarterly.Geo-redundant backups to Central India (Pune); a regional restore can lose up to an hour; zero loss needs phone copies, which arrive with offline.E15-F05-US05R1PART
E01-F11Privacy, IP and child safetyNFR5 OF 7 IN R1Data audit_eventhealth_declarationmeal_photopersonperson_role
Non-functional: record protection, content protection, access and data location.
NFRRequirementTarget (executive review)Release 1 positionVerified byRelease
E01-F11-NFR01Private recordsEncrypt data; test every role, family and branch boundary before release.Encrypted at rest; row-level security; the permission matrix runs on every change.E15-F05-US01E01-F02-US02R1
E01-F11-NFR02Inactive membersMembers without an active paid membership have downloaded videos removed from app storage.No downloads in Release 1.—LATER
E01-F11-NFR03Screen capture and downloadsBlack out screenshots on workout and movement screens; no download of tutorials or videos.The Android app blacks out screenshots; a browser can't, so the web app doesn't. No downloads.E09-F01-US05R1PART
E01-F11-NFR04Safe accessStaff two-step sign-in; expire offline access; exclude health data from logs.Emailed one-time code for staff; health and nutrition data kept out of logs; offline access arrives with offline.E01-F01-US03E12-F01-US03R1PART
E01-F11-NFR05Child safeguardsVerify guardian consent; keep child weight, calorie and wearable tracking off — TBD with India counsel on current law.Not in Release 1, which is adults only.—LATER OPEN
E01-F11-NFR06Data locationPrefer India (Chennai) region for core data; approve every provider, backup region and retention rule.South India (Chennai) primary, Central India (Pune) backups; every provider is listed in the tech stack.E01-F06-US05R1
E01-F11-NFR07Nutrition data and meal photosAdded in this blueprint: need-to-know access, private links, no location data, tiered retention.Only the player, their allocated coach and nutritionist, the Executive Coach and the App Admin see them, and staff views are audited; private links expire in minutes; location data is stripped on the phone; photos move to Cold after 90 days and are deleted 12 months after programme completion.E15-F05-US01E09-F05-US03E09-F05-US07R1PART
E01-F12Controlled cost and maintenanceNFR6 OF 6 IN R1
Non-functional: production tiers, budget, alerts, ownership, releases and growth.
NFRRequirementTarget (executive review)Release 1 positionVerified byRelease
E01-F12-NFR01Paid productionAlways-ready API and provisioned SQL; price reliability before launch.SQL Basic is provisioned; the API runs pay-per-use in the beta, and always-ready (~₹530 a month) is priced for the public launch.E01-F06-US12R1PART
E01-F12-NFR02BudgetApprove an INR estimate including cloud, stores, messages, media and payment fees.Every cost under $25 a month; the INR estimate is in section 05.E01-F06-US04R1
E01-F12-NFR03Cost alertsWarn at 50%, 80% and 100% of budget; review usage monthly.A $15 Azure budget with alerts at 50%, 80% and 100%.E01-F06-US04R1
E01-F12-NFR04OwnershipAutomate tests and backups; review alerts daily and updates monthly; name backup support.Tests and backups automated; you review alerts daily and Dependabot updates monthly. Backup support is still to be named (question 14).E15-F05-US03R1PART
E01-F12-NFR05Safe releasesSeparate test / live data; owner approval; gradual rollout; tested rollback.Separate test and production; only you deploy; APKs reach named testers first; rollback redeploys the previous release.E01-F07-US03E01-F07-US06R1
E01-F12-NFR06GrowthFive franchises, multiple branches; test twice expected peak; increase SQL capacity as needed.Load-tested at 40 concurrent users; SQL moves to S0 when load or size requires.E15-F04-US02R1
E01-F13Network testsNFR4 OF 8 IN R1Data media_assetset_log
Non-functional: behaviour under the poor-signal test profile.
NFRRequirementTarget (executive review)Release 1 positionVerified byRelease
E01-F13-NFR01Test profile1 Mbps down, 256 kbps up, 400 ms delay, 2% loss; test offline and reconnect too.Web journeys run in Chrome at this speed and delay, plus offline and reconnect. The 2% packet loss needs a network-shaping tool, added later.E15-F01-US02R1PART
E01-F13-NFR02Tick or enter reps or weightsRespond immediately and save on the phone.Responds immediately; saving on the phone arrives with offline.E09-F01-US03R1PART
E01-F13-NFR03Open a downloaded workoutRemain usable without internet — TBD: if coaches run sessions on a tablet or gym TV, server availability is needed for updates.Not in Release 1: no downloads.—LATER OPEN
E01-F13-NFR04ReconnectUpload saved entries without losing or duplicating them; identify conflicting edits.A retried set saves once, with no duplicate; conflict handling arrives with offline.E09-F01-US04R1PART
E01-F13-NFR05Book a classConfirm only after the server checks availability.No booking in Release 1.—LATER
E01-F13-NFR06Start paymentBlock checkout if connection checks fail; never queue a payment for later.No payments in Release 1.—LATER
E01-F13-NFR07Lose connection after paymentCheck the existing payment’s outcome before allowing another attempt.No payments in Release 1.—LATER
E01-F13-NFR08Play videoUse downloaded content where available; show a clear connection message when streaming cannot continue.Streams only, with a clear message when streaming can't continue.E08-F03-US01R1PART
E01-F14Data importR1 · 21PARTData enrolmentimport_runinvite
Existing players brought across from the current tool through a checked import; their history later.
StoryWhoWhatDone whenRelease
E01-F14-US01App AdminUpload the player list exported from the current tool, using the import template: name, email, phone, branch and batch; the app checks every row (source and format, question 15).Valid rows are ready to import; rejected rows list their reasons.R1
E01-F14-US02App AdminImport the checked rows: each player gets an invite (E05-F03-US01) and an enrolment in their batch (E04-F02-US01).Imported players appear in their batch's roster and receive their invites.R1
E01-F14-US03App AdminImport past attendance and payment records from the current tool, if needed (question 15).Written when the history scope is confirmed.LATER
E02 · Movement framework
The movement library and the progression and certification built on it.
Workbook import; browse; movement records by level; create, edit and publish; change history. A second approval comes in R2 (E02-F06).
StoryWhoWhatDone whenRelease
E02-F01-US01App AdminImport the workbook's Movement Library (93 families, 552 coded variants) and WL_Lists (244 variants) through a checked import that rejects rows it can't map and gives the reason.Counts match the workbook, and rejected rows are listed with reasons.R1
E02-F01-US02Coach, playerBrowse and filter the library by base type and sub type.Every published family is browsable in the web app and the Android app.R1
E02-F01-US03Coach, playerOpen a movement record with level tabs: definition, training method, success criteria, safety, muscles, infrastructure codes and media.Every imported variant shows its fields.R1
E02-F01-US04Executive CoachCreate a movement or variant; the code is assigned automatically, and a checklist blocks publishing until the required fields are complete.An incomplete variant can't be published.R1
E02-F01-US05Executive CoachEdit a movement as a draft and publish it when ready; a second Executive Coach's approval comes in R2 (E02-F06).Players and coaches see a change only after it is published.R1
E02-F01-US06Executive CoachSee each movement's change history: who, what and when.The history lists every published change.R1
E02-F01-US07PlayerSee locked movements without their names until a coach unlocks them.Locked movements show as "Locked movement".R1
E02-F02Demand index—
A difficulty score per movement that sets its level automatically, from the 6 Sep design.
Stories are written when this feature is scheduled.
E02-F03Baseline—Screens A2
Starting checks; the coach confirms the player's starting level.
Stories are written when this feature is scheduled.
E02-F04ProgressionR1 · 27Screens C2C3F3Data player_movement
The coach unlocks a movement, the player taps Ready, and the coach signs it off as Passed, Not yet or Not assessed.
StoryWhoWhatDone whenRelease
E02-F04-US01CoachUnlock the next movement for a player.The player sees it named in the library.R1
E02-F04-US02PlayerTap Ready on an unlocked movement, the claim step in the locked progression model (to confirm, question 3).The request appears in the coach's sign-off list.R1
E02-F04-US03CoachMark a movement Passed, Not yet or Not assessed against the variant's success criteria.The result saves with coach and date; players see the level status, not comments.R1
E02-F04-US04PlayerSee who signed off a movement and what it opens next.Both show in the movement detail.R1
E02-F05CertificationR1 · 28PARTScreens C1F3Data level_awardmovement_variant
Level awards (Zero Gravity L1, Open Sky L2, Limitless Air L3) and the progress index; printed certificates and badges later.
StoryWhoWhatDone whenRelease
E02-F05-US01PlayerReceive the level award when all of the level's movements are passed, using the agreed stage-to-level mapping (question 4).The award appears when the last movement of the level passes.R1
E02-F05-US02PlayerSee the progress index on My Journey: coach-verified movements divided by the level syllabus.The index matches the calculation.R1
E02-F05-US03PlayerReceive printed certificates and badges.Written when certificates are scheduled.LATER
E02-F06Movement edit approval—
A second Executive Coach approves movement edits before they publish (R2).
Stories are written when this feature is scheduled.
E03 · Franchise and facility
Franchises, branches, equipment and what each site may deliver.
E03-F01Layout template—
Site types and layouts.
Stories are written when this feature is scheduled.
E03-F02Equipment and infrastructure codesR1 · 12Screens G6Data infrastructure_branchinfrastructure_codevariant_infrastructure
Infrastructure codes linked to movements and branches.
StoryWhoWhatDone whenRelease
E03-F02-US01App AdminImport the infrastructure codes from the workbook's Infrastructure sheet (its format is still to be checked).The codes list in the infrastructure screen with the movements that use them.R1
E03-F02-US02Executive CoachAdd or edit a code: specification, branches, and the movements that use it.The change saves; the audit history shows who made it.R1
E03-F03Franchise lifecycleR1 · 6PARTData branchfranchise
Franchise and branch records; Release 1 has one franchise with two branches.
StoryWhoWhatDone whenRelease
E03-F03-US01Business AdminRecord the franchise and its two branches, ECR and Ekkattuthangal.Both branches exist.R1
E03-F03-US02Business AdminGive every franchise and branch record its franchise and branch keys; the shared movement, infrastructure and programme libraries are network-wide.A schema check fails any franchise or branch table missing its keys.R1
E03-F03-US03Business AdminAdd a new franchise with its own branches and operator.Written when franchising is scheduled.LATER
E03-F04Licensing and royalty—
Licences, operator handovers, licence fees and royalties.
Stories are written when this feature is scheduled.
E03-F05Deliverability engine—
The licence each site runs on: permitted, deliverable and staffed movements; it narrows automatically and widens only on review.
Stories are written when this feature is scheduled.
E04 · Commerce
Plans, entitlements, subscriptions and payments.
E04-F01Plan—
Plans as bundles of entitlements; packages, pricing and discounts.
Stories are written when this feature is scheduled.
E04-F02EntitlementR1 · 20PARTScreens D4F2Data enrolment
Enrol a player in a batch's programme with a start date; no payments in Release 1.
StoryWhoWhatDone whenRelease
E04-F02-US01Coach, Business AdminEnrol a player in a batch's programme with a start date.From the start date, the player's Today shows the programme.R1
E04-F02-US02PlayerSee current and next packages and request a preferred week.Written when plans and booking are scheduled.LATER
E04-F03Subscription—Screens E1
Renewals.
Stories are written when this feature is scheduled.
E04-F04Payment—Screens E1E2
Razorpay with Route; UPI, card, bank transfer or cash at the branch.
Stories are written when this feature is scheduled.
E04-F05Statement—
Receipts and statements.
Stories are written when this feature is scheduled.
E05 · Acquisition
Turning enquiries into active players.
E05-F01Leads—
Enquiries.
Stories are written when this feature is scheduled.
E05-F02Trial—
Trials and experience-session bookings.
Stories are written when this feature is scheduled.
E05-F03RegistrationR1 · 19PARTData inviteperson
An admin or coach invites players by email; public sign-up later.
StoryWhoWhatDone whenRelease
E05-F03-US01Business Admin, coachInvite a player by email with name, phone and branch.The invite email arrives with a sign-up link.R1
E05-F03-US02Business AdminResend an expired invite.The resent invite works.R1
E05-F03-US03PlayerSign up publicly, without an invite.Written when public sign-up is scheduled.LATER
E05-F04ActivationR1 · 23PARTScreens A1A2Data consentinviteperson
Invite accepted, password set, consent, health declaration, then Today.
StoryWhoWhatDone whenRelease
E05-F04-US01PlayerOpen the invite, set a password and sign in for the first time.The invited player reaches the first-run steps.R1
E05-F04-US02PlayerGo through first run in order: terms consent (E01-F04-US01), health declaration (E12-F01-US01), then Today.Neither step can be skipped; Today opens only after both.R1
E05-F04-US03PlayerChoose interests and a self-reported starting level.Written when onboarding is scheduled.LATER
E06 · Scheduling
Batches, timetables, bookings and attendance.
E06-F01ScheduleR1 · 17Screens D6Data batchsession
Batches and their recurring timetable; the player's schedule view.
StoryWhoWhatDone whenRelease
E06-F01-US01Business AdminCreate a batch: branch, programme, days, start time, length, capacity and coach.The batch appears in the timetable.R1
E06-F01-US02Business AdminGenerate the batch's recurring sessions for 12 weeks.The sessions list in the schedule.R1
E06-F01-US03PlayerSee the month view and the next four sessions.Both show in the web app and the Android app.R1
E06-F02Booking—Screens D5
Bookings and capacity; preferred-week requests.
Stories are written when this feature is scheduled.
E06-F03AttendanceR1 · 26Screens B3C1F1Data attendancebatch_staffset_log
The coach's roster; present or absent; each player's logged sets for the session.
StoryWhoWhatDone whenRelease
E06-F03-US01CoachSee today's batches and their players.The roster lists the coach's assigned batches.R1
E06-F03-US02CoachMark each player present or absent.Attendance saves and shows in the player's summary.R1
E06-F03-US03CoachSee each player's logged sets for the session.The logged sets show to the coach.R1
E07 · Coach development
The Level 4 and Level 5 coach pathway and the coach record.
E07-F01Coach track—
The Movement Coach (L4) and Master Coach (L5) pathway.
Stories are written when this feature is scheduled.
E07-F02Coach curriculum—
Pedagogy, safety, regressions and mentoring content.
Stories are written when this feature is scheduled.
E07-F03Coach assessment—
Assessing coaches for L4 and L5.
Stories are written when this feature is scheduled.
E07-F04RosterR1 · 18PARTScreens F1Data batch_staff
Coaches and nutritionists allocated to batches; shifts and coach attendance later.
StoryWhoWhatDone whenRelease
E07-F04-US01Business AdminAllocate coaches and nutritionists to batches.Coaches and nutritionists see their assigned batches.R1
E07-F04-US02Business AdminRecord coach shifts and coaches' own attendance.Written when coach records are scheduled.LATER
E08 · Content production
Workouts, programmes and the media behind them.
E08-F01WorkoutR1 · 15Screens G5Data programme_slotslot_categoryslot_category_variant
A day's slots, each with a movement and its targets; slots limited to their movement lists.
StoryWhoWhatDone whenRelease
E08-F01-US01Executive CoachLay out a training day with the workbook's slots: Movement 1–3, Pull 1–2, Push 1–2, Accessory, lower-body posterior and anterior, adduction, abduction, Core 1–3 and Cardio.A day shows all its slots.R1
E08-F01-US02Executive CoachGive each slot a movement variant and its targets: sets, reps, time (s), distance (ft), weight (kg), rest (s) and RPE.Targets save and display.R1
E08-F01-US03Executive CoachLimit each slot to its WL_Lists category.A slot rejects a movement outside its list.R1
E08-F02ProgrammeR1 · 16PARTScreens D3G4G5Data programmeprogramme_slot
Package templates; Release 1 builds the 12-week weight-loss template from the workbook; other packages, including mobility, later.
StoryWhoWhatDone whenRelease
E08-F02-US01Executive CoachCreate the 12-week weight-loss template from the fixed workbook's week-1 skeleton: Mon to Fri training, Sat 3 km run, Sun rest.Week 1 matches the fixed workbook.R1
E08-F02-US02Executive CoachEdit the template, with changes saved to history.Edits save; the audit history shows who made them.R1
E08-F02-US03Executive CoachPublish the template; only published templates can be assigned to a batch.A draft template can't be assigned.R1
E08-F02-US04Executive CoachCreate other packages, such as Ground movement Level 01, Kids LTAD 6–11, or mobility and flexibility programmes from the Flexibility & Mobility workbook.Written when those packages are scheduled.LATER
E08-F03Media assetR1 · 13Screens G2Data media_asset
Private storage and delivery of movement reference photos and videos; meal photos are the one exception for player media, through E09-F05.
StoryWhoWhatDone whenRelease
E08-F03-US01Executive CoachUpload a reference photo or video to a movement record; it is stored privately and served through short-lived links.The video plays in the web app and the Android app, and a clear message shows if streaming stops.R1
E08-F03-US02App AdminKeep media to movement records, except meal photos through the nutrition feature (E09-F05); no photos or videos of players themselves.No other screen offers an upload.R1
E09 · Training delivery
What players train each day, and the gameplans coaches set.
E09-F01PlayerR1 · 25Screens B1B2Data gameplan_itemsessionset_log
The player's Today, session detail and set logging, with a retry; the Android app blocks screenshots.
StoryWhoWhatDone whenRelease
E09-F01-US01PlayerSee Today: the next session, the programme week and the tracking entry.Today shows the next session and this week's gameplan in both apps.R1
E09-F01-US02PlayerOpen session detail: one line per exercise with sets, reps, kg, sec, ft, rest and the RPE target; tap to expand the sets.It matches the published gameplan.R1
E09-F01-US03PlayerLog each set (done, reps, kg, time); the screen responds at once and saves to the server.The coach sees the logged set.R1
E09-F01-US04PlayerA set that fails to save stays marked with a retry; nothing is lost silently.With the network off, the set shows as not saved; after reconnecting it saves once, with no duplicate.R1
E09-F01-US05App AdminBlock screenshots on workout and movement screens in the Android app.An Android screenshot of those screens is black.R1
E09-F02ActivityR1 · 29PARTScreens B1B4B5B7Data check_inhabithabit_tick
Weekly weight and waist; daily habits with streaks; resting heart rate and progress photos later.
StoryWhoWhatDone whenRelease
E09-F02-US01PlayerRecord weekly weight and waist.Entries save and the trend shows.R1
E09-F02-US02PlayerTick the programme's daily habits (3 to 5, question 13) and see streaks.Ticks save and streaks count.R1
E09-F02-US03PlayerRecord resting heart rate and progress photos.Written when tracking is extended.LATER
E09-F03GameplanR1 · 24Data gameplangameplan_itemplayer_movement
The coach's weekly gameplan for each player: copy forward, next variant, batch then individual changes, publish.
StoryWhoWhatDone whenRelease
E09-F03-US01CoachCopy the programme's week-1 skeleton into every enrolled player's gameplan.Each player has a week-1 gameplan.R1
E09-F03-US02CoachPre-fill next week's gameplan from this week, with each player's logged sets and check-in alongside.Next week's gameplan appears pre-filled.R1
E09-F03-US03CoachApply batch-wide changes first, then individual ones: next variant, sets, reps, load or rest.A batch change reaches every player; an individual change reaches one.R1
E09-F03-US04CoachSee signed-off movements beside each player while planning.They show in the gameplan.R1
E09-F03-US05CoachPublish the gameplan; players see Monday's session.Unpublished changes stay invisible to players.R1
The nutritionist's plan for each meal, the player's meal photos and ticks, and daily follow-up by coach and nutritionist; calories in R2.
StoryWhoWhatDone whenRelease
E09-F05-US01NutritionistSet each player's plan for breakfast, lunch, dinner and snacks: what to eat and portions.The player sees the plan for each meal in Nutrition.R1
E09-F05-US02NutritionistCopy a plan to other players in a batch, then adjust each.Each player's plan can change without affecting the others.R1
E09-F05-US03PlayerSnap or choose several photos for each meal, and add snacks as separate meals, any day; each photo is shrunk to about 250 KB and stripped of location data on the phone before upload.Photos show under the right day and meal, Today shows the meals logged, and a failed upload shows a retry.R1
E09-F05-US04Coach, nutritionistSee who hasn't logged meals today (Nutrition Today).The list clears as photos arrive.R1
E09-F05-US05CoachAdd a comment to a player's day, for example after a call when no photos came in.The comment shows on that day with the coach's name, and the player can see it.R1
E09-F05-US06Nutritionist, coachReview a player's day, on plan, partly or off plan, alongside their ticks and habits (by 23 Nov, after the beta).The review shows on the day and in the player's history.R1
E09-F05-US07App AdminMove meal photos to Cold storage after 90 days with a storage lifecycle rule.The rule is in Bicep, and a test photo older than 90 days shows as Cold.R1
E09-F05-US08App AdminRun a monthly job that deletes meal photos and their records 12 months after a player's programme completes.Written before the first deletions fall due, around Feb 2028.LATER
E09-F05-US09NutritionistSet calorie targets and calculate intake (R2).Written when calorie tracking is scheduled.LATER
E09-F05-US10PlayerTick each meal to self-attest it was as per the nutrition plan: breakfast, lunch, dinner and each snack added; every meal starts unticked and can have several photos.The tick saves with that day's meal; coach and nutritionist see it, and it feeds the Nutrition ring on My Journey.R1
E10 · Remote coaching
Self-paced training with coach touch points; not offered for kids.
E10-F01Remote session—
Booked consulting touch points with a coach; no in-app video for now.
Stories are written when this feature is scheduled.
E10-F02Remote verification—
Level 01 checks for remote players, done in person.
Stories are written when this feature is scheduled.
E11 · Community and events
A transformation journey that is fun, safe and with friends.
E11-F01Challenge—
Challenges, including the quarterly CPK Built Challenge ranking.
Stories are written when this feature is scheduled.
E11-F02Wall of Fame—
Public recognition of players.
Stories are written when this feature is scheduled.
E11-F03CPK360—
CPK360 updates and events.
Stories are written when this feature is scheduled.
E12 · Safety and duty of care
Block unsuitable activity and act on concerns.
E12-F01Health declarationR1 · 22Data health_declaration
A declaration at first sign-in; restrictions shown to coaches; health data never in logs.
StoryWhoWhatDone whenRelease
E12-F01-US01PlayerComplete the health declaration, using questions supplied by Chennai Parkour (question 5).The declaration is stored with its version and date.R1
E12-F01-US02CoachSee restrictions from the declaration beside the player's name in the gameplan and roster.A restriction shows beside the player.R1
E12-F01-US03App AdminKeep health and nutrition data, and photo links, out of logs and crash reports.A log scan finds none of them.R1
E12-F02Incident—
Incident records.
Stories are written when this feature is scheduled.
E12-F03Safeguarding—
Child safeguarding; open in the requirements.
Stories are written when this feature is scheduled.
E12-F04Wearable—
Optional adult wearables: HealthKit, Health Connect, WHOOP.
Stories are written when this feature is scheduled.
E12-F05Coach notes (new)R1 · 32Screens F4Data coach_note
Private notes per player per session, visible only to the coach who wrote them.
StoryWhoWhatDone whenRelease
E12-F05-US01CoachWrite private notes per player per session, with tags such as knee pain, wrist, fatigue, confidence or equipment.Notes never show to players; only the coach who wrote them sees them.R1
E13 · Insight and communications
Reminders, progress views and reports.
E13-F01Notify—
Push session reminders on Android and WhatsApp group messages; both after the beta.
StoryWhoWhatDone whenRelease
E13-F01-US01PlayerGet a push reminder on Android before each session.Written when reminders are scheduled after the beta.LATER
E13-F01-US02PlayerTurn reminders off.Written when reminders are scheduled after the beta.LATER
E13-F01-US03Business AdminSend reminders, motivational messages and more to player WhatsApp groups through Meta WhatsApp.Written when WhatsApp is scheduled.LATER
E13-F02InsightR1 · 31Screens B1B4C1Data attendancecheck_inmeal_entry
My Journey: the player's progress.
StoryWhoWhatDone whenRelease
E13-F02-US01PlayerSee My Journey: Studio, Movements and Nutrition rings, workouts completed and the weight trend.The values match the underlying records; the Nutrition ring counts meals ticked this week out of breakfast, lunch and dinner each day plus any snacks added.R1
E13-F03Reporting—
Dashboards, costs, collections and revenue by branch, franchise and network.
Stories are written when this feature is scheduled.
E14 · Special programmes
Serve schools, companies and specialist groups: Kaladi, corporate, schools, armed forces and stunts. A placeholder, blank for now.
No features defined yet.
E15 · Automated testing (new)
Every change is tested end to end before it deploys.
E15-F01Test harnessR1 · 3
Unit, API, web and Android test frameworks in CI; a story ID on every test; smoke tests after deploys.
StoryWhoWhatDone whenRelease
E15-F01-US01App AdminRun unit and API tests in CI against a SQL Server container.An example test passes locally and in CI.R1
E15-F01-US02App AdminRun web journeys in Playwright in Chrome's and Safari's engines, including a meal-photo upload and tick, and in Chrome under the network test profile: 1 Mbps down, 256 kbps up, 400 ms delay, plus offline and reconnect.A sign-in journey passes in both engines and under the profile.R1
E15-F01-US03App AdminRun the Android journey in Maestro on an emulator, nightly and before each APK.The nightly run reports pass or fail.R1
E15-F01-US04App AdminTag every test with its user-story ID; the traceability script reports coverage by epic, feature and story.TRACEABILITY.md lists each R1 story with its tests.R1
E15-F01-US05App AdminRun smoke tests after every deploy, including the first request after an idle spell.Smoke results attach to each deploy.R1
E15-F02Test dataR1 · 4
Synthetic branches, staff and 35 players; personas with history; a nightly reset.
StoryWhoWhatDone whenRelease
E15-F02-US01App AdminRebuild the test database with one command: 2 branches, 3 coaches, an Executive Coach, a nutritionist, a Business Admin and 35 players (25 Android, 10 web), with sample nutrition plans and synthetic meal photos.The rebuild completes and the counts match.R1
E15-F02-US02App AdminGenerate personas with 4 weeks of history: adherent, struggling, knee restriction, drop-out and ready for sign-off.Each persona shows in the test environment.R1
E15-F02-US03App AdminLoad the movement library and weight-loss template into test through the checked importer (E02-F01-US01).The test library's counts match the workbook.R1
E15-F02-US04App AdminReset the test data every night.Each morning starts from the same data.R1
E15-F03Test consoleR1 · 11PART
An App Admin page in the test environment: view cases and results, run suites; editing later.
StoryWhoWhatDone whenRelease
E15-F03-US01App AdminSee every test case with its ID, story, type, scenario, data set and last result.All R1 cases are listed.R1
E15-F03-US02App AdminSee run history: pass or fail, durations and failure screenshots.The last 10 runs are visible.R1
E15-F03-US03App AdminStart a suite from the console; GitHub Actions runs it and progress shows in the page.A run started from the console completes and its results appear.R1
E15-F03-US04App AdminOpen the console only as App Admin, and only in the test environment.Other roles and production can't open it.R1
E15-F03-US05App AdminEdit test data and table-driven cases in the page; saving opens a pull request.Written when console editing is scheduled (question 10).LATER
E15-F04Non-functional testsR1 · 33
Speed, load, accessibility, app size and data use.
StoryWhoWhatDone whenRelease
E15-F04-US01App AdminCheck that warm reads take 1 s or less, and log the first request after an idle spell.The nightly check passes.R1
E15-F04-US02App AdminLoad-test 40 concurrent users, twice the expected 20, with k6.The test completes without errors.R1
E15-F04-US03App AdminCheck player screens for serious accessibility issues with axe.No serious issues are found.R1
E15-F04-US04App AdminKeep the Android app at 50 MB or less.The build check passes.R1
E15-F04-US05App AdminKeep data use at 2 MB or less per 10 minutes, excluding media.The network check passes.R1
E15-F05Security gateR1 · 10
Permission matrix, diff checks, dependency scan, ChatGPT review and a restore drill.
StoryWhoWhatDone whenRelease
E15-F05-US01App AdminTest every role, branch and action against the permission matrix, including who can see nutrition data and meal photos.The matrix runs on every change.R1
E15-F05-US02App AdminFlag new outside addresses, bulk reads or exports, and permission or credential changes until you approve them.A test change adding an outside address is flagged.R1
E15-F05-US03App AdminBlock packages with high-severity vulnerabilities, using Dependabot and npm audit.A known vulnerable package fails the check.R1
E15-F05-US04App AdminAttach ChatGPT's plain-language review to every pull request.Each pull request has a review summary.R1
E15-F05-US05App AdminRun a restore drill: restore the test database to a point in time and check it.The drill passes before go-live.R1
04 · Project plan

From accounts to the 16 Nov start

Accounts first, then the 33 Release 1 features in sequence from 15 Oct to 6 Nov. The beta goes live on Monday 9 Nov, after Deepavali and a week before the 12-week programme starts on 16 Nov.

How to start
Step 1 comes first; steps 2–6 build on each other; steps 7–10 can follow in any order. Each step links to its story for the detail and done-when check. Set the Azure budget before creating anything that can bill.
StepStorySet upWhere and howCost
1E01-F06-US01Business email and two-step sign-inA mailbox on your domain (for example admin@chennaiparkour.fit) or a business Gmail; Microsoft Authenticator on your phoneFree
2E01-F06-US02Azure subscriptionazure.microsoft.com/free, with the business email, a card enabled for online international payments, and a phoneFree sign-up; a small refundable card check
3E01-F06-US03Pay-as-you-goAzure portal: Subscriptions, your subscription, UpgradePay only for use
4E01-F06-US04Budget alertsAzure portal: Cost Management, Budgets, AddFree
5E01-F06-US05Resource groupsAzure portal: Resource groups, Create, region South IndiaFree
6E01-F06-US06Sign-in tenantsentra.microsoft.com: Entra ID, Overview, Manage tenants, Create, ExternalFree under 50,000 monthly users
7E01-F06-US07GitHubgithub.com: New organization on the Free plan, then a private repositoryFree
8E01-F06-US08Expoexpo.dev: sign up, then create an organisationFree
9E01-F06-US09Google Drive folderaccounts.google.com, then Google DriveFree (15 GB)
10E01-F06-US10PC tools and Expo GoEach tool's official download page; Expo Go from the App Store and Play StoreFree
Workbook fixes
Data prerequisites: the checked importer rejects rows it can't map, so these six come before the library and template load.
#Issue in the workbookFixBlocks
1Tuesday and Thursday lower-body work (glute bridge, calf raise, shin raise) is free text with no coded variants; the posterior, adduction and abduction lists are emptyCode them, for example 64.1A Glute BridgeE08-F02-US01
237.1A is “10 min brisk walk inside gym” in the week plan but “Walk 3 km continuous” in WL_ListsOne code, one meaningE02-F01-US01
3Weight 100 and RPE 10 on crawls and balance walksConfirm what 100 means and whether RPE 10 is intendedE08-F02-US01
4Movement 2–3 and Friday's movements have no sets or repsConfirm whether they share Movement 1's prescriptionE08-F02-US01
5Saturday's “3K Run in 20 mins” isn't coded; the nearest code is 39.2C “Jog 3 km ≤ 24 min”Pick or add the codeE08-F02-US01
6Codes run to stage 5 (for example 59.4H), but the library has only Level 01–03 columnsConfirm how stages map to CPK Built levelsE02-F05-US01
Plan to launch
Bars are build windows by R1 sequence; diamonds are milestones; gold is the beta going live.
19 Oct26 Oct2 Nov9 Nov16 Nov23 Nov
Accounts set up; first app on your phones15 Oct
R1 seq 1–9: foundation, sign-in, roles15–19 Oct
R1 seq 10–11: security gate, test console20–21 Oct
R1 seq 12–14: movement library and editing20–23 Oct
First test APK to internal testers23 Oct
R1 seq 15–20: programme, batches, enrolment23–25 Oct
R1 seq 21–24: import, declaration, activation, gameplan26–28 Oct
R1 seq 25–26: Today, set logging, attendance27–30 Oct
R1 seq 27–28: sign-off and level awards30 Oct – 2 Nov
R1 seq 29–32: tracking, nutrition, progress, notes31 Oct – 3 Nov
Feature freeze3 Nov
R1 seq 33 and hardening; coach training4–6 Nov
Go/no-go6 Nov
Deepavali: no changes7–8 Nov
Beta live: Android app and web app9 Nov
Experience sessions; players install10–13 Nov
12-week programme starts16 Nov
Meal review live (E09-F05-US06)23 Nov
Release 1 build order
The window is when a feature starts.
R1FeatureNameWindow
1E01-F06Environments · Platform15–19 Oct
2E01-F07Release · Platform15–19 Oct
3E15-F01Test harness · Automated testing (new)15–19 Oct
4E15-F02Test data · Automated testing (new)15–19 Oct
5E01-F01Auth · Platform15–19 Oct
6E03-F03Franchise lifecycle · Franchise and facility15–19 Oct
7E01-F02People and roles · Platform15–19 Oct
8E01-F05Audit · Platform15–19 Oct
9E01-F04Consent · Platform15–19 Oct
10E15-F05Security gate · Automated testing (new)20–21 Oct
11E15-F03Test console · Automated testing (new)20–21 Oct
12E03-F02Equipment and infrastructure codes · Franchise and facility20–23 Oct
13E08-F03Media asset · Content production20–23 Oct
14E02-F01Movement catalogue · Movement framework20–23 Oct
15E08-F01Workout · Content production23–25 Oct
16E08-F02Programme · Content production23–25 Oct
17E06-F01Schedule · Scheduling23–25 Oct
18E07-F04Roster · Coach development23–25 Oct
19E05-F03Registration · Acquisition23–25 Oct
20E04-F02Entitlement · Commerce23–25 Oct
21E01-F14Data import · Platform26–28 Oct
22E12-F01Health declaration · Safety and duty of care26–28 Oct
23E05-F04Activation · Acquisition26–28 Oct
24E09-F03Gameplan · Training delivery26–28 Oct
25E09-F01Player · Training delivery27–30 Oct
26E06-F03Attendance · Scheduling27–30 Oct
27E02-F04Progression · Movement framework30 Oct – 2 Nov
28E02-F05Certification · Movement framework30 Oct – 2 Nov
29E09-F02Activity · Training delivery31 Oct – 3 Nov
30E09-F05Nutrition plan and meal log · Training delivery31 Oct – 3 Nov
31E13-F02Insight · Insight and communications31 Oct – 3 Nov
32E12-F05Coach notes (new) · Safety and duty of care31 Oct – 3 Nov
33E15-F04Non-functional tests · Automated testing (new)4–6 Nov

E01-F07 starts at sequence 2 for the pipeline; its APK, Drive and privacy-page stories (E01-F07-US05 to US08) land with the first test APK on 23 Oct and finish before go-live. The meal review (E09-F05-US06) follows the beta, by 23 Nov.

Risks and mitigations
RiskEffectMitigation
Added scope: sign-off, movement editing and the nutrition logThe build runs to 3 Nov with little slackPush reminders moved after the beta; the meal review (E09-F05-US06) lands by 23 Nov
Meal photo privacyThe wrong person sees a player's photosNeed-to-know access, audited staff views and permission tests (E01-F11-NFR07, E15-F05-US01)
Nutritionist capacity35 nutrition plans needed before 16 NovPlan copying (E09-F05-US02); plans entered during the 10–13 Nov experience sessions
About 2 s on the first request after idleThe app feels slow at the start of a batchTell testers; a free uptime check pinging the API in gym hours can reduce it; the always-ready instance (~₹530 a month) removes it
No offline modeLogging fails on weak signal; ECR is on the 2nd floorGym Wi-Fi for players; a failed save stays marked with a retry (E09-F01-US04)
AI-written code with a hidden flaw, and no outside reviewerData leak or wrong permissionsPermission matrix, diff checks, ChatGPT review and a restore drill (E15-F05)
Epic numbers differ from C:\CPK_BuiltTraceability breaksConfirm with the folder listing before any code (question 1)
Stage-to-level mapping unclearLevel awards (E02-F05) can't be computedSettle question 4 before R1 seq 28
Workbook fixes arrive lateThe library and gameplans can't be seededSix fixes by Fri 16 Oct; the importer rejects bad rows with reasons
Health declaration questions not suppliedActivation is blockedQuestions by 23 Oct (question 5)
Sideloading frictionTesters stuck at the install warningA one-page tester guide; coaches help at the experience sessions
APK signing key lostUpdates won't install over the old appExpo stores the key; never let it be regenerated
Your available hoursApprovals and testing pile upPlan around the hours you confirm (question 11)
Azure set-up surprisesFlex won't deploy on a free trial; a wrong tier lifts the billPay-as-you-go from day one; tiers pinned in Bicep; budget alerts
Beta go/no-go, Fri 6 Nov
After Release 1
What follows the beta, in no fixed order; each item is tracked in section 03.
ItemWhat it addsTracked in
iPhone appTestFlight, after the Android beta.E01-F07-US10
Store listingsApp Store and Google Play under business accounts.E01-F07-US11E01-F06-US13
PaymentsRazorpay with Route; store billing where required.E04-F04E01-F09
Receipts and noticesEmail, with queued retries.E04-F05
Offline trainingEncrypted phone records and sync.E01-F08-NFR03E01-F08-NFR04
WhatsApp group messagesReminders and motivational messages to player groups.E13-F01-US03
Health dataHealthKit, Health Connect and WHOOP, for consenting adults.E12-F04
No first-request delayAlways-ready API instance.E01-F06-US14
Network hardeningPrivate endpoint for the database.E01-F06-US15
Branded sign-in addressAzure Front Door.E01-F01-US06
History importPast attendance and payments from the current tool, if needed.E01-F14-US03
Push remindersSession reminders on Android.E13-F01-US01E13-F01-US02
Movement edit approvalA second Executive Coach approves edits (R2).E02-F06
Calorie trackingCalorie targets and calculation (R2).E09-F05-US09
Meal photo clean-upMonthly deletion 12 months after programme completion; first due around Feb 2028.E09-F05-US08
05 · Costs, questions and sources

Under $25 a month, all in

The beta costs about ₹650 a month, all of it Azure, with nothing to pay up front. Every later step stays under the $25 rule. Rupee figures use ₹96.8 per dollar.

Costs
Monthly running costs at each step, and one-time fees.
ItemBeta (now)Plus iPhone appPublic launch
Azure: SQL Basic, pay-per-use API, storage incl. meal photos, monitoring~₹650~₹650~₹650
Always-ready API instance (optional)——~₹530
Apple Developer Program (about ₹8,700 a year)—~₹725~₹725
GitHub, Expo, Google Drive, External ID, Static Web Apps, Sentry, test tools₹0₹0₹0 (GitHub Team ~₹390, optional)
Monthly total~₹650~₹1,375~₹1,905 with always-ready
One-time₹0—~₹2,420 for Google Play ($25)

The ceiling — $25 is about ₹2,420 at ₹96.8 per dollar. A private endpoint (~₹755) or the S0 database tier (~₹950) fits only if you skip both the always-ready instance and GitHub Team.

Media — Movement reference photos and videos cost a few rupees a month in storage, and viewing them stays within Azure's 100 GB of free monthly data transfer at beta scale.

Meal photos — About ₹10–20 a month at beta scale (35 players, about 6 photos a day at about 250 KB). A lifecycle rule moves photos to Cold after 90 days; at 500 players over a year that cuts storage from about ₹550 to about ₹225 a month, plus small per-photo tier-change charges.

Basis — List prices checked 12–16 Oct 2026; GST (18%) excluded; confirm Azure in the pricing calculator in INR before approval.

Not counted — Your Claude and ChatGPT subscriptions, Razorpay fees (no payments in Release 1), and any domain-email plan the business enrolment needs.

Open questions
Answers needed to keep the plan on track.
#QuestionWhy it mattersNeeded by
1Send the C:\CPK_Built folder listing: in Command Prompt run tree C:\CPK_Built /F > cpk_tree.txt and upload the file.Confirms the epic and feature numbers before any codeFri 16 Oct
2Confirm the structure changes so the C:\CPK_Built folders can be renamed or retired to match: E01 merges platform foundation and operations (EPIC-01 and EPIC-14), E14 is special programmes (was EPIC-15), E15 automated testing is new, six vague or overlapping features are retired (Config, Staff, Media production, Exercise, Mobility grid, Today suggestions) and Migration becomes data import (E01-F14).Keeps one numbering scheme across the blueprint and the repoFri 16 Oct
3Does the player's Ready step (E02-F04-US02) stay in Release 1?The flow of E02-F04Fri 16 Oct
4How do workbook stages 1–5 map to CPK Built levels, and who makes the six workbook fixes?Level awards and seed data depend on itFri 16 Oct
5Supply the health declaration questions.Activation (E05-F04) can't finish without themFri 23 Oct
6App name and Android package ID: “CPK Built” and fit.chennaiparkour.cpkbuilt?Fixed with the first APK on 23 OctWed 21 Oct
7Which business Google account holds the Drive folder, and who are the 25 Android and 10 iPhone testers?Sharing and invitationsFri 23 Oct
8Branches, batch times and number of coaches for the beta?Sample data, roster and gameplan set-upFri 16 Oct
9Do you have movement demo photos or videos for the library?How much media goes in through E08-F03Fri 16 Oct
10Test console editing (E15-F03-US05) before 9 Nov, or after the beta?Editing adds about two daysFri 16 Oct
11How many hours a day can you give between 15 Oct and 6 Nov?Approvals and phone testing are on youFri 16 Oct
12How long does the Android beta run before the iPhone app?Dates the Apple account and TestFlightBefore 16 Nov
13Which 3 to 5 daily habits does the weight-loss programme track?E09-F02-US02 needs the listWed 28 Oct
14Who is the named backup support if you are unavailable?Required by E01-F12-NFR04Before 9 Nov
15Which tool holds the player data, in what format, and does the beta need history (attendance, payments) or only the player list?Defines the import template for E01-F14Fri 23 Oct
16Who is the beta nutritionist, and do they cover all batches?Accounts, allocation and test data for E09-F05Fri 23 Oct
Sources