All Docs
FeaturesPosibl Life & Gym AppUpdated March 15, 2026

Session Builder

Session Builder

The Session Builder is a drag-and-drop workout authoring tool for coaches. It lets you compose training sessions from the movement library, configure blocks and scaling tiers, set load expressions, and schedule sessions to programme tracks — all from a single browser-based interface.

URL: /dashboard/session-builder
Navigation: Coach Tools → Session Builder


Getting to the Session Builder

  1. Log in as a coach.
  2. In the dashboard sidebar, scroll to the Coach Tools section.
  3. Click Session Builder.

You can also deep-link to a specific session or pre-fill the date and track using query parameters:

/dashboard/session-builder?sessionId=<id>&date=YYYY-MM-DD&trackId=<id>

Session Metadata

Before adding blocks, configure the session header fields:

FieldDescription
TitleShort name for the session (e.g. "Monday Strength + MetCon")
Programme TrackSelect which track the session belongs to
Scheduled DateDate to publish the session; up to 12 weeks ahead
StimulusIntended training stimulus (e.g. "Aerobic capacity, moderate load")
Time DomainTotal session duration in minutes
Timer TypeAMRAP, EMOM, For Time, Tabata, Every X Minutes, or Open
Coach PreambleIntroductory notes shown to members before the session

Block Types

Sessions are structured as an ordered list of blocks. Each block has a type, an optional label you can customise, and block-level notes for pacing cues, equipment setup, or transitions.

Block TypeColourTypical Use
Warm-UpAmberMobility, activation, general prep
StrengthBlueBarbell or loading work with progressive sets
ConditioningRedAerobic or cardio-based pieces
SkillVioletGymnastics, technique, or sport-specific work
MetConOrangeMixed-modal metabolic conditioning
Cool-DownEmeraldStretching, recovery, breathwork

Adding and Reordering Blocks

  • Click Add Block and select a block type from the dropdown.
  • Drag the grip handle (⠿) on the left edge of any block to reorder it.
  • Click the block header to collapse or expand its contents.
  • Click the delete icon to remove a block.

Adding Movements

Inside any block, click Add Movement to open the Movement Picker modal.

Movement Picker

  • Use the search bar (debounced full-text search) to find movements by name.
  • Switch between category tabs to browse by movement type.
  • Click a movement to add it to the block.

Once added, each movement row expands to show its configuration fields.


Per-Movement Configuration

FieldDescription
Scaling TierRX / Performance / Foundations (see below)
Reps / SetsFree-text field (e.g. 5 x 3, 21-15-9)
Load ExpressionPercentage-based load (e.g. 75% 1RM Back Squat)
Absolute kg FallbackFixed kg value used when a 1RM is not on record
Interval SecondsWork interval for EMOM or Every X formats
NotesMovement-specific coaching notes or cues

Reordering Movements

Movements within a block can be dragged into any order using their grip handle, independently of block reordering.


Scaling Tiers

Each movement entry is assigned a scaling tier. Coaches typically add the same movement multiple times with different tiers to provide options for all athlete levels.

TierBadgeIntended Athlete
RXBlueAthletes performing the standard prescription
PerformanceVioletIntermediate athletes with movement proficiency
FoundationsEmeraldNewer athletes or those developing capacity

The right panel of the Session Builder includes a Scaling Tier Guide with descriptions for each tier.


Load Expressions

Load expressions let you specify a percentage of a member's recorded 1RM rather than a fixed weight. The platform resolves these at serve-time using the member's strength data.

Format: <percentage>% 1RM <lift name>
Example: 75% 1RM Back Squat

Resolution Rules

  1. The system looks up the member's most recent 1RM for the named lift.
  2. The calculated load is rounded to the nearest 2.5 kg.
  3. If no 1RM is on record, the absolute kg fallback value is used instead.
  4. If neither is set, no load is displayed to the member.

The right panel includes a Load Calculator Guide explaining this behaviour.


Saving and Publishing

Save Draft

Click Save Draft to persist the session without making it visible to members. Drafts can be reopened and edited at any time. The button shows a spinner while saving and a check icon on success.

  • Calls the training.authorSession tRPC mutation.
  • Creates a new session record if one does not exist; updates it if a sessionId is already set.

Publish

Click Publish to flip the session status to published. Published sessions are immediately served to members on the scheduled date.

  • Calls the training.publishSession tRPC mutation.
  • A session must have at least a title, a programme track, and a scheduled date before publishing.

Note: Publishing is not reversible from the Session Builder UI. Contact your platform administrator to revert a published session to draft.


Editing an Existing Session

To reopen a previously saved session, navigate to:

/dashboard/session-builder?sessionId=<id>

The builder will load the session's blocks, movements, and metadata automatically.


Technical Reference

DetailValue
Page filesrc/app/dashboard/session-builder/page.tsx
Client componentsrc/app/dashboard/session-builder/session-builder-client.tsx
Render modeforce-dynamic (per-request auth)
Drag-and-drop library@dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities
tRPC procedures usedtraining.listTracks, training.getSessionById, training.authorSession, training.publishSession, movements.search, movements.list
Database tablestraining_sessions, session_blocks, session_movements
Schema changesNone
New dependenciesNone