Skip to main content

Scheduled Programs

This is your program calendar. It shows all scheduled workout programs on a weekly or daily calendar view. Think of it as a planner where each day displays the programs assigned to it, including the linked classes and workouts. You can move progra...

Written by Ronny Christensen
Updated over 3 weeks ago

What This Screen Does

This is your program calendar. It shows all scheduled workout programs on a weekly or daily calendar view. Think of it as a planner where each day displays the programs assigned to it, including the linked classes and workouts. You can move programs to different dates by dragging them, click on a program to edit it, or click on an empty date to create a new one.


How to Get There

  1. Open the dashboard.

  2. In the left-hand menu, click Program.

  3. Click Calendar (or you will land here by default).

  4. You are now on the Scheduled Programs screen.


Step-by-Step Guide

The calendar toolbar at the top of the card gives you controls to move through dates and change the view.

Control

What It Does

Previous arrow

Moves the calendar back by one week (in week view) or one day (in day view).

Next arrow

Moves the calendar forward by one week or one day.

Date heading

Shows the current date or date range you are viewing.

Today button

Jumps back to the current date.

View selector (desktop only)

Switch between Week view and Day view.

  • On mobile devices, the view selector is hidden, and the calendar adjusts its height automatically.

  • The current date is saved in the browser URL, so you can bookmark or share a specific week.

2. Read a Program Event

Each program appears as a colored block on its date. Inside the block you will see:

  • Class names and times – the linked classes are listed with their start time (for example, “CrossFit - 09:00”).

  • Workouts – below the class names, a numbered list of workouts included in the program is shown under a “Workouts” heading.

  • The color of the event matches the tint assigned to the linked class, making it easy to visually group related programs.

3. Create a New Program

  • Click on an empty area on any date in the calendar.

  • You will be redirected to the Create Program screen with the selected date pre-filled.

  • If you click on a date that already has a program, you will be taken to the edit screen for that program instead (see step 5).

4. Move a Program to a Different Date

  • Click and hold a program event, then drag it to the desired date.

  • Release the mouse button to drop it on the new date.

  • The system will:

    1. Find classes on the new date that match the program’s class descriptions.

    2. Update the program with the new date and matching class IDs.

    3. Show a green “Update success!” notification.

  • The calendar will refresh automatically to show the program in its new position.

5. Edit an Existing Program

  • Click on any program event in the calendar.

  • You will be redirected to the Edit Program screen for that program (at /programs/:id/edit).

  • Make your changes and save from the edit screen.

6. Switch Between Week and Day Views

  • On desktop, click the view selector button in the top-left of the toolbar.

  • Choose Week to see seven days at a time, or Day to focus on a single day.

  • The calendar remembers your selection as you navigate forward and backward.


What Happens Behind the Scenes

You open the Scheduled Programs page
        |
        v
API calls fire in parallel:
  - getPrograms({ from: startDate, to: endDate })
  - getClasses({ from: startDate, to: endDate })
  - getExercises()
  - getWorkoutTypes()
        |
        v
Programs are mapped to calendar events with
  class names, workout titles, colors, and dates
        |
        v
Calendar renders the events for the visible date range
        |
        v
When you navigate (prev/next/today), new API calls
  fetch programs and classes for the new date range
        |
        v
When you drag a program to a new date:
  1. System finds matching classes on the new date
  2. API call: ProgramsService.update({ programId, body })
  3. Success notification appears
  4. Programs are re-fetched to refresh the calendar
        |
        v
When you click an empty date:
  Redirect to /programs/new?date=<selectedDate>
        |
        v
When you click an existing program:
  Redirect to /programs/:id/edit


Troubleshooting

“The calendar is empty even though I have programs”

  • Check the date range. Use the Today button to jump to the current week and confirm you are looking at the right dates.

  • Make sure programs are scheduled for the currently selected gym. The calendar filters by the gym selected in the global gym selector at the top of the dashboard.

“I dragged a program but it snapped back to the old date”

  • This usually means the update failed. Check for a red error notification at the bottom of the screen.

  • The most common cause is that there are no matching classes on the target date. The system tries to link the program to classes with the same class description on the new date. If no matching classes exist on that day, the update may fail.

  • Create the required classes on the target date first, then try moving the program again.

“I clicked on an empty date but nothing happened”

  • Make sure you are clicking on the calendar grid area, not on a header or a toolbar element.

  • On some browsers, you need to click and release quickly (a single click), not click and drag.

“The calendar is loading very slowly”

  • If you have a large number of programs and classes, the calendar may take a moment to load. A progress bar will appear at the top of the calendar while data is loading.

  • Try switching to Day view to reduce the amount of data displayed at once.

“Programs are showing the wrong color”

  • The color comes from the tint assigned to the first linked class. If a class has no tint set, the event will appear with a default or empty color.

  • To fix this, go to the class description settings and assign a tint color.

“I do not see the Week/Day view selector”

  • The view selector is only visible on desktop screens. On mobile or small screens it is automatically hidden to save space.

  • If you are on a desktop and still do not see it, try making your browser window wider.

“The workout list inside a program event is cut off”

  • If a program has many workouts, the list may be truncated to fit within the calendar cell. Click on the program event to open the full edit view where you can see all workouts.

Did this answer your question?