How kinncj/ohcanada works
TrueNorth is a portrait-first browser game that teaches Canadian citizenship-test material through a side-scrolling journey, with separate Study and Exam modes. The player enters in the browser, plays levels and engages characters or landmarks, and can review lessons or answer practice questions; progress remains in browser storage and can be transferred as a file. The graph preserves the documented learning modes, accessible DOM interface, and game-rendering layer. Some subsystem links are based on README descriptions or module references; unsampled implementation details are not inferred.
Main entry points: main.ts Application startup · journey.ts Journey mode · study-session.ts Study and exam sessions · save-progress.ts Save progress use case
Components 24
App composition
- Application startup
app/bootstrap/main.ts
Learning modes
- Journey mode
app/bootstrap/journey.ts - Quest flow
app/bootstrap/quest.ts - Study mode
app/bootstrap/study.ts - Exam mode
app/bootstrap/exam.ts - Lesson reading
app/application/content/learn.ts - Question bank
app/application/content/question-bank.ts - Study and exam sessions
app/application/use-cases/study-session.ts - Review scheduling
app/application/use-cases/schedule-review.ts - Characters and landmarks
app/bootstrap/engageables.ts - Verified dialogue
app/bootstrap/verified-dialogue.ts
Game and presentation
- Accessible screens
app/ui/shell.ts - English and French copy
app/ui/copy.ts - Phaser game renderer
app/adapters/phaser/level-scene.ts - Character rendering
app/adapters/phaser/sprite-character-renderer.ts - Rive character renderer
app/adapters/rive/character-renderer.ts
Content and domain
- Lesson passages
app/application/content/lesson-passages.ts - Question content
app/application/content/question-bank.ts
Progress and saves
- Progress model
app/domain/entities/progress.ts - Save progress use case
app/application/use-cases/save-progress.ts - Browser progress store
app/adapters/persistence/indexed-db.ts - Save transfer
app/bootstrap/save-transfer.ts
Other components
- Player
- Browser
Connections 30
- Player → Browser: plays in
- Browser → Application startup: loads app
- Application startup → Browser progress store: opens store
app/bootstrap/main.ts - Application startup → Save progress use case: loads progress
app/bootstrap/main.ts - Application startup → Journey mode: composes mode
app/bootstrap/main.ts - Application startup → Exam mode: composes mode
app/bootstrap/main.ts - Player → Journey mode: plays levels
- Journey mode → Phaser game renderer: runs levels
- Player → Study mode: studies subject
- Player → Exam mode: takes practice exam
- Exam mode → Study and exam sessions: uses exam attempt
app/bootstrap/exam.ts - Study mode → Study and exam sessions: runs study session
- Study mode → Review scheduling: schedules review
- Study and exam sessions → Question bank: uses questions
- Review scheduling → Question bank: schedules questions
- Player → Accessible screens: uses screens
- Accessible screens → English and French copy: displays text
- Phaser game renderer → Character rendering: renders characters
- Phaser game renderer → Rive character renderer: optional renderer
- Journey mode → Quest flow: composes quests
- Quest flow → Characters and landmarks: resolves targets
app/bootstrap/quest.ts - Quest flow → Verified dialogue: uses verified lines
app/bootstrap/quest.ts - Player → Characters and landmarks: engages places
- Player → Lesson reading: reads lessons
- Lesson reading → Lesson passages: reads passages
- Study and exam sessions → Question content: uses question bank
- Save progress use case → Progress model: updates progress
- Save progress use case → Browser progress store: persists progress
- Player → Save transfer: exports progress
- Save transfer → Save progress use case: transfers save data