🚀 Sindh Foundational Learning System
Backend API Server
✅ Server is running successfully
Available API Endpoints:
GET
/health
No params
GET
/db-test
No params
POST
/api/auth/signup
Headers: Content-Type: application/json
Body (JSON): { fullName, cnic, designation, password, [district], [taluka], [schoolSemiCode], [schoolName] }
POST
/api/auth/login
Headers: Content-Type: application/json
Body (JSON): { cnic, password }
GET
/api/auth/me
Headers: Authorization: Bearer <JWT token from login/signup>
GET
/api/locations/districts
No params
GET
/api/locations/talukas?district=...
Query: district (string, required)
GET
/api/locations/schools
Query (optional): district, taluka, q
GET
/api/locations/schools/by-semis/:semis
Path: :semis (string, required)
GET
/api/students
Headers: Authorization: Bearer <token>
GET
/api/students/:studentId
Headers: Authorization: Bearer <token>
Path: :studentId (number)
POST
/api/students
Headers: Authorization: Bearer <token>, Content-Type: application/json
Body (JSON): { fullName, rollNo?, gender?, class? }
GET
/api/students/profile/teacher
Headers: Authorization: Bearer <token>
GET
/api/assessments/structure
Returns: template, sections, categories, questions, choices
GET
/api/assessments/student/:studentId
Headers: Authorization: Bearer <token>
Path: :studentId (number)
POST
/api/assessments/save
Headers: Authorization: Bearer <token>, Content-Type: application/json
Body (JSON): { studentId, templateId, answers: [{question_id, answer_value}], status: 'draft'|'submitted', remarks? }
GET
/api/assessments/stats
Headers: Authorization: Bearer <token>
GET
/api/assessments/report/:studentId
Headers: Authorization: Bearer <token>
Path: :studentId (number)
Returns: Detailed assessment report with student info, teacher info, scores, and category breakdowns
GET
/api/hm/profile
Headers: Authorization: Bearer <token>
GET
/api/hm/stats
Headers: Authorization: Bearer <token>
GET
/api/hm/teachers
Headers: Authorization: Bearer <token>
GET
/api/hm/assessments/recent
Headers: Authorization: Bearer <token>
GET
/api/teo/profile
Headers: Authorization: Bearer <token>
GET
/api/teo/stats
Headers: Authorization: Bearer <token>
GET
/api/teo/teachers
Headers: Authorization: Bearer <token>
GET
/api/teo/assessments/recent
Headers: Authorization: Bearer <token>
GET
/api/teo/observations/recent
Headers: Authorization: Bearer <token>
GET
/api/teo/hms/activity
Headers: Authorization: Bearer <token>
GET
/api/deo/profile
Headers: Authorization: Bearer <token>
GET
/api/deo/stats
Headers: Authorization: Bearer <token>
GET
/api/deo/teachers
Headers: Authorization: Bearer <token>
GET
/api/deo/assessments/recent
Headers: Authorization: Bearer <token>
GET
/api/deo/observations/recent
Headers: Authorization: Bearer <token>
GET
/api/deo/hms/activity
Headers: Authorization: Bearer <token>
GET
/api/deo/teos/activity
Headers: Authorization: Bearer <token>
GET
/api/admin/overview
Headers: Authorization: Bearer <token> (Admin role required)
GET
/api/admin/assessments/stats
Headers: Authorization: Bearer <token> (Admin role required)
GET
/api/admin/assessments/recent
Headers: Authorization: Bearer <token> (Admin role required)
GET
/api/admin/observations/recent
Headers: Authorization: Bearer <token> (Admin role required)
GET
/api/admin/districts/breakdown
Headers: Authorization: Bearer <token> (Admin role required)
GET
/api/admin/talukas/breakdown
Headers: Authorization: Bearer <token> (Admin role required)
GET
/api/teacher-observations/structure
Headers: Authorization: Bearer <token>
GET
/api/teacher-observations/teacher/:teacherId
Headers: Authorization: Bearer <token>
Path: :teacherId (number)
POST
/api/teacher-observations/save
Headers: Authorization: Bearer <token>, Content-Type: application/json
Body (JSON): { teacherId, templateId, information: {...}, answers: [{item_id, score}], status: 'draft'|'submitted' }
GET
/api/teacher-observations/report/:teacherId
Headers: Authorization: Bearer <token>
Path: :teacherId (number)
Returns: Detailed teacher observation report with observer info, scores, and category breakdowns