# Workout board card

> Canonical HTML: https://screenrig.ai/docs/cards/workout-board/

Today's workout on the gym whiteboard: the workout name and date, then each part with its format, time cap, rep scheme, movements, loads and scaled options.

Category: Sports. Tags: Schedules, Countdowns and timers.

## Previews

![Workout board](/cards/workout-board/v1/screenshots/canvas-bloom.webp?sha=ba4466d42e2b949e8e6148456a529c7676260842b7f7ea18c81a8f9945364f14)

Canvas

![Workout board](/cards/workout-board/v1/screenshots/corner-bloom.webp?sha=d56c71f2a3e539eab23d4f798267f51df1a2c8e536c8922f89546973b88ec08a)

Corner

![Workout board](/cards/workout-board/v1/screenshots/chip-bloom.webp?sha=26100efbcd59b4933b249887a6146f897179d2673f0b92622576dfb8ad4874d5)

Chip

## Views and forms

Views: canvas, corner, chip. Canvas forms: landscape, portrait, square, strip.

[Card views, themes and publishing](/docs/cards/). [Browse the gallery](/apps/#cards).

## Data and privacy

This card uses its configured properties and live card data.

## Properties

For theme, background, accent and position, see [Common properties](/docs/cards/#common-properties).

Set static properties in `params`. Bind `data` to a project card data key for live values; that document holds only dynamic properties. Without a data key, put the complete configuration in `params`. Nested rows describe the contents of their parent property.

### Static properties

| Name | Type | Default | Values and limits | Description |
| --- | --- | --- | --- | --- |
| `title` | string | `"WOD"` | maxLength: `30` |  |
| `name` | string | `""` | maxLength: `40` | The workout's name, for example Fran. |

### Dynamic properties

| Name | Type | Default | Values and limits | Description |
| --- | --- | --- | --- | --- |
| `parts` | array | `[]` | maxItems: `4` |  |
| `parts[].name` | string | `""` | maxLength: `30` | For example Warm-up, Strength or Metcon. |
| `parts[].format` | string | `""` | maxLength: `40` | For example For time, AMRAP 20 or EMOM 12. |
| `parts[].scheme` | string | `""` | maxLength: `20` | The rep scheme shown big, for example 21-15-9 or 5 x 3. |
| `parts[].cap` | string | `""` | maxLength: `24` | A time cap, for example 12 min cap. |
| `parts[].note` | string | `""` | maxLength: `80` |  |
| `parts[].main` | boolean | `false` |  | The part the corner, chip and strip show. The last part is the main one when none is marked. |
| `parts[].moves` | array | `[]` | maxItems: `14` |  |
| `parts[].moves[].reps` | string | `""` | maxLength: `14` | For example 21, 400 m or Max. |
| `parts[].moves[].name` | string |  | minLength: `1`; maxLength: `50`; Required |  |
| `parts[].moves[].load` | string | `""` | maxLength: `24` | For example 43 / 30 kg. |
| `parts[].moves[].scaled` | string | `""` | maxLength: `60` | The scaled option, shown as a muted line under the movement. |

## Canvas example

Add this item to a playlist page’s `primitives`. [Publish the playlist and assign a screen](/docs/cards/#publish-a-card-canvas).

```json
{
  "id": "workout-board",
  "primitive": "card",
  "card": "workout-board",
  "major": 1,
  "params": {
    "theme": "neomustard"
  },
  "rect": {
    "x": 0,
    "y": 0,
    "width": 1920,
    "height": 1080
  },
  "layer": 0,
  "content_fit": "fill",
  "data": "workout-board-main"
}
```

## Write live data

Create this document before showing the card, then replace it to update the screen without republishing. Use the same project as the playlist. Supply your API authorization through the environment; see [API authentication](/docs/authentication/).

```console
curl --request PUT "https://api.screenrig.ai/api/card-data/workout-board-main" \
  --header "Authorization: Bearer $SCREENRIG_TOKEN" \
  --header "ScreenRig-Project: $SCREENRIG_PROJECT" \
  --header "Content-Type: application/json" \
  --data '{"document":{"parts":[]}}'
```
