How preliminary-examinations-2025/bics-portal works
This repository implements a BICS academic portal with separate student/admin, online-exam, and Kata competitive-programming interfaces backed by one API. Students authenticate and use academic services, take monitored exams, and submit incident-review information; administrators manage institutional records and operations. Kata users register handles, participate in contests, submit solutions, and receive evaluations and ratings. The backend also processes lecture ingestion and EIRF follow-up asynchronously. Connections reflect shown imports, calls, or routes; unsampled route internals are not inferred.
Main entry points: server.js API server · src/App.jsx Exam workflow · src/App.jsx Kata workspace · auth.js Authentication
Components 22
Academic Portal
- Student interface
frontend/src/App.jsx - Portal API client
frontend/src/api/client.js
Online Examination
- Exam workflow
frontend_ot/src/App.jsx - Exam API client
frontend_ot/src/api/client.js
Kata Platform
- Kata workspace
frontend_workspace/src/App.jsx - Kata authentication
frontend_workspace/src/context/AuthContext.jsx - Kata API client
frontend_workspace/src/utils/kataApi.js
Backend Services
- API server
backend/server.js - Authentication
backend/routes/auth.js - Exam operations
backend/routes/tests.js - Kata operations
backend/routes/kata.js - Solution judging
backend/utils/judgeEngine.js - AI evaluation
backend/services/kataAiEvaluator.js - Contest ratings
backend/utils/ratingEngine.js - EIRF pipeline
backend/workers/eirfPipelineWorker.js - Lecture ingestion
backend/services/lectureIngestionWorker.js - Email delivery
backend/services/gmailEmailService.js
Persistence
- Database connection
backend/config/db.js - Candidate records
backend/models/Candidate.js - Exam submissions
backend/models/TestSubmission.js - Kata records
backend/models/KataSubmission.js
Other components
- Portal users
Connections 24
- Portal users → Student interface: uses
frontend/src/App.jsx - Student interface → Portal API client: requests data
frontend/src/App.jsx - Portal users → Exam workflow: takes exams
frontend_ot/src/App.jsx - Exam workflow → Exam API client: reads responses
frontend_ot/src/App.jsx - Exam workflow → Exam operations: submits exam data
frontend_ot/src/App.jsx - Portal users → Kata workspace: uses
frontend_workspace/src/App.jsx - Kata workspace → Kata authentication: provides session
frontend_workspace/src/App.jsx - Kata authentication → Kata API client: requests account
frontend_workspace/src/context/AuthContext.jsx - Kata workspace → Kata API client: requests Kata data
frontend_workspace/src/App.jsx - API server → Authentication: mounts routes
backend/server.js - API server → Exam operations: mounts routes
backend/server.js - API server → Kata operations: mounts routes
backend/server.js - Authentication → Candidate records: reads records
backend/routes/auth.js - Authentication → Database connection: uses storage
backend/routes/auth.js - Exam operations → Exam submissions: handles submissions
- Kata operations → Solution judging: dispatches judging
- Solution judging → AI evaluation: delegates evaluation
backend/utils/judgeEngine.js - Solution judging → Kata records: uses submissions
backend/utils/judgeEngine.js - AI evaluation → Kata records: reads submissions
backend/services/kataAiEvaluator.js - Contest ratings → Kata records: rates contest entries
- EIRF pipeline → Exam submissions: processes incidents
- EIRF pipeline → Email delivery: dispatches email
backend/workers/eirfPipelineWorker.js - Lecture ingestion → Database connection: loads lecture data
backend/services/lectureIngestionWorker.js - Database connection → Candidate records: persists records