An intelligent tutoring web app for practicing a focused subset of Latvian grammar (noun case usage and inflection).
The app serves one question at a time on /, tracks mastery by question type, and unlocks harder question types as the learner improves.
- Intelligent tutoring flow with mastery-based progression
- Session-backed mastery tracking (HTTP-only cookie)
- Four interactive question types:
CaseIdentification(click the word with the target case)FillInTheLetter(complete the noun ending)FillInTheWord(type the full declined form)DragAndDrop(build a Latvian sentence from word tiles)
- Explicit grammatical feedback:
- Target case is shown in relevant exercises
- Incorrect answers can report which case was actually formed (when recognizable)
- Built-in case chart reference on the main page (toggleable)
Mastery is tracked per question type and clamped to a threshold.
- Correct answer: mastery for active type increases by 1
- Incorrect answer: mastery for active type decreases by 1
- Unlock condition: when a type reaches threshold, the next type unlocks
- Persistence: stored in a session cookie via server endpoints
Current order is defined in src/lib/its.ts.
- SvelteKit
- TypeScript
- deklinators for Latvian noun declension logic
- Node.js 18+ (recommended modern LTS)
- npm
npm installnpm run devOpen the local URL printed by Vite (usually http://localhost:5173).
src/routes/+page.svelte- main ITS learner page UI and client-side flowsrc/routes/+page.server.ts- loads mastery from session cookiesrc/routes/api/mastery/+server.ts- API for grade updates/reset and cookie writessrc/lib/its.ts- question type ordering, threshold, mastery helperssrc/lib/question-pools.ts- question pools for each typesrc/lib/components/- interactive question componentssrc/lib/assets/case_chart.png- reference chart shown on/