add language learner project
Some checks failed
Test and deploy staging / staging (push) Has been cancelled

Dutch and Korean (explained in English) and English (explained in Dutch)
from A1 to C1, with a Hangul level for Korean. Lessons with notes, words
and sentences generate multiple-choice, typing, sentence building, cloze,
listening and matching exercises. Endless challenges: a seeded daily
challenge, sprint, survival, mixed practice, level tests, spaced-repetition
reviews and generated drills (numbers, clock times, de/het, plurals, Dutch
and Korean conjugation, particles, Hangul reading, irregular verbs).
Progress is stored in localStorage with export/import.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-24 17:34:56 +00:00
parent afb1f191df
commit 438623d857
69 changed files with 12669 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ import { db } from '$lib/server/db';
import { blogArticles } from '$lib/server/db/schema';
import { SITE_ORIGIN } from '$lib/seo';
import { races } from '$lib/derby/races';
import { COURSES } from '$lib/language-learner/courses';
import { eq } from 'drizzle-orm';
import type { RequestHandler } from './$types';
@@ -14,7 +15,9 @@ const staticPaths = [
'/projects/animaldex',
'/projects/derby',
'/projects/spotify-beatmap-finder',
'/projects/world-opinions'
'/projects/world-opinions',
'/projects/language-learner',
...COURSES.map((c) => `/projects/language-learner/${c.code}`)
];
function escapeXml(value: string): string {