Skip to main content

Programme (Animation vs. Everything)

info

This page covers the Animation vs. Everything (AvE) feature, a structured four-phase Year 7 maths, Python, and animation programme that runs on the Raspberry Pi 5 and is surfaced as a first-class part of the homeschool platform.

School Platform series

  1. School Platform
  2. Architecture
  3. AI features
  4. Calendar integration
  5. Programme - You are here
  6. Explainers
  7. Schedule
  8. Integrations
  9. Deployment

What it is

AvE is a single student-wide journey made of four phases (Awakening, Discovery, Expansion, Creator). Each phase contains multiple modules, each module contains parts (logical groupings), and each part contains numbered steps (individual tasks). Both phases and modules carry badges that are earned as work is completed.

The programme uses pace-neutral terminology ("Part N / Step N") rather than time-pressure language ("Week N / Day N"). All content is British English, gender-neutral, and speaks directly to the learner.

Routes

RoutePurpose
/programmeLanding with all four phases, wall-chart thumbnails, summary tiles, recent badges, and a Print folio button. Smart-redirects to the active phase if work is in progress.
/programme/[phase]Tabbed phase detail (Overview, Modules, Badges, Setup, Explainers).
/programme/folioPrintable moderator folio of all four phases with earned badges.
/programme/explainer/[code]Popup window for interactive visual explainers (see Explainers).

The sidebar has a single Programme entry; the smart-redirect handles navigating to where the student left off.

Content architecture

Each task has two content fields gated by authentication:

FieldAudienceVisible to
childContentStudentEveryone (anonymous on LAN)
parentContentParent/teacherAdmin login only

Child content provides discovery instructions that guide problem-solving without giving answers. Parent content provides full solutions, hints, and conversation starters. This separation ensures the child cannot see answers in the browser DOM.

Data model

The AvE hierarchy in the database:

Key models:

ModelPurpose
AvePhaseFour phases with status, overview markdown, and notes
AveModuleMultiple per phase with goal, maths concept, Python skill
AveTaskIndividual steps with child/parent content, command blocks, related files
AveBadge125+ badges across five types (Mini, Project, Boss, Secret, Setup)
AveTaskLearningAreaLinks tasks to WA curriculum areas for dashboard counts

Badge system

TypeScopeEarning method
SetupPhase-levelCompleting specific setup tasks (Pi boot, first git push)
SecretPhase-levelDetector predicates (never from task completion directly)
MiniModule-levelCompleting specific small in-module tasks
ProjectModule-levelCompleting the module's named project
BossModule-levelCompleting the final boss task for a module

Secret badges show an italic hint teaser while unearned ("The clock told the truth. You ignored it.") so the student knows something is there without being spoiled.

Task completion ripple

Completion is one-way: unticking a task does not demote badge or module status. Parent manual overrides always win.

Tab system

The phase detail page (/programme/[phase]) has five tabs:

TabContent
OverviewWall chart (expandable PDF), student overview, parent overview, phase notes
ModulesChild-facing tasks grouped by part with collapsible sections, completion pills, and inline notes
BadgesPhase-wide progress bar, all badges grouped Secret, Setup, then by module
SetupParent-prep tasks with structured command blocks (GitLab, venv, IDE setup)
ExplainersCard grid of all interactive walkthroughs registered for this phase

Only the first non-completed module auto-expands on the Modules tab. Completed parts auto-collapse with a green pill.

Learning Journey

A collapsible card at the top of the Modules tab shows:

  • Which steps have been completed across all modules
  • The cumulative command reference learned so far
  • Progress statistics

Each module (from Module 2 onward) shows a "What you already know" section listing the previous module's command reference.

Ask Bob programme context

Each expanded task shows an "Ask Bob about this step" button that opens an AI chat with full awareness of:

  • The current step's child instructions
  • Cumulative commands learned so far
  • The parent solution (fetched server-side, never exposed to the client)

Responses use Socratic guardrails: hints and questions only, never revealing answers directly.

Content editor

Admin users can edit childContent, parentContent, and commandReference directly from the programme page via an inline editor with:

  • Edit/Preview toggle per field
  • Validation for non-empty content and balanced code fences
  • Changes persist immediately to the database

Seed safety

The seed script (prisma/seed-ave*.ts) runs on every deploy but uses a safe-fields-only policy:

  • Never overwrites earned, earnedAt, startedAt, completedAt, notes, or status
  • Title, description, and content updates are replayable
  • To force-overwrite all content from seed data, set SEED_FORCE_CONTENT=true

This means admin-edited content survives re-deploys unless explicitly overridden.