# Stan Website This is my personal website, including: - Contact info / social links - About me - Blog posts + comments - Projects like Animaldex, CatchEmAll ## Language learner `/projects/language-learner` teaches Dutch and Korean (explained in English) and English (explained in Dutch), from A1 to C1. Korean starts with a Hangul level. It runs entirely in the browser: no database tables, migrations or API keys. - Course content lives in `src/lib/language-learner/courses//.ts` as compact `target | translation | note` lines, plus markdown notes and multiple-choice grammar questions (`prompt | answer | wrong; wrong | explanation`). Exercises (choice, typing, sentence building, fill-in-the-blank, listening, matching) are generated from that data. `content.test.ts` validates every lesson. - Endless drills are generated by code in `src/lib/language-learner/drills/`: number words, Dutch/English clock times, de/het, plurals, Dutch and Korean conjugation (a rule-based Korean conjugator handling the ㅂ/ㄷ/르/ㅅ/ㅎ irregulars), Korean particles and counters, Hangul reading, English irregular verbs, comparatives and a/an. - Challenges: a seeded daily challenge (first score of the day counts), 60-second sprint, survival with three lives, mixed practice, level tests that mark a level as done at 80%, and spaced-repetition reviews (simplified SM-2). - Audio uses the browser's speech synthesis, so listening exercises appear only when the device has a voice for the language. Romanization of Korean is approximate Revised Romanization. - Progress, streaks and settings are stored in `localStorage` (`language-learner-v1`), per browser. Export/import on the overview page moves them between devices.