How mehedi-hasan-2426/sprichio works
Sprichio is a German-practice web app. Learners enter through a public introduction, take a placement test, then practise across 12 everyday topics and review checkpoints; grammar lessons and spaced-repetition flashcards provide separate practice paths. Progress is kept in the guest’s browser or synced for approved accounts. The graph reflects README capabilities and sampled call sites; some feature internals are represented by their existing directories where source was not sampled.
Main entry points: protect.ts Course gate · ProgressContext.tsx Progress context · auth.ts Google sign-in · [section].tsx Topic lessons
Components 27
Entry and access
- Public introduction
pages/index.tsx - Placement test
pages/einstufung.tsx - Access policy
src/lib/access.ts - Google sign-in
src/server/auth.ts - Course gate
src/server/protect.ts
Course learning
- Learning dashboard
pages/learn.tsx - Course loader
src/server/load.ts - Topic lessons
pages/woche/[n]/[section].tsx - Lesson content
src/components/SectionView.tsx - Exercise interaction
src/components/ItemView.tsx
Practice features
- Grammar lessons
pages/grammatik/[...topic].tsx - Grammar catalogue
src/content/grammar-lessons.ts - Spaced flashcards
pages/karten.tsx - Vocabulary content
src/content/knowledge.ts - Checkpoints
pages/checkpoint/[n].tsx - Writing tasks
src/components/WritingTask.tsx - Grammar practice
src/components/GrammarPractice.tsx
Progress and sync
- Progress context
src/state/ProgressContext.tsx - Progress model
src/lib/progress.ts - Review schedule
src/lib/leitner.ts - Sync coordinator
src/lib/progress-sync.ts - Progress transport
src/lib/progress-client.ts
Server services
- Progress API
src/server/progress-api.ts - Cloud progress store
src/server/progress-store.ts - Google identity
- Neon Postgres
Other components
- Learner
Connections 27
- Learner → Public introduction: opens
- Public introduction → Placement test: starts placement
- Placement test → Topic lessons: continues into topics
- Learner → Learning dashboard: enters course
- Learning dashboard → Course gate: requires access
src/server/protect.ts - Course gate → Google sign-in: checks session
src/server/protect.ts - Google sign-in → Access policy: checks eligibility
src/server/auth.ts - Google sign-in → Google identity: authenticates with
src/server/auth.ts - Course gate → Course loader: loads navigation
src/server/protect.ts - Topic lessons → Course gate: guards page
pages/woche/[n]/[section].tsx - Topic lessons → Lesson content: renders lesson
pages/woche/[n]/[section].tsx - Lesson content → Exercise interaction: renders exercises
- Learner → Grammar lessons: chooses grammar
- Grammar lessons → Grammar catalogue: presents lessons
pages/grammatik/[...topic].tsx - Grammar lessons → Grammar practice: renders practice
pages/grammatik/[...topic].tsx - Learner → Spaced flashcards: reviews cards
- Spaced flashcards → Vocabulary content: loads vocabulary
pages/karten.tsx - Learner → Checkpoints: takes checkpoint
- Checkpoints → Writing tasks: renders writing task
pages/checkpoint/[n].tsx - Exercise interaction → Progress model: records answers
src/components/ItemView.tsx - Progress context → Progress model: updates progress
src/state/ProgressContext.tsx - Progress context → Review schedule: uses review schedule
src/state/ProgressContext.tsx - Progress context → Sync coordinator: coordinates sync
src/state/ProgressContext.tsx - Sync coordinator → Progress transport: reads and writes
src/lib/progress-client.ts - Progress transport → Progress API: requests progress
src/lib/progress-client.ts - Progress API → Cloud progress store: loads and saves
src/server/progress-api.ts - Cloud progress store → Neon Postgres: persists progress