Math
A classroom and assignment platform with Convex-backed collaboration — teachers author questions, students play games, and analytics surface struggling learners early.
Problem
Elementary math practice apps optimize for engagement but lose classroom context: who assigned what, which students are stuck, and whether content came from an algorithm or manual curation. Teachers need orchestration, not another isolated quiz app.
Math is a TanStack Router frontend with Convex as the realtime backend — roles, question schemas, game slots, notifications, and teacher analytics in one typed schema.
Domain model
- Teacher and student roles with category validators for add/subtract, multiply, and divide tracks
- Structured questions with choices, difficulty, and source type (algorithm, AI, manual)
- Notification types for student activity, feedback loops, at-risk signals, and content gaps
- Convex auth tables integrated with domain tables for sessions and progress
- Game completion and high-score events wired into teacher-facing alerts
export const categoryValidator = literals("ADD_SUB", "MULT", "DIV");
export const roleValidator = literals("TEACHER", "STUDENT");
export const difficultyValidator = literals("easy", "medium", "hard");
export const sourceTypeValidator = literals("algorithm", "ai", "manual");
export const questionValidator = v.object({
question: v.string(),
choices: v.array(choiceValidator),
});