# auraluvsu/alc architecture

> Architecture diagram of the GitHub repository auraluvsu/alc, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/auraluvsu/alc
- Repository: https://github.com/auraluvsu/alc

## Overview

Aurora’s Learning Centre is a browser-based school for programming: learners choose a subject, read structured lessons with code comparisons and checkpoints, take module quizzes, and track progress locally. The shared course shell presents course content and reference pages; course-specific data supplies lessons, dictionaries, standard-library guides, and comparison notes. The README also documents Design notes and the Data → Machine Learning → Deep Learning sequence. The graph follows shown imports and calls; unsampled course-data wiring is represented only where documented.

Main entry points: [`src/tour/CourseShell.tsx`](https://github.com/auraluvsu/alc/blob/master/src/tour/CourseShell.tsx) (Course shell), [`src/components/Blocks.tsx`](https://github.com/auraluvsu/alc/blob/master/src/components/Blocks.tsx) (Lesson renderer), [`src/App.tsx`](https://github.com/auraluvsu/alc/blob/master/src/App.tsx) (App routing), [`src/home/Home.tsx`](https://github.com/auraluvsu/alc/blob/master/src/home/Home.tsx) (Course homepage)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_app["App routing<br/>[App.tsx]"]
  node_router["Client router<br/>[router.tsx]"]
  node_home["Course homepage<br/>[Home.tsx]"]
end

subgraph group_learning["Course experience"]
  node_shell["Course shell<br/>[CourseShell.tsx]"]
  node_blocks["Lesson renderer<br/>[Blocks.tsx]"]
  node_highlight["Text highlighter<br/>[highlight.tsx]"]
  node_bridge["Language comparisons<br/>[Bridge.tsx]"]
  node_quiz["Module quizzes<br/>[Quiz.tsx]"]
  node_shuffle["Answer shuffling<br/>[shuffle.ts]"]
  node_reference["Reference pages<br/>[Standard.tsx]"]
  node_design["Design notes<br/>[DesignPage.tsx]"]
end

subgraph group_content["Course material"]
  node_catalog["Course catalogue<br/>[index.ts]"]
  node_course["Course configuration<br/>[course.ts]"]
  node_lessons["Lesson content"]
  node_model["Content model<br/>[types.ts]"]
  node_dictionary["Course dictionaries"]
  node_standard["Standard guides<br/>[standard.ts]"]
  node_site["Site catalogue data<br/>[site.ts]"]
end

subgraph group_state["Reader state"]
  node_progress[("Progress storage<br/>[progress.ts]")]
end

node_reader(("Learner"))

node_reader -->|"navigates"| node_router
node_router -->|"provides path"| node_app
node_app -->|"selects course"| node_catalog
node_app -->|"renders home"| node_home
node_app -->|"renders course"| node_shell
node_home -->|"reads courses"| node_catalog
node_home -->|"reads progress"| node_progress
node_catalog -->|"uses course type"| node_course
node_shell -->|"renders lessons"| node_blocks
node_shell -->|"renders comparisons"| node_bridge
node_shell -->|"renders quizzes"| node_quiz
node_shell -.->|"displays course material"| node_lessons
node_blocks -->|"renders block types"| node_model
node_blocks -->|"formats inline text"| node_highlight
node_blocks -->|"renders language chips"| node_bridge
node_blocks -->|"shuffles options"| node_shuffle
node_quiz -->|"shuffles answers"| node_shuffle
node_quiz -->|"renders answers"| node_blocks
node_quiz -->|"records completion"| node_progress
node_shell -->|"reads progress"| node_progress
node_shell -->|"shows reference"| node_reference
node_shell -->|"shows design page"| node_design
node_reference -->|"renders guide"| node_standard
node_reference -.->|"offers dictionary"| node_dictionary
node_home -->|"lists subjects"| node_site
node_course -.->|"configures dictionary"| node_dictionary
node_course -.->|"configures guide"| node_standard

click node_app "https://github.com/auraluvsu/alc/blob/master/src/App.tsx"
click node_router "https://github.com/auraluvsu/alc/blob/master/src/router.tsx"
click node_home "https://github.com/auraluvsu/alc/blob/master/src/home/Home.tsx"
click node_catalog "https://github.com/auraluvsu/alc/blob/master/src/courses/index.ts"
click node_course "https://github.com/auraluvsu/alc/blob/master/src/course.ts"
click node_shell "https://github.com/auraluvsu/alc/blob/master/src/tour/CourseShell.tsx"
click node_lessons "https://github.com/auraluvsu/alc/tree/master/src/content"
click node_model "https://github.com/auraluvsu/alc/blob/master/src/content/types.ts"
click node_blocks "https://github.com/auraluvsu/alc/blob/master/src/components/Blocks.tsx"
click node_highlight "https://github.com/auraluvsu/alc/blob/master/src/components/highlight.tsx"
click node_bridge "https://github.com/auraluvsu/alc/blob/master/src/components/Bridge.tsx"
click node_quiz "https://github.com/auraluvsu/alc/blob/master/src/components/Quiz.tsx"
click node_shuffle "https://github.com/auraluvsu/alc/blob/master/src/components/shuffle.ts"
click node_progress "https://github.com/auraluvsu/alc/blob/master/src/progress.ts"
click node_dictionary "https://github.com/auraluvsu/alc/tree/master/src/content"
click node_standard "https://github.com/auraluvsu/alc/blob/master/src/content/standard.ts"
click node_reference "https://github.com/auraluvsu/alc/blob/master/src/tour/Standard.tsx"
click node_design "https://github.com/auraluvsu/alc/blob/master/src/tour/DesignPage.tsx"
click node_site "https://github.com/auraluvsu/alc/blob/master/src/site.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_router,node_home toneBlue
class node_shell,node_blocks,node_highlight,node_bridge,node_quiz,node_shuffle,node_reference,node_design toneAmber
class node_catalog,node_course,node_lessons,node_model,node_dictionary,node_standard,node_site toneMint
class node_progress toneRose
class node_reader toneIndigo
```

## Components

### Application

- [App routing](https://github.com/auraluvsu/alc/blob/master/src/App.tsx): `src/App.tsx`
- [Client router](https://github.com/auraluvsu/alc/blob/master/src/router.tsx): `src/router.tsx`
- [Course homepage](https://github.com/auraluvsu/alc/blob/master/src/home/Home.tsx): `src/home/Home.tsx`

### Course experience

- [Course shell](https://github.com/auraluvsu/alc/blob/master/src/tour/CourseShell.tsx): `src/tour/CourseShell.tsx`
- [Lesson renderer](https://github.com/auraluvsu/alc/blob/master/src/components/Blocks.tsx): `src/components/Blocks.tsx`
- [Text highlighter](https://github.com/auraluvsu/alc/blob/master/src/components/highlight.tsx): `src/components/highlight.tsx`
- [Language comparisons](https://github.com/auraluvsu/alc/blob/master/src/components/Bridge.tsx): `src/components/Bridge.tsx`
- [Module quizzes](https://github.com/auraluvsu/alc/blob/master/src/components/Quiz.tsx): `src/components/Quiz.tsx`
- [Answer shuffling](https://github.com/auraluvsu/alc/blob/master/src/components/shuffle.ts): `src/components/shuffle.ts`
- [Reference pages](https://github.com/auraluvsu/alc/blob/master/src/tour/Standard.tsx): `src/tour/Standard.tsx`
- [Design notes](https://github.com/auraluvsu/alc/blob/master/src/tour/DesignPage.tsx): `src/tour/DesignPage.tsx`

### Course material

- [Course catalogue](https://github.com/auraluvsu/alc/blob/master/src/courses/index.ts): `src/courses/index.ts`
- [Course configuration](https://github.com/auraluvsu/alc/blob/master/src/course.ts): `src/course.ts`
- [Lesson content](https://github.com/auraluvsu/alc/tree/master/src/content): `src/content`
- [Content model](https://github.com/auraluvsu/alc/blob/master/src/content/types.ts): `src/content/types.ts`
- [Course dictionaries](https://github.com/auraluvsu/alc/tree/master/src/content): `src/content`
- [Standard guides](https://github.com/auraluvsu/alc/blob/master/src/content/standard.ts): `src/content/standard.ts`
- [Site catalogue data](https://github.com/auraluvsu/alc/blob/master/src/site.ts): `src/site.ts`

### Reader state

- [Progress storage](https://github.com/auraluvsu/alc/blob/master/src/progress.ts): `src/progress.ts`

### Other components

- **Learner**

## Connections

- Learner → Client router: navigates (evidence: `src/router.tsx`)
- Client router → App routing: provides path (evidence: `src/App.tsx`)
- App routing → Course catalogue: selects course (evidence: `src/App.tsx`)
- App routing → Course homepage: renders home (evidence: `src/App.tsx`)
- App routing → Course shell: renders course (evidence: `src/App.tsx`)
- Course homepage → Course catalogue: reads courses (evidence: `src/home/Home.tsx`)
- Course homepage → Progress storage: reads progress (evidence: `src/home/Home.tsx`)
- Course catalogue → Course configuration: uses course type (evidence: `src/courses/index.ts`)
- Course shell → Lesson renderer: renders lessons (evidence: `src/tour/CourseShell.tsx`)
- Course shell → Language comparisons: renders comparisons (evidence: `src/tour/CourseShell.tsx`)
- Course shell → Module quizzes: renders quizzes (evidence: `src/tour/CourseShell.tsx`)
- Course shell → Lesson content: displays course material (evidence: `README.md`)
- Lesson renderer → Content model: renders block types (evidence: `src/components/Blocks.tsx`)
- Lesson renderer → Text highlighter: formats inline text (evidence: `src/components/Blocks.tsx`)
- Lesson renderer → Language comparisons: renders language chips (evidence: `src/components/Blocks.tsx`)
- Lesson renderer → Answer shuffling: shuffles options (evidence: `src/components/Blocks.tsx`)
- Module quizzes → Answer shuffling: shuffles answers (evidence: `src/components/Quiz.tsx`)
- Module quizzes → Lesson renderer: renders answers (evidence: `src/components/Quiz.tsx`)
- Module quizzes → Progress storage: records completion (evidence: `src/components/Quiz.tsx`)
- Course shell → Progress storage: reads progress (evidence: `src/tour/CourseShell.tsx`)
- Course shell → Reference pages: shows reference (evidence: `src/tour/CourseShell.tsx`)
- Course shell → Design notes: shows design page (evidence: `src/tour/CourseShell.tsx`)
- Reference pages → Standard guides: renders guide (evidence: `src/tour/Standard.tsx`)
- Reference pages → Course dictionaries: offers dictionary (evidence: `README.md`)
- Course homepage → Site catalogue data: lists subjects (evidence: `src/home/Home.tsx`)
- Course configuration → Course dictionaries: configures dictionary (evidence: `README.md`)
- Course configuration → Standard guides: configures guide (evidence: `README.md`)
