How figurerevitalization/neet-practice-platform works
NEET Practice Platform is a mock-test and question-bank product, currently described as a Phase 1 skeleton. The main user journey is to sign in or continue anonymously, use the web exam interface, and submit an attempt; the API provides attempt and content endpoints backed by MongoDB. Admins manage question content and review live sessions. A separate OpenAI-backed generator creates draft questions. The README documents blueprint-accurate paper assembly as a goal, not a built capability. The tree and sampled source support the live-monitoring and snapshot features, but not every route’s internal wiring.
Main entry points: index.ts Express API · models MongoDB models · app Practice web app · liveSessions.ts Live session endpoints
Components 30
Web experience
- Practice web app
apps/web/src/app - Mock test runner
apps/web/src/components/MockTestRunner.tsx - API client
apps/web/src/lib/api.ts - Attempt client
apps/web/src/lib/attempts.ts - Web authentication
apps/web/src/lib/auth.ts
API services
- Express API
apps/api/src/index.ts - Auth endpoints
apps/api/src/routes/auth.ts - Item endpoints
apps/api/src/routes/items.ts - Content endpoints
apps/api/src/routes/chapters.ts - Blueprint endpoints
apps/api/src/routes/blueprints.ts - Attempt endpoints
apps/api/src/routes/attempts.ts - Snapshot endpoints
apps/api/src/routes/snapshots.ts - Live session endpoints
apps/api/src/routes/liveSessions.ts - Token and role checks
apps/api/src/middleware/auth.ts
Content and persistence
- MongoDB models
packages/db/src/models - Question item model
packages/db/src/models/Item.ts - Attempt model
packages/db/src/models/Attempt.ts - Live session model
packages/db/src/models/LiveSession.ts
Question generation
- Question generation
packages/question-gen/src/generate.ts - OpenAI client
packages/question-gen/src/openaiClient.ts - Generation schema
packages/question-gen/src/schema.ts
Exam monitoring
- Camera capture
apps/web/src/lib/useCameraSnapshots.ts - Live video broadcaster
apps/web/src/lib/useLiveVideoBroadcast.ts - Live video viewer
apps/web/src/lib/useLiveVideoViewer.ts - WebRTC signaling relay
apps/api/src/signaling.ts - Admin proctoring
apps/web/src/app/admin/proctoring/page.tsx
Other components
- Student
- Admin
- MongoDB
- OpenAI
Connections 35
- Student → Practice web app: uses
- Admin → Practice web app: uses
- Practice web app → Mock test runner: runs exams
- Practice web app → Web authentication: authenticates
- Mock test runner → Attempt client: submits attempts
- Attempt client → API client: requests API
- API client → Express API: sends requests
- Express API → Auth endpoints: dispatches
- Express API → Item endpoints: dispatches
- Express API → Content endpoints: dispatches
- Express API → Blueprint endpoints: dispatches
- Express API → Attempt endpoints: dispatches
- Express API → Snapshot endpoints: dispatches
- Express API → Live session endpoints: dispatches
- Auth endpoints → Token and role checks: signs tokens
- Auth endpoints → MongoDB models: reads and writes
- Item endpoints → Question item model: reads and writes
- Content endpoints → MongoDB models: reads and writes
- Blueprint endpoints → MongoDB models: reads and writes
- Attempt endpoints → Attempt model: reads and writes
- Snapshot endpoints → MongoDB models: stores snapshots
- Live session endpoints → Live session model: reads and writes
- MongoDB models → MongoDB: persists
- Question generation → OpenAI client: generates items
- OpenAI client → Generation schema: validates response
- OpenAI client → OpenAI: requests completion
- Question generation → Question item model: inserts drafts
- Mock test runner → Camera capture: captures evidence
- Camera capture → Snapshot endpoints: uploads snapshots
- Camera capture → Live video broadcaster: provides camera stream
- Live video broadcaster → WebRTC signaling relay: exchanges signaling
- Live video viewer → WebRTC signaling relay: exchanges signaling
- Admin proctoring → Live session endpoints: fetches active sessions
- Admin proctoring → Live video viewer: watches candidate
- Live session endpoints → Live session model: updates session state