feat: full feature buildout — streaming, i18n, mastery map, admin, jobs

Progressive lesson streaming via onSegment callback (fixes SSE for non-English
users — locale was shadowed in lesson-reader useEffect). Adds: BullMQ workers,
Redis stream buffer, token budget enforcement, Langfuse tracing, golden-eval
runner, Playwright e2e scaffolding, lesson depth/locale/preferences schema,
mastery map UI, admin panel (blueprints/users/reports/quality/misconceptions),
image queries, source citations, view transitions, reading animations, i18n
(next-intl), PDF export, surprise endpoint, and 402 passing unit tests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-08 22:08:14 +02:00
parent 4e38b5a791
commit 5bf6013460
161 changed files with 27152 additions and 1161 deletions
+10 -1
View File
@@ -19,7 +19,7 @@
"test:golden": "tsx --env-file=.env.local tests/golden/run-grading-eval.ts",
"test:golden:misconceptions": "tsx --env-file=.env.local tests/golden/run-misconception-eval.ts",
"test:golden:content": "tsx --env-file=.env.local tests/golden/run-content-eval.ts",
"workers": "tsx --env-file=.env.local jobs/index.ts"
"workers": "tsx --env-file=.env.local jobs/bootstrap.ts"
},
"dependencies": {
"@ai-sdk/amazon-bedrock": "^4.0.119",
@@ -33,6 +33,7 @@
"@ai-sdk/provider": "^1.0.0",
"@ai-sdk/xai": "^3.0.96",
"@auth/drizzle-adapter": "^1.11.2",
"@react-pdf/renderer": "^4.5.1",
"@upstash/ratelimit": "^2.0.8",
"@upstash/redis": "^1.38.0",
"ai": "^4.3.0",
@@ -43,18 +44,26 @@
"langfuse": "^3.0.0",
"next": "^15.3.0",
"next-auth": "5.0.0-beta.31",
"next-intl": "^4.13.0",
"nodemailer": "^9.0.1",
"ollama-ai-provider": "^1.2.0",
"pg": "^8.13.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-markdown": "^10.1.0",
"remark": "^15.0.1",
"remark-breaks": "^4.0.0",
"remark-gfm": "^4.0.1",
"remark-parse": "^11.0.0",
"server-only": "^0.0.1",
"unified": "^11.0.5",
"zod": "^3.24.0"
},
"devDependencies": {
"@playwright/test": "^1.49.0",
"@tailwindcss/postcss": "^4.1.0",
"@types/bcryptjs": "^3.0.0",
"@types/mdast": "^4.0.4",
"@types/node": "^22.0.0",
"@types/nodemailer": "^8.0.1",
"@types/pg": "^8.11.0",