Adaptive mathematics learning platform — API-first backend for Web, iOS & Android.
Health: GET https://mathmind-api.uw.astrona.me/health — interactive docs: /docs
POST https://mathmind-api.uw.astrona.me/api/v1/auth/register { "email": "...", "password": "...", "displayName": "..." }
POST https://mathmind-api.uw.astrona.me/api/v1/auth/login { "email": "...", "password": "..." }
GET https://mathmind-api.uw.astrona.me/api/v1/me Authorization: Bearer <token>
All further endpoints require Authorization: Bearer <token>. Identity is always resolved from the JWT — user IDs sent from clients are never trusted.
| GET/api/v1/families | Your families with children |
| GET/api/v1/students | List your children |
| POST/api/v1/students | Create a child — { displayName, schoolYear } |
| PATCH/api/v1/students/:id | Update a child |
| GET/api/v1/skills | Skill graph with foundational scores |
| GET/api/v1/students/:id/skill-map | Per-student skill states |
| POST/api/v1/students/:id/sessions | Start session — { sessionType: "practice"|"diagnostic", skillId? } |
| GET/api/v1/sessions/:id/next | Next adaptive exercise (structured, no HTML) |
| POST/api/v1/exercises/:id/attempts | Submit answer — { sessionId, answer: { value }, responseTimeMs }; supports Idempotency-Key |
| POST/api/v1/exercises/:id/hints | Progressive hint (1–3) |
| POST/api/v1/students/:id/assignments | Create — { title, items: [{ skillId, count }] } |
| GET/api/v1/students/:id/dashboard | Strengths, needs-attention, trends, focus |
| GET/api/v1/students/:id/progress | Aggregate progress |
# 1. register parent
TOKEN=$(curl -s -X POST https://mathmind-api.uw.astrona.me/api/v1/auth/register \
-H 'content-type: application/json' \
-d '{"email":"demo@example.com","password":"super-secret-9"}' | jq -r .token)
# 2. create child
curl -s -X POST https://mathmind-api.uw.astrona.me/api/v1/students -H "authorization: Bearer $TOKEN" \
-H 'content-type: application/json' -d '{"displayName":"Emma","schoolYear":5}'
# 3. start a session & get the first adaptive exercise
curl -s -X POST https://mathmind-api.uw.astrona.me/api/v1/students/$STUDENT/sessions \
-H "authorization: Bearer $TOKEN" -H 'content-type: application/json' \
-d '{"sessionType":"practice"}'