9:30●●●● 🔋
Clients
3
AK
Anna K.
12 sessions · €580
MS
Mark S. €50 owed
8 sessions · €400
JD
Julia D.
5 sessions · €250
PW
Paul W.
3 sessions · €150
IK
Ivan K. Deleted
8 sessions · €400
MV
Marta V. CRM
5 sessions · €250
Archived & Blocked 5
No clients yet
Add an athlete to start tracking
sessions, payments, and notes.
Add Client
Create athlete profile
Invite to app
Invite to training
9:30●●●● 🔋
Requests
TN
Tom N.
wants to book a session
Boxing Training
Thu, Apr 17 · 19:30 – 20:30
GYM Bro
€40 Cash
SK
Sara K.
wants to book a session
Basketball Training
Fri, Apr 18 · 10:00 – 11:00
TNT Studio
€50 Card
LR
Lena R.
wants to book a session
Yoga Morning Flow
Mon, Apr 21 · 08:00 – 09:30
GYM Bro
€15 Cash
All caught up
New training requests from athletes
will appear here.
Request handled
9:30●●●● 🔋
AK
Anna Kowalski
Warsaw, Poland
basketball fitness
12
Sessions
3
Upcoming
€580
Revenue
€75
Owed
Pending Payments 2
Basketball Training €50
Apr 14 · Cash
HIIT Group Session €25
Apr 10 · Cash
Upcoming Sessions
Basketball Training
Mon, Apr 21 · 08:00 - 09:00
TNT Studio €50
Basketball Training
Wed, Apr 23 · 08:00 - 09:00
TNT Studio €50
HIIT Group Session
Thu, Apr 24 · 18:00 - 19:00
GYM Bro €25
Notes
Knee injury (left) — avoid high impact jumping. Prefers morning sessions. Pays cash usually.
Training History
12 sessions
0
Sessions
0
Upcoming
€0
Revenue
€0
Owed
Upcoming Sessions
No upcoming sessions yet.
Notes
Add notes
Payment recorded
Schedule training
Edit info
Archive client
Block athlete
Archive Anna Kowalski?
Hides Anna from your active clients list. All training history, stats, and notes stay saved — you can restore her anytime from Archived list.

Anna will still be able to book sessions with you — a new request will bring her back to active clients.
Block Anna Kowalski?
Anna won't be able to book new sessions with you and your profile won't appear in her search results. Past history and stats are preserved — you can unblock her anytime.

Upcoming sessions stay scheduled — you'll need to cancel them manually if needed.
9:30●●●● 🔋
Training history
AK
Anna Kowalski · 12 sessions
Basketball Training
€50
Mon, Apr 14 · 08:00 - 09:00 · TNT Studio
Completed · Paid
Basketball Training
€50
Wed, Apr 9 · 08:00 - 09:00 · TNT Studio
Completed · Paid
HIIT Group Session
€25
Thu, Apr 3 · 18:00 - 19:00 · GYM Bro
Completed · Paid
Basketball Training
€50
Mon, Mar 31 · 08:00 - 09:00 · TNT Studio
Cancelled by athlete
Basketball Training
€50
Wed, Mar 26 · 08:00 - 09:00 · TNT Studio
Completed · Paid
No sessions yet
Completed sessions with this athlete
will appear here.
9:30●●●● 🔋
Archived & Blocked
JD
Julia D.
Archived Apr 18 · 5 sessions
KL
Karl L. Deleted
Archived Mar 30 · 18 sessions
SV
Sofia V.
Archived Feb 12 · 2 sessions
Restored
9:30●●●● 🔋
Notes
Knee injury (left) — avoid high impact jumping. Prefers morning sessions. Pays cash usually.
9:30●●●● 🔋
New client
First name
Last name
Phone or Email (optional)
Sport
Basketball
Notes (optional)
Injuries, preferences, payment habits...
Please fill in required fields
Coach

Clients

CRM-style client list. Root tab screen (no back arrow).


"+" sheet actions:
Create athlete profile → CRM form (New Client screen)
Invite to app → opens native iOS share sheet directly. Prefilled: "Join me on 321Fit: https://321.fit/invite/coach_id". No intermediate screen.
Invite to training → intermediate screen to select training template, then generates deep link with event attached.


Empty: fresh coach — «Add first client» CTA opens the same add-client sheet. Loading: 4 skeleton rows during initial fetch. Archived row at bottom is hidden when 0 archived+blocked — appears only after first use.

Coach

Requests

Full-screen inbox for pending booking requests.


Empty: inbox-zero — no CTA (nothing to act on, requests arrive asynchronously). Loading: 3 skeleton cards matching request layout (avatar + text + button row).


Accept → card fade-out, snackbar «Request accepted — event added to calendar», bell badge decrements. Decline → fade-out, snackbar «Request declined». When last card is handled, screen auto-transitions to Empty (inbox-zero) and bell badge hides.

Coach

Client Detail

Full athlete profile from coach's perspective.


Schedule training (⋯ menu + fresh-state Upcoming CTA) → navigates to invite.html?mode=schedule&origin=s-client-detail. Reuses Select Training + Date/Time screens with Request-badge review instead of Invitation-badge. Send Request → back to Client Detail.

Coach

Client History

Full training history with athlete.


Empty: brand-new client with 0 past sessions — no CTA (coaches initiate training from Client Detail, not here).

Coach

Archived & Blocked

List of clients removed from active Clients tab — by archive (soft) or block (hard).


Entry: "Archived & Blocked" row at bottom of Clients list (iOS Mail "Trash" pattern).

Coach

Client Notes Editor

Full-screen editor for coach's private notes about an athlete. Same pattern as About Me editor — Cancel / title / Save header, contenteditable body, no character counter.


Distinct from event note (group training, per-session, 200 char limit) — client notes are long-lived and persistent.

Coach

Create Client

CRM card for athletes without app account.


Validation: tap Create Client → red border + red label on missing/invalid fields (all at once) + auto-scroll to first error + snackbar «Please fill in required fields» for 2.5s. Error styles auto-clear after 3s so user can retype. Mirrors Create Session pattern.

Created athlete appears in Clients list. Coach can track sessions/payments.