Skip to content

Testing the app

Prerequisites

# 1. Start the full stack (db → seed → import → app → worker)
cd nexora
docker compose up --build -d

# 2. Check
docker compose ps
# App on http://localhost:5173

The import is a one-shot: if already done (marker processing/data/.import_done), it will not rerun. To force a re-import:

rm processing/data/.import_done && docker compose up import

Standard demo walkthrough (5 min)

  1. Log in → [email protected] / demo1234 (or click the account on the login page).
  2. Pick a lesson: Class selector → Course button (“Choose a lesson…”) → the calendar opens → click a day → Open this lesson →. !!! tip "Shortcut" The selection is remembered in localStorage (nexora.dashboard.selection) and URL-driven: /dashboard?class=1&session=1 loads the 1st lesson (islam_march_01).
  3. Read the class metrics (“Class average” row), then click a student.
  4. Open the student panel on the right: level, domains, attention metrics, cumulative history, recommendation, actions (IEP, parent report, full report, save to plan).
  5. â–¶ Watch video: player with synchronized timeline student / class.
  6. ↓ Export PDF: class teaching report.
  7. Tabs: History, Stats, Messages, Follow-Up (and âš™ Admin as admin).

Priority checklist

  • [ ] Login of the 6 accounts (4 roles) — different badges / tabs per role.
  • [ ] Class → course selection → the 7 metrics display (no “—”).
  • [ ] Engagement chart: colored segments by level, minute ticks.
  • [ ] Students table: sorting, flag âš  / 🚨, trend ▲▼.
  • [ ] Student panel: 6 domain bars, attention grid, cumulative (5 sessions), “Tomorrow's” recommendation.
  • [ ] Metric tooltips “?”: hover = explanation, click = doc (new tab).
  • [ ] Video: playback + seek (HTTP Range 206), timeline follows the cursor.
  • [ ] PDF export of the class report.
  • [ ] Save to plan → the student appears in the Follow-Up tab.
  • [ ] Stats: average by subject and by day for the selected month.
  • [ ] Admin: video upload, CSV import → pipeline (bronze→gold), user accounts.
  • [ ] Parent portal: child selector (parent.test1 has 2 children), summary, individual timeline.

Dataset

  • processing/data/march_labels_clean.csv (651 000 rows): final merged annotations of the 15 lessons (15 lessons Ă— 31 students Ă— 200 windows Ă— 7 categories).
  • processing/data/march_sessions.csv: metadata of the 15 sessions.
  • Demo video: full_class_merged.mp4 (50 min, 2.1 GB) plays on the 1st islam lesson (islam_march_01).

Local database

docker exec -it nexora-db psql -U nexora -d nexora
# tables: classes, subjects, students, sessions, user, parent_students, followups, messages…