feat: implement MathTree MVP — skill tree, workbench, and progress system

- Interactive skill tree with dagre auto-layout and React Flow (15 math+logic nodes)
- Workbench with math input (LTR/RTL toggle), multiple choice, keyboard shortcuts
- Challenge verification engine with retry-based flow (no answer reveal until 3 failures)
- Scratchpad canvas with freehand drawing, text boxes, eraser, colors, and stroke sizes
- "Aprende primero" collapsible explanations on introductory challenges
- XP/level system, daily streaks, 7 achievements, progress persistence via Zustand
- Profile page with stats and achievement gallery
- Sidebar navigation with XP bar and streak badge

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jose Luis Montañes
2026-03-26 01:53:45 +01:00
parent a2846420a3
commit f9f74d3f19
32 changed files with 3031 additions and 67 deletions

16
package-lock.json generated
View File

@@ -9,6 +9,7 @@
"version": "0.1.0",
"dependencies": {
"@base-ui/react": "^1.3.0",
"@dagrejs/dagre": "^3.0.0",
"@types/katex": "^0.16.8",
"@xyflow/react": "^12.10.1",
"class-variance-authority": "^0.7.1",
@@ -514,6 +515,21 @@
}
}
},
"node_modules/@dagrejs/dagre": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@dagrejs/dagre/-/dagre-3.0.0.tgz",
"integrity": "sha512-ZzhnTy1rfuoew9Ez3EIw4L2znPGnYYhfn8vc9c4oB8iw6QAsszbiU0vRhlxWPFnmmNSFAkrYeF1PhM5m4lAN0Q==",
"license": "MIT",
"dependencies": {
"@dagrejs/graphlib": "4.0.1"
}
},
"node_modules/@dagrejs/graphlib": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@dagrejs/graphlib/-/graphlib-4.0.1.tgz",
"integrity": "sha512-IvcV6FduIIAmLwnH+yun+QtV36SC7mERqa86aClNqmMN09WhmPPYU8ckHrZBozErf+UvHPWOTJYaGYiIcs0DgA==",
"license": "MIT"
},
"node_modules/@dotenvx/dotenvx": {
"version": "1.57.2",
"resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.57.2.tgz",