How kyeremehs/sciencelab works
ScienceLab is a web platform for guided practical STEM learning and classroom management. Students browse experiments, run structured attempts with steps and observations, receive contextual AI help, and submit assessments; teachers create classes, assign experiments, and monitor progress. The graph groups the app by user workflows, API entry points, domain services, and persistence/integrations. The README establishes the product capabilities; sampled route handlers confirm several API-to-service dispatches, while wiring for unsampled domains is kept broad.
Main entry points: index.ts Database access · experiments/route.ts Experiment routes · AttemptRunner.tsx Experiment runner · assessment/route.ts Attempt routes
Components 28
Student learning
- Experiment runner
src/app/dashboard/student/attempts/[id]/AttemptRunner.tsx - Experiment catalogue
src/app/dashboard/student/experiments/page.tsx - Class workspace
src/app/dashboard/student/classes/page.tsx
Teacher workspace
- Class management
src/app/dashboard/teacher/classes/[id]/page.tsx - Assignment manager
src/app/dashboard/teacher/classes/[id]/AssignmentsManager.tsx - Progress dashboard
src/app/dashboard/teacher/classes/[id]/ClassProgress.tsx - Experiment authoring
src/app/dashboard/teacher/experiments/new/ExperimentCreator.tsx
HTTP API
- Authentication routes
src/app/api/auth/login/route.ts - Experiment routes
src/app/api/experiments/route.ts - Attempt routes
src/app/api/attempts/[id]/assessment/route.ts - Class routes
src/app/api/classes/[id]/route.ts - Assignment routes
src/app/api/classes/[id]/assignments/route.ts
Domain services
- Attempt workflow
src/lib/attempts-service.ts - Assessment
src/lib/assessment-service.ts - Contextual AI help
src/lib/ai-service.ts - Experiment catalogue
src/lib/experiments-service.ts - Experiment creation
src/lib/experiment-creation-service.ts - Class management
src/lib/classes-service.ts - Assignments
src/lib/assignments-service.ts - Progress reporting
src/lib/progress-service.ts - Authentication
src/lib/auth-service.ts
Persistence and integrations
- Relational data
src/db/schema.ts - Database access
src/db/index.ts - OpenRouter AI
- SMTP email
- Mail delivery
src/lib/mailer.ts
Other components
- Student
- Teacher
Connections 33
- Student → Experiment catalogue: browses
- Experiment catalogue → Experiment routes: requests experiments
- Experiment routes → Experiment catalogue: dispatches
- Experiment routes → Experiment creation: dispatches
- Student → Experiment runner: runs experiment
- Experiment runner → Attempt routes: records progress
- Attempt routes → Attempt workflow: dispatches
- Attempt routes → Assessment: dispatches
- Experiment runner → Contextual AI help: requests help
- Contextual AI help → OpenRouter AI: queries model
- Student → Class workspace: joins class
- Class workspace → Class routes: manages membership
- Teacher → Class management: manages classes
- Class management → Class routes: requests class actions
- Teacher → Assignment manager: assigns experiments
- Assignment manager → Assignment routes: fetches and updates
- Assignment routes → Assignments: dispatches
- Teacher → Progress dashboard: reviews progress
- Progress dashboard → Class routes: requests progress
- Teacher → Experiment authoring: creates experiments
- Experiment authoring → Experiment routes: submits experiment
- Authentication routes → Authentication: dispatches
- Authentication → Mail delivery: sends reset mail
- Mail delivery → SMTP email: delivers mail
- Attempt workflow → Database access: reads and writes
- Assessment → Database access: reads and writes
- Experiment catalogue → Database access: reads data
- Experiment creation → Database access: writes data
- Class management → Database access: reads and writes
- Assignments → Database access: reads and writes
- Progress reporting → Database access: reads progress
- Authentication → Database access: reads and writes
- Database access → Relational data: uses schema