Product blueprint

A secure, scalable SkillTrack platform.

This implementation uses GenMB Authentication and user-scoped KV persistence for the interactive workspace. A production institution deployment should move shared class records and authorization checks to server-side functions backed by a relational database with row-level policies.

Recommended stack

Frontend: React, TypeScript, Vite, Tailwind CSS, accessible SVG charts.
Backend: serverless functions for protected mutations and score calculation.
Database: PostgreSQL with row-level security and audit fields.
Auth & hosting: GenMB Authentication and managed static/serverless hosting.

Role boundary

Faculty should only query classes they own or administer. Students should only query records where student.auth_user_id = current_user_id. Invite acceptance links a verified identity to a student record; it never grants roster access.

Data model

Core relational schema

TableKey fieldsPurpose
facultyid, auth_user_id, name, emailCore class and identity relationship.
departmentsid, faculty_id, nameCore class and identity relationship.
classesid, department_id, name, academic_year, sectionCore class and identity relationship.
studentsid, auth_user_id, class_id, name, email, roll_noCore class and identity relationship.
attributesid, class_id, position 1–6, name, data_sourceCore class and identity relationship.
daily_logsid, student_id, topic, category, confidence, notes, created_atStudent learning activity feed.
attribute_scoresid, student_id, attribute_id, score 0–100, calculated_atFast chart reads and history.

Protected API surface

CRUD and calculation endpoints

  • POST /classes · create class
  • GET /classes/:id · class dashboard
  • PATCH /classes/:id · update class details
  • POST /classes/:id/students · add student
  • POST /classes/:id/students/import · validate and import CSV
  • PATCH /students/:id/transfer · transfer class
  • DELETE /classes/:id/students/:id · remove student
  • PUT /classes/:id/attributes · replace six attribute configuration
  • GET /students/me · private student dashboard
  • POST /students/me/logs · add daily learning log
  • GET /students/me/scores · personal score history

Scoring flow

A daily log is stored against the authenticated student, then a server-side calculator updates the relevant attribute score according to the faculty-selected source: learning log confidence, attendance percentage, project evidence, or a faculty rating. Class radar values are aggregated from those protected student scores.

Built with GenMB
Built with GenMB