Home
Theme

Admin

The /admin interface for browsing exercise banks, previewing exercises, and assembling workouts.

Overview

The admin page is a friendly interface that makes writing exercises and workouts easier. It is intended for use by developers and instructors and is only available on the development server (see Architecture for details about how to run the development server.)

Exercise bank browser

Navigate to /admin to see a list of all exercise banks grouped by language. Each bank is a file in the exercises/ directory (e.g. js-loops.js, py-variables.js).

Click any bank chip to open the bank editor at /admin/bank/[bank-name]. The editor shows every exercise in the bank with a live preview rendered using the same components the students see. You can edit exercise content and see the result immediately.

Workout assembler

Navigate to /admin/workout/[workout-slug] to view or edit a workout definition. The assembler shows the ordered list of exercise IDs in the workout and lets you preview each one in context.

Workout files live in the workouts/ directory. Each file exports an object with a lang, an exercises array of exercise IDs (or repeat objects), and optionally a pairedWith reference to a companion workout.

Exercise IDs

Exercise IDs follow the pattern [bank-name]-[zero-padded-number], e.g. js-loops-001. The bank name matches the filename in exercises/ (without the .js extension). IDs are stable — renaming or reordering exercises in a bank file does not change existing IDs.

Adding exercises

To add a new exercise, add a new keyed entry to the appropriate file in exercises/. Choose the next sequential ID. Then add the ID to any workout definitions in workouts/ that should include it.

See the Contributing guide for the exercise format and the full template placeholder reference.