CampusOne is a complete institutional management backend that handles academics, attendance, approvals, timetable, responsibilities and user workflows.
Built with Node.js, Express, MongoDB, JWT Auth, Multer, Cloudinary & Kafka (event-driven bulk import processing).
User Authentication & Profile Routes
Base Path: /user
Method
Endpoint
Access
Description
POST
/register
Institution JWT
Create user under institution
POST
/login
Public
Login user
POST
/refresh
Public
Refresh access token
POST
/forgot-password
Public
Send reset mail
POST
/reset-password/:token
Public
Reset password
GET
/verify-email/:token
Public
Verify email
GET
/current-user
User JWT
Get logged in user
POST
/logout
User JWT
Logout
POST
/send-email-verification
User JWT
Send verification mail
POST
/update-avatar
User JWT
Update avatar
PUT
/update
User JWT
Update profile
GET
/faculty
User JWT
Get linked faculty
DELETE
/delete/:userId
Institution JWT
Delete user
Base Path: /institution
Method
Endpoint
Access
Description
GET
/
Public
Get all institutions
GET
/:institutionId
Public
Get institution
POST
/register
Public
Register institution
POST
/login
Public
Login institution
POST
/refresh
Public
Refresh token
POST
/forgot-password
Public
Forgot password
POST
/reset-password/:token
Public
Reset password
GET
/verify-email/:token
Public
Verify email
GET
/current-institution
Institution JWT
Current institution
POST
/logout
Institution JWT
Logout
POST
/send-email-verification
Institution JWT
Send verification
POST
/update-avatar
Institution JWT
Update avatar
PUT
/update
Institution JWT
Update institution
DELETE
/delete/:institutionId
Institution JWT
Delete institution
POST
/code-exists
Public
Check institution code
Base Path: /faculty
Method
Endpoint
Access
Description
GET
/:facultyId
Public
Get faculty
POST
/
Institution JWT
Create faculty
PUT
/:facultyId
Institution JWT
Edit faculty
DELETE
/:facultyId
Institution JWT
Delete faculty
GET
/by-institution/:institutionId
Institution JWT
Faculties of institution
GET
/by-department/:departmentId
Institution JWT
Faculties by department
PUT
/:facultyId/department
Institution JWT
Update department
PUT
/:facultyId/status
Institution JWT
Activate/Deactivate
PUT
/:facultyId/in-charge
Institution JWT
Toggle in-charge
PUT
/:facultyId/courses
Institution JWT
Assign courses
DELETE
/:facultyId/courses/:courseId
Institution JWT
Remove course
PUT
/self/:facultyId
User JWT
Self edit
Base Path: /student
Method
Endpoint
Access
Description
POST
/create-student
Institution JWT
Create student
PUT
/edit-student/:studentId
Institution JWT
Edit student
DELETE
/delete-student/:studentId
Institution JWT
Delete student
GET
/institution/:institutionId
Institution JWT
Students by institution
GET
/branch/:branchId
Institution JWT
Students by branch
PUT
/update-branch/:studentId
Institution JWT
Update branch
PUT
/update-hostel-status/:studentId
Institution JWT
Hostel status
PUT
/update-semester/:studentId
User JWT
Update semester
PUT
/change-status/:studentId
Institution JWT
Activate/Deactivate
GET
/:studentId
Public
Student by id
Method
Endpoint
Access
Description
GET
/institution/:institutionId
Public
Get departments by institution
GET
/:departmentId
Public
Get department by ID
POST
/create-department
Institution JWT
Create department
PUT
/update-department/:departmentId
Institution JWT
Update department
DELETE
/delete-department/:departmentId
Institution JWT
Delete department
Method
Endpoint
Access
GET
/institutions/:institutionId
Public
GET
/:branchId
Public
GET
/departments/:departmentId
Public
POST
/institutions/:institutionId
Institution JWT
PUT
/:branchId
Institution JWT
DELETE
/:branchId
Institution JWT
Base Path: /course
Method
Endpoint
Access
Description
GET
/department/:departmentId
Public
Courses by department
GET
/institution/:institutionId
Public
Courses by institution
GET
/:courseId
Public
Course by id
POST
/create-course
Institution JWT
Create
PUT
/:courseId
Institution JWT
Update
DELETE
/:courseId
Institution JWT
Delete
PUT
/change-status/:courseId
Institution JWT
Activate/Deactivate
Method
Endpoint
Access
Description
GET
/faculty/:facultyId
Public
Get timetable for faculty
GET
/student/:studentId
Public
Get timetable for student
GET
/institution/:institutionId
Public
Get timetable for institution
POST
/slot
Institution JWT
Create a timetable slot
PATCH
/slot/:slotId
Institution JWT
Update a timetable slot
DELETE
/slot/:slotId
Institution JWT
Delete a timetable slot
Attendance Sessions (/session)
Method
Endpoint
Access
Description
GET
/faculty/:facultyId
Public
List sessions for a faculty
GET
/student/:studentId
Public
List sessions for a student
POST
/generate
Institution JWT
Generate new attendance session
PATCH
/:sessionId/cancel
User JWT
Cancel an attendance session
DELETE
/:sessionId
User JWT
Delete an attendance session
Base Path: /attendance
Method
Endpoint
Access
Description
POST
/user/:sessionId/mark
User JWT
Mark attendance
GET
/user/student/:studentId/course/:courseId
User JWT
Course attendance
GET
/user/student/:studentId/report
User JWT
Full report
GET
/batch/defaulters
Institution JWT
Defaulters list
GET
/batch/matrix
Institution JWT
Attendance matrix
Applications (Approval Workflow)
Base Path: /application
Method
Endpoint
Access
Description
POST
/
User JWT
Create application
GET
/my
User JWT
Get my applications
GET
/faculty/pending
User JWT
Pending approvals for faculty
POST
/:applicationId/approve
User JWT
Approve application
POST
/:applicationId/reject
User JWT
Reject application
POST
/:applicationId/forward
User JWT
Forward application to next approver
Base Path: /marks
Method
Endpoint
Access
Description
POST
/record
User JWT
Record or update marks/evaluation entries
GET
/matrix
User JWT
Get aggregated marks/evaluation matrix
GET
/student/:studentId/all
User JWT
Get all marks/evaluations for a specific student
GET
/student/:studentId/course/:courseId
User JWT
Get a student's marks for a specific course
Base Path: /responsibility
Method
Endpoint
Access
GET
/institution/:institutionId
Public
POST
/
Institution JWT
PUT
/:responsibilityId
Institution JWT
DELETE
/:responsibilityId
Institution JWT
Responsibility Assignment (/responsibility-assignment)
Method
Endpoint
Access
Description
GET
/
Public
List responsibility assignments
POST
/
Institution JWT
Create a responsibility assignment
PATCH
/:id/deactivate
Institution JWT
Deactivate a responsibility assignment
Bulk Import (Kafka Powered)
Base Path: /import
Method
Endpoint
Access
Description
POST
/students
Institution JWT
Upload student CSV (async processed via Kafka)
POST
/faculty
Institution JWT
Upload faculty CSV (async processed via Kafka)
GET
/students/:id/status
Institution JWT
Import status
GET
/faculty/:id/status
Institution JWT
Import status
Large uploads are processed asynchronously using Apache Kafka event streaming to avoid blocking the main server and ensure reliability.
User JWT → Faculty/User operations
Institution JWT → Admin/management operations
PORT=
FRONTEND_URL=
MONGODB_URI=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
JWT_SECRET=
JWT_REFRESH_SECRET=
MAILJET_API_KEY=
MAILJET_SECRET=
MAILJET_FROM_EMAIL=
MAILJET_FROM_NAME=
NODE_ENV=
BACKEND_URL=
KAFKA_BROKERS=
Vansh Verma
Full Stack Developer