Skip to content
← All help

Operator

Keeping courses & content current

Full runbook: OPERATING.md in the repo. The essentials:

The golden rule

Code alone doesn't change what learners see, courses render from the database. After a merge to main, two GitHub workflows do it for you: Migrate production database applies new migrations, then Seed production courses re-runs seed:courses, refreshes the course chat's source index for the courses whose files changed, and embeds any new or changed lesson of a CYOA course for its crossroads (pnpm cyoa:index:prod --list shows what still needs it). Other seeds are still run by hand:

pnpm db:migrate:prod        # only if the automatic run failed
pnpm seed:courses:prod      # only if the automatic run failed
pnpm seed:<another seed>

When a lesson was edited in the app

A seed never overwrites a lesson someone edited in the app since the last seed. It leaves it as it is and the course's instructor (and the platform owner) see a warning on Teach on every visit. Open the course's Teach page, compare the app's text with the course file's, and choose Keep the app edit (the warning stays quiet until the course file changes again) or Take the course file's version.

Which seed owns what

  • seed:courses, civics (incl. all state-civics), the AI ladders, Hoodoo, Ed.L.D., cyber, and most authored courses.
  • seed:languages, Spanish / French / Portuguese / Italian.
  • seed:langchain, the 3 LangGraph courses.
  • seed:health, NASM / ECS / Read-Your-Body. seed:speedway, ElementaryMBA.
  • seed:faa, FAA Part 107. seed:bvc:real, Better Vice Club. seed:map, the maps.

Every seed is idempotent (upserts by slug, skipping lessons edited in the app), so re-running is always safe. On a fresh database, run seed:tenants first, then the content seeds.

Editing without a seed

Lesson text, glossary, sources, and quick-recall prompts can be edited in-app on the Curriculum tab at /teach/<courseId>, those save straight to the database, no seed needed.

Learner reports

pnpm reports:list (or /admin/reports) shows what learners filed via "Report a problem".

Video tutorial scriptnot written yet

Nobody has written the narration for this one yet. It is listed here so the gap is visible rather than forgotten; an invented script would read as approved copy.