Vortex SC

Welcome back.

Vortex SC — squad management for the technical team, coaches & families.

Staff sign in

{{ loginErr }}

Enter your email and we'll send you a secure link to reset your password.

Choose a new password for your account below, then tap Set new password.

Check your email — we sent you a link to reset your password.

{{ famRegisteredMsg }}

{{ famLinkLabel }}

Confirm {{ famVerifyName }}

{{ famVerifyQuestion }}

{{ famVerifyErr }}

{{ famLinkedMsg }}
{{ p.label }}

{{ famErr }}

Read-only access to your swimmer's PBs, attendance, results and upcoming meets. No plans, no other squads.

By creating an account you agree to our Privacy Policy and Parental Consent.

Enter your PIN

{{ pinMsg }}

Vortex SC
{{ hubUserAvatar }}

{{ hubUserRole }}

{{ hubUserName }}

{{ clubStatLine }}

Today at a glance

Upcoming meets

{{ m.day }}{{ m.mon }} {{ m.name }}{{ m.place }}

No meets scheduled yet.

{{ squadsHeading }}

Tap to coach

Club Administration

Dashboard · club-wide insights

Vortex
{{ s.value }}{{ s.label }}

Swimmers by squad

{{ b.count }}
{{ b.short }}

Attendance

{{ attendRing.pct }} this week

Club training load · this week (km)

{{ b.label }}

Move swimmers

Reassign between squads

Vortex

{{ moveCountLine }}

{{ m.initials }} {{ m.name }}Age {{ m.age }} · now in {{ m.squadName }}
Vortex

Tools & AI

Working club-wide across all {{ clubSwimmerCount }} swimmers.

Vortex

Coaches Handbook

Shared reference for the Vortex coaching team.

{{ s.h }}

{{ s.lead }}

{{ b }}
Vortex SC

Welcome, {{ famPortalName }}

{{ famSwInit }}{{ famGenIcon }}

{{ famSwName }}

{{ famSwMeta }}

{{ k.value }}{{ k.label }}

{{ famProgEvent }} · progression

{{ famChart.best }}
{{ famChart.caption }}{{ famChart.drop }}
{{ s.date }} {{ s.meet }} {{ s.time }}
No swims recorded for this course yet.
Recovery
{{ famWearLatestLabel }}
{{ famWearRecovery }}RECOVERY
RESTING HR{{ famWearRhr }} bpm
HRV{{ famWearHrv }} ms
SLEEP{{ famWearSleep }} h
STRAIN{{ famWearStrain }}

Log from your band

{{ famWearConnLabel }}

{{ famWearMsg }}

Daily check-in

{{ wellReadiness }} READY

✓ Done today — tap to update.

{{ m.label }}

{{ wellMsg }}

Qualified for

{{ q.meet }}{{ q.events }} {{ q.count }} ✓

Personal bests

{{ p.event }} {{ p.time }}{{ p.drop }}

Fitness tests

{{ f.dateLabel }}{{ f.summary }}

InBody scans

{{ ib.dateLabel }}{{ ib.summary }}

Coach suggestion

Focus & targets

Compete in

{{ famAiSugg.competeEvent }}

Current best {{ famAiSugg.currentBest }} · target {{ famAiSugg.targetTime }}

Double down on

{{ famAiSugg.focusStroke }}

{{ famAiSugg.focusReason }}

Needs attention

{{ famAiSugg.weakStroke }}

{{ famAiSugg.weakReason }}

Consider entering

{{ famAiSugg.secondaryEvent }}

{{ famAiSugg.secondaryReason }}

Fitness & dryland

{{ famAiSugg.fitnessInsight }}

Nutrition

{{ famAiSugg.nutritionTip }}

{{ d.label }}{{ d.fileName }} {{ d.statusLabel }}

Upload a PDF or photo of each document. You and your child's coach can view them here at any time.

Private messages with your coach

No messages yet. Ask a question, send a set to check, or share a video for feedback — your coach replies right here.

{{ mm.name }} {{ mm.body }} {{ mm.setText }} {{ mm.videoEl }}
{{ mm.time }}

{{ famAttDayLabel }}

{{ famAttDayStatusLabel }}

Attendance recorded by the coach for this session.

{{ famAttMonthLabel }}

{{ famAttMonthPct }}Present this month
{{ w }}
Present Late Absent

{{ famAttYearLabel }}

{{ famAttYearPct }}

Yearly average

{{ famSwName }} · all results

{{ r.event }}{{ r.time }}

{{ r.meet }} · {{ r.date }} · Place {{ r.place }}

No results recorded for {{ famSwName }} yet. Your coach will add meet results as they come in.

Club calendar

{{ m.day }}{{ m.mon }} {{ m.name }}{{ m.place }}
No club meets posted yet — the club calendar will appear here.
{{ m.name }}{{ m.meta }}

Request an event

{{ famReqMeetInfo }}

Pick an event

{{ famReqMsg }}

{{ rr.event }} · {{ rr.meetName }}{{ rr.statusLabel }}
Vortex

Academy

Trials, level ladder, schedule and fees.

Trial registration

Request received — the team will be in touch to schedule ✓

Pending trial requests

{{ tr.childName }} · Age {{ tr.age }}

{{ tr.parentName }} · {{ tr.phone }} · Suggested: {{ tr.squadHintName }} · {{ tr.submittedAt }}

{{ l.name }}Ages {{ l.ages }} · {{ l.coach }} {{ l.count }}
{{ s.name }}{{ s.when }}
{{ f.name }} {{ acadCurrency }} /mo

Invoicing — {{ invMonthLabel }}

{{ invCollected }}Collected
{{ invOutstanding }}Outstanding
{{ v.name }} {{ v.amount }}
Vortex
{{ squad.avatar }}
Squad

{{ squad.name }}

Ages {{ squad.ages }} {{ squad.count }} swimmers {{ squad.coach }}

Roster

{{ rosterCountLine }}

Session · today

{{ planTotal }}metres
Pool length & course
Session intensity{{ rpeLabel }}
/100m gap
Finishes {{ planTimeWindow }}

{{ pdfImportMsg }}

{{ ps.roundsLabel }}{{ ps.subtotal }}m
× m {{ st.circuit }}RDS {{ st.setMetres }}m
Type
Stroke
Tools
Zone
Focus
Swimmers {{ sw.name }}
Rest On HR
{{ st.advice }}

{{ savedPlanMsg }}

{{ shareNote }}

Training log & load

{{ savedPlanWeekM }}mThis week · {{ savedPlanWeekN }} sessions
{{ savedPlanSeasonM }}mSeason · {{ savedPlanSeasonN }} sessions

{{ planCalLabel }}

{{ w }}
MorningEvening
{{ planCalSelLabel }}{{ planCalDayKm }} km
{{ ds.slotLabel }} {{ ds.title }} {{ ds.totalM }}m

No session on this day yet — build a plan above with this date set and tap “Save session”.

No sessions saved for this view yet — build a plan above, set its date + AM/PM, and tap “Save session”.

{{ sp.totalM }}metres {{ sp.title }}{{ sp.slotLabel }}{{ sp.dateLabel }} · Zone {{ sp.zone }}
Export range From To
{{ attendSummary.present }}Present
{{ attendSummary.late }}Late
{{ attendSummary.absent }}Absent

{{ attendDayLabel }}

{{ a.initials }} {{ a.name }}{{ a.statusText }}

{{ attendMonthLabel }}

{{ attendMonthAvgPct }}Avg attendance
{{ attendMonthSessions }}Sessions
{{ w }}

Tap a day to open it and mark or review attendance.

{{ attendYearLabel }}

{{ attendYearAvgPct }}

Yearly average

{{ selMeet.name }}

{{ selMeet.meta }}

Export one swimmer's full results

{{ r.place }} {{ r.name }}{{ r.event }} {{ r.time }}{{ r.delta }}

Tools & AI · {{ squad.name }}

VIP SPONSORED
{{ swimmer.genIcon }}

{{ swimmer.name }}

{{ swimmer.statusText }}

Age {{ swimmer.age }} · DOB {{ swimmer.dob }} · {{ squad.name }} · {{ swimmer.gender }}

{{ k.value }}{{ k.label }}

Attendance this season

{{ profileAttPct }}
{{ profileAttPresent }}Present
{{ profileAttLate }}Late
{{ profileAttAbsent }}Absent
{{ b.label }}

Personal bests

{{ p.event }}{{ p.time }}{{ p.meta }}{{ p.drop }}

Qualified for

{{ q.meet }}{{ q.events }} {{ q.count }} ✓

{{ progEvent }} · progression

Long course (LCM)

{{ lcmChart.best }}
{{ d.t }}
{{ lcmChart.caption }}{{ lcmChart.drop }}
{{ s.date }} {{ s.meet }} {{ s.time }}
No long course swims for this event.

Short course (SCM)

{{ scmChart.best }}
{{ d.t }}
{{ scmChart.caption }}{{ scmChart.drop }}
{{ s.date }} {{ s.meet }} {{ s.time }}
No short course swims for this event.

Private message to swimmer / parent

No messages yet. Send a note, a set, or a video to review — the swimmer & parents read it in their portal and can reply here.

{{ mm.name }} {{ mm.body }} {{ mm.setText }} {{ mm.videoEl }}
{{ mm.time }}

Coach notes & wellbeing

Status · {{ swStatusLabel }}

From To

Identity documents · restricted

Birth certificate On file
ID / passport copy On file
Medical certificate (full check-up) On file

Doctor-issued full physical check-up, required for meet entries per federation rules.

{{ docMsg }}

InBody scans

{{ ib.weight }} · {{ ib.fat }} · {{ ib.muscle }}{{ ib.dateLabel }}

{{ profileIbMsg }}

Recovery & wearables

Live recovery
{{ wearLatestLabel }}
{{ wearRecovery }}RECOVERY
RESTING HR{{ wearRhr }} bpm
HRV{{ wearHrv }} ms
SLEEP{{ wearSleep }} h
STRAIN{{ wearStrain }}
{{ b.day }}

7-day recovery trend

Log today's reading

{{ wearConnLabel }}

{{ wearMsg }}

{{ w.dateLabel }}{{ w.summary }}

Training HR — log a set

From a Polar Verity Sense (temple) or a wall pulse check. Enter the set's average & max heart rate.

Avg / max HR trend90–200 bpm
{{ c.day }}

Solid = average · light = up to max. A lower bar for the same set = fitter.

{{ h.label }} · {{ h.metric }}{{ h.dateLabel }}

Fitness test

{{ f.summary }}{{ f.dateLabel }}

AI suggestion

Edit coach suggestion — shown to parents/swimmer as coach guidance

Focus reason

Needs attention

Consider entering

Fitness & dryland

Nutrition

Focus & targets for {{ swimmer.name }}

Compete in

{{ aiSugg.competeEvent }}

Current best {{ aiSugg.currentBest }} · target {{ aiSugg.targetTime }}

Double down on

{{ aiSugg.focusStroke }}

{{ aiSugg.focusReason }}

Needs attention

{{ aiSugg.weakStroke }}

{{ aiSugg.weakReason }}

Consider entering

{{ aiSugg.secondaryEvent }}

{{ aiSugg.secondaryReason }}

Fitness & dryland

{{ aiSugg.fitnessInsight }}

Nutrition

{{ aiSugg.nutritionTip }}

Log at least one PB to get an AI suggestion.

Recent results

{{ r.place }} {{ r.event }}{{ r.meet }} {{ r.time }}

Notifications

{{ notifSubtitle }}

{{ pushMsg }}

{{ n.title }}{{ n.body }}{{ n.when }}

No notifications yet.

{{ toolTitle }}

{{ toolScope }}

Vortex SC

Showing · {{ insightScopeLabel }}

Weekly training load (km)

{{ b.label }}

Energy-zone distribution

{{ z.label }} · {{ z.pct }}%
{{ insightAttend.pct }}attendance
{{ s.label }}{{ s.value }}
Swimmer agemaxHR = 220 − age → {{ zoneMaxHR }} bpm

Six-zone system

{{ z.code }} {{ z.name }}HR {{ z.hr }} · La {{ z.lac }} mmol · {{ z.wr }}

Squad → zone permission

{{ h }} {{ r.sq }} {{ c.mark }}
● trains it◐ limited○ never

T-pace & poolside HR check

maxHR = 220 − age
Pulse check: count beats for 6 sec × 10 = HR (bpm)
T-pace / 100 = 1000 m trial ÷ 10
T-pace / 100 = 400 m trial × 2.5 ÷ 10

{{ tpSelInitials }} {{ tpSelName }}

Log a new trial

{{ tpaceErr }}

{{ t.typeLabel }} · {{ t.time }}{{ t.dateLabel }} · T-pace {{ t.tpace }}/100

{{ promoScopeLabel }}

Flags swimmers ranked top-3 in squad, at the top of their age band, or due a quarterly review.

No candidates right now — everyone's reviewed and settled.

{{ c.initials }} {{ c.name }}{{ c.sqName }} {{ c.badgeLabel }}

{{ c.reasonsStr }}

Swimmer / parent requests

{{ r.swName }} — {{ r.event }}

Add entry — {{ entryMeetName }}

{{ entryNewErr }}

Entering {{ entrySelName }}

Heats & lanes are seeded automatically by personal best (fastest in the centre, last heat) — no manual heat/lane needed.

H{{ e.heat }}·L{{ e.lane }} {{ e.name }}{{ e.event }} {{ e.pb }}seed PB

{{ clockView.section }}

{{ clockView.time }}{{ clockView.rep }}

{{ clockView.setTxt }}

Up next

{{ clockView.nextTxt }}

No sets in this squad's plan yet.
Build a session in the Plans tab, then run it here.

{{ reviewPlanMeta }}

{{ reviewVerdict.t }}

{{ reviewVerdict.s }}

Submitted by coach {{ reviewSubmittedAgo }}

{{ c.label }}{{ c.msg }}

Deterministic rules check the plan against the club's zone ruleset for this squad. The AI writes the explanations — it never overrides a rule verdict.

{{ g.h }}

{{ g.d }}

Live board

{{ boardTitle }}

{{ boardMeta }}

No results logged yet for this board.
Log a T-pace test or import meet results to populate it.

{{ r.rank }} {{ r.name }} {{ r.time }}

No clips yet. Add a race by YouTube, Vimeo, or direct .mp4 link.

{{ activeVideoTitle }}{{ activeVideoTag }}

Playback speed — slow motion

Race type

All splits captured ({{ videoSplitsDone }}/{{ videoSplitsTotal }})

Lap splits (sec, from video time)

{{ l.t }}
{{ l.lap }}

Play the clip and tap Lap at each split to build the chart.

Notes

{{ n.text }}

{{ videoUrlErr }}

Dryland & conditioning — {{ squad.name }}

{{ fitMediaMsg }}

{{ ex.mediaEl }}

Save this session

{{ fitSavedMsg }}

{{ fitCalLabel }}

MTWTFSS
{{ fitCalSelLabel }}{{ fitCalDayEx }} ex
{{ ds.slotLabel }} {{ ds.title }} {{ ds.totalEx }} ex

No dryland saved on this day yet — set this date above and tap “Save session”.

No fitness sessions saved yet — build the blocks above, set a date + AM/PM, and tap “Save session”.

{{ sp.totalEx }}exercises {{ sp.title }}{{ sp.slotLabel }}{{ sp.dateLabel }}

Import scan for {{ ibSelName }}

{{ inbodyPdfMsg }}

{{ inbodyQrMsg }}

Detected values

{{ d.l }}{{ d.v }}

Health analysis · {{ ibAnalysis.scanCount }} scans on file

{{ ii.l }}{{ ii.v }}

Recommended nutrition plan

{{ rec }}

VIP Sponsors Directory

{{ sponsorsScopeLabel }} · {{ sponsorsRows.length }} sponsored

No sponsored swimmers yet.
Mark a swimmer as sponsored from their profile.

Talent / Move-up Board

{{ talentScopeLabel }} · {{ talentRows.length }} ready for review

No move-up candidates right now.
Swimmers appear here once they reach the top age of their squad.

Recovery Board

{{ recoveryScopeLabel }} · lowest recovery first

{{ recoveryLowCount }} swimmer(s) in the red — consider easing their load today.

No recovery data yet.
Log readings on a swimmer's profile, or connect a WHOOP/Fitbit band.

Top Improvers

{{ improverScopeLabel }} · biggest time drops

No improvements to show yet.
Add each swim with its meet date (profile → meet history) and drops appear here automatically.

Rankings — {{ rankEvent }}

{{ rankScopeLabel }} · {{ rankCount }} ranked · avg {{ rankAvgLabel }}

No swimmers have a PB in {{ rankEvent }} yet.
Pick another event above.

{{ r.label }}

Meet Standards

{{ stdMeetName }} · {{ stdEventsWithCut }} cuts · {{ stdTotalQual }} qualifications

No meets yet — add a meet first, then set its cut times here.

Type the cut time for each event (e.g. 27.50 or 1:08.40). Swimmers whose PB beats the cut are counted qualified.

{{ e.event }} {{ e.qualCount }}

✓ {{ e.qualNames }}

Relay Builder

{{ relayScopeLabel }} · fastest logged PBs

{{ grp.title }}

{{ grp.count }}

Medley relay

Predicted total{{ grp.medleyTotal }}

Freestyle relay

Predicted total{{ grp.freeTotal }}
Not enough freestyle PBs for a full team.
No PBs logged in this scope yet — relays appear once swimmers have times.
Choose:
From (Mon)
To
{{ seasonTotalWeeks }}weeks
{{ seasonPhaseCount }}phases

Macrocycle · full season

{{ seasonStartLabel }} → {{ seasonEndLabel }}

Macro dashboard

{{ seasonMacroTotalKm }}kmPlanned
{{ seasonMacroSessions }}Sessions
{{ seasonMacroAvgKm }}kmAvg / week

Weekly load progression

Mesocycles · training blocks

{{ ph.weeks }}w

Target meets · taper into these

Weeks 1–2 before each target show a taper flag on the timeline below.

Microcycles · weeks

{{ mm.name }}
Taper week — ease load into the meet
{{ w.weekKm }}kmWeek total
{{ w.sessionCount }}Sessions
{{ w.avgKm }}kmAvg / session
DaySessionZoneMetres
{{ ss.slotLabel }} {{ ss.title }} {{ ss.zone }} {{ ss.m }}

No sessions saved in this week yet — add one for the week below.

{{ composeImageEl }}

Send to

{{ reqMsg }}

{{ p.reqLabel }}
{{ p.avatar }} {{ p.author }}{{ p.role }} · {{ p.time }} {{ p.tag }}

{{ p.textEl }} · edited

{{ p.imageEl }}
{{ p.comments }}
{{ c.avatar }} {{ c.author }} · {{ c.time }}{{ c.textEl }}
{{ goalsSwLabel }}
Squad season goals · {{ goalsSquadName }}Target per event · current = squad average PB

Editing squad targets below. Search a swimmer above to set and edit their individual season goals with AI-suggested targets.

{{ goalMsg }}

{{ g.pct }}
{{ g.event }} Achieved {{ g.sourceLabel }}
Target{{ g.target }}Current PB{{ g.current }}

{{ aiOut.title }}

{{ bl.label }}

{{ ln }}

In production this calls Claude (Sonnet) via your Anthropic API key — set once in Settings. ~1¢ per generation.

{{ adminTitle }}

{{ adminSub }}

Add swimmer to {{ swSquadFilterName }}

Personal bests & meet history

Add each swim — event, course, time, meet & date — then tap +. Add as many as you like (the same event at different meets is kept). All show in the profile; fastest per event becomes the PB.

{{ pb.label }}
{{ r.initials }}{{ r.genIcon }} {{ r.name }}Age {{ r.age }} · {{ r.squadName }} {{ r.statusText }}

Status

From To

Personal bests & meet history

{{ pb.label }}

No swimmers match.

Paste Hy-Tek text

Or upload a PDF

{{ meetImportSummary }}

{{ calErr }}

Event program

{{ compErr }}

Event program{{ m.eventsLine }}

Tap events to add or remove them from this meet's program. Parents will only be able to request these events.

{{ t.name }} · {{ t.event }}{{ t.time }}
{{ s.avatar }} {{ s.name }}{{ s.sub }}
{{ s.editPhotoAvatar }}

Club name

Training zone method

Current ruleset: {{ brandView.ruleset }} · {{ brandView.squadCount }} squads

Locale

Text direction

Currency

{{ settingsMsg }}

These settings drive Vortex SC's white-label configuration — the same app can be re-branded and re-ruled per club without code changes.

Anthropic API key

Powers the AI Assistants (Season Architect, Dryland, Nutrition, Workout Review). Stored only on this device.

{{ settingsMsg }}

Database sync

Push everything on this device to the shared Supabase database now. Use this once from the device that has your data, then it stays in sync automatically.

{{ dbTestMsg }}

{{ syncMsg }}

About this club

Vortex SC · 9 squads · {{ swimmerTotal }} swimmers · {{ meetTotal }} meets on record

Reset local data

Clears saved plans, family logins, roster edits and the API key on this device. Cannot be undone.

Print preview

Review before printing or saving as PDF

Vortex SC
{{ printSheet.clubName }}
Session plan
{{ printSheet.squadName }}
{{ printSheet.printDate }}
Session · {{ printSheet.zoneLabel }}
{{ printSheet.title }}
{{ printSheet.coach }}
{{ printSheet.timeWindow }}
{{ printSheet.total }}
metres
{{ pvsec.title }}· {{ pvsec.subtotal }}m{{ pvsec.startLabel }}
{{ pvsec.roundsLabel }}
{{ pvset.dist }}m
{{ pvset.distSend }}

{{ pvset.zoneCode }}
{{ pvset.txt }}
Zone: {{ pvset.zoneStr }}
Stroke: {{ pvset.strokesStr }}
Type: {{ pvset.typesStr }}
Focus: {{ pvset.labelsStr }}
Groups: {{ pvset.groupsStr }}
Swimmers: {{ pvset.swimmersStr }}
Send-off: {{ pvset.sendoffStr }}
Tools: {{ pvset.equipStr }}
Rest: {{ pvset.restStr }}
{{ pvset.hrStr }}
{{ pvset.timeLabel }}{{ pvset.setMetres }}m
Vortex SC
{{ printProgram.clubName }}
Meet program
{{ printProgram.squadName }}
{{ printProgram.printDate }}

{{ printProgram.meetName }}

{{ hh.label }}

Ln {{ rr.lane }} {{ rr.name }} {{ rr.pb }}
Generated from the Vortex SC coaching app VORTEX SWIMMING CLUB

{{ clockView.section }}

{{ clockView.time }}

{{ clockView.rep }}

{{ clockView.setTxt }}

Settings

Appearance

Notifications

Get a push alert on this device for new coach messages{{ pushRoleNote }}.

{{ pushMsg }}

Send a notification

Sent

{{ a.body }}{{ a.audienceLabel }} · {{ a.when }}

Data check · owner only

Live counts pulled straight from the database, so you can confirm everything really is saved — on every device, not just this one.

{{ authDbg }}

{{ dataCheckMsg }}

{{ d.label }} {{ d.value }}

My profile

{{ setPhoto }}

WhatsApp share contacts

Save a coach's number (with country code) or a WhatsApp group invite link. Sharing a plan opens that chat/group with the PDF ready to attach.

{{ w.label }}{{ w.sub }}
OR GROUP LINK

{{ settingsMsg }}

Privacy Policy  ·  Parental Consent

Share plan as PDF

Builds a PDF of the current session on your device. Use your phone's share sheet to send the PDF file straight into any WhatsApp chat or group, or pick a saved contact.

Tip: add your groups' admin numbers in Settings → WhatsApp share contacts for one-tap sending.

Vortex ID
VIP
Vortex SC Member Card
{{ vortexIdCard.avatarEl }}{{ vortexIdCard.genIcon }}
Name{{ vortexIdCard.name }}
Date of birth{{ vortexIdCard.dob }}
Squad{{ vortexIdCard.squadName }}
ID Number{{ vortexIdCard.idNumber }}
Season{{ vortexIdCard.season }}
Vortex SC
Add Ladder / Pyramid

Shape

Rungshow many swims {{ ladderRungsVal }}
Start distancethe first rung {{ ladderStartVal }}m
Step sizeadded each rung {{ ladderStepVal }}m
Repeats eachswims per rung {{ ladderRepsVal }}
Send-off / 50pace clock per 50m {{ ladderPaceStr }}

Build a rung

{{ manRepsVal }} × {{ manDistVal }}m {{ manPaceStr }}
Stroke

Your ladder · {{ manCount }} rungs

{{ r.num }} {{ r.label }}
{{ ladderTotal }} m≈ {{ ladderTimeMin }} mins

{{ ladderText }}

Notes

{{ relayPickerTitle }}

{{ relayPickerSub }}

No swimmers in this group have a PB for this stroke.

Swimmers for this set

Tap to include · leave empty for the whole squad

No swimmers match — this squad's roster will appear here.

Switch squad

Vortex SC
{{ printSheet.clubName }}
Session plan
{{ printSheet.squadName }}
{{ printSheet.printDate }}
Session · {{ printSheet.zoneLabel }}
{{ printSheet.title }}
{{ printSheet.coach }}
{{ printSheet.timeWindow }}
{{ printSheet.total }}
metres
{{ psec.title }}· {{ psec.subtotal }}m{{ psec.startLabel }}
{{ psec.roundsLabel }}
{{ pset.dist }}m
{{ pset.distSend }}

{{ pset.zoneCode }}
{{ pset.txt }}
Zone: {{ pset.zoneStr }}
Stroke: {{ pset.strokesStr }}
Type: {{ pset.typesStr }}
Focus: {{ pset.labelsStr }}
Groups: {{ pset.groupsStr }}
Swimmers: {{ pset.swimmersStr }}
Send-off: {{ pset.sendoffStr }}
Tools: {{ pset.equipStr }}
Rest: {{ pset.restStr }}
{{ pset.hrStr }}
{{ pset.timeLabel }}{{ pset.setMetres }}m
Vortex SC
{{ printProgram.clubName }}
Meet program
{{ printProgram.squadName }}
{{ printProgram.printDate }}

{{ printProgram.meetName }}

{{ hh2.label }}

Ln {{ rr2.lane }} {{ rr2.name }} {{ rr2.pb }}
Generated from the Vortex SC coaching app VORTEX SWIMMING CLUB