This project is a comprehensive Full-Stack Internal Evaluation Management System designed to streamline and automate the process of assessing student submissions.
Built with scalability, user experience, and enterprise security in mind, the system supports a 3-tier Role-Based Access Control (RBAC) architecture. It enables Administrators to seamlessly assign tasks via dynamic UI components, Evaluators to grade submissions using detailed rubrics, and Students to view their finalized results. The system enforces strict data persistence, deadline management, score finality, and advanced API security to ensure the complete integrity of the evaluation process.
- 🌐 Live Frontend: https://fsd-35-frontend.onrender.com
- ⚙️ Live Backend API:
https://fsd-35-backend.onrender.com
- Enterprise-Grade Security: Fortified against Brute Force attacks (Rate Limiting), Cross-Site Scripting (Helmet CORS), and NoSQL Injection (Express Mongo Sanitize w/ Express 5 compatibility).
- Enhanced Admin UX: Dynamic database-driven
<select>dropdowns for assigning Users and Evaluators, replacing manual ObjectId entry. - UI/UX & Accessibility: Integrated Dark Mode theming and PDF Generation for downloading evaluation reports.
- Advanced Analytics Dashboard: Visualizes evaluation progress and calculates average scores per subject using MongoDB Aggregation Pipelines and Chart.js.
- Role-Based Access Control (RBAC): Secure routing and tailored dashboards for Admins, Evaluators, and Students.
- Deadline Enforcement: Automated system locking prevents evaluations from being submitted past the assigned due date.
- Detailed Grading Rubrics: Replaces single-number scores with granular breakdowns (Logic, Quality, Viva, Total).
- Search & Filtering: Dynamic, real-time table filtering by student name, subject, or completion status.
- HTML5 / CSS3: Modern, responsive UI with glassmorphism effects, gradient typography, and Dark Mode support.
- JavaScript (Vanilla): Client-side routing, DOM manipulation, dynamic dropdown population, and secure
fetchAPI integration. - Libraries: Chart.js (Data visualization), PDF Generation utilities.
- Runtime Environment: Node.js
- Framework: Express.js (v5)
- Database: MongoDB (Mongoose ODM)
- Authentication: JWT (JSON Web Tokens)
- Security Middleware: *
bcryptjs(Password hashing)helmet(Secure HTTP headers & CORS policy)express-rate-limit(Brute-force protection via Render proxy trust)express-mongo-sanitize(NoSQL injection defense)
- Analytics Dashboard: View high-level metrics (Total, Pending, Completed) and average score bar charts.
- Manage Assignments: Create submissions, assign them via dynamic user dropdowns, and set strict Due Dates.
- System Override: Can unlock finalized submissions for re-evaluation if required.
- Data Management: View all records, search/filter, export data to CSV, and generate PDFs.
- Task Management: View only tasks specifically assigned to them.
- Strict Deadlines: Tasks are automatically locked if the due date has passed.
- Detailed Evaluation: Submit scores using a specific rubric (Logic, Quality, Viva).
- Finality Rule: Once submitted, the record is locked (
isFinal: true) and cannot be altered by the Evaluator.
- Read-Only Dashboard: Securely log in to view personal, finalized evaluation results and remarks.
Stores credential and role information.
username: String (Unique)password: String (Hashed)role: String (Enum:'ADMIN','EVALUATOR','STUDENT')
Stores the evaluation data, relational links, and rubric scores.
studentName: StringstudentId: ObjectId (Reference to User)subject: StringassignedTo: ObjectId (Reference to User)dueDate: Datescore: Object (logic,quality,viva,total)remarks: StringisFinal: Boolean (Default: false)
| Method | Endpoint | Description | Access |
|---|---|---|---|
POST |
/api/auth/login |
Authenticate and receive JWT (Rate Limited) | Public |
POST |
/api/auth/register |
Register a new user | Public |
GET |
/api/auth/users/:role |
Fetch Users by specific role for UI dropdowns | Admin |
| Method | Endpoint | Description | Access |
|---|---|---|---|
GET |
/api/evaluation/stats |
Fetch aggregation data for charts | Admin |
GET |
/api/evaluation/all |
View all evaluation records (w/ query filters) | Admin |
POST |
/api/evaluation/assign |
Create task, set deadline, assign evaluator | Admin |
PUT |
/api/evaluation/unlock/:id |
Unlock a finalized submission | Admin |
GET |
/api/evaluation/assigned |
View tasks assigned to the logged-in user | Evaluator |
PUT |
/api/evaluation/evaluate/:id |
Submit rubric scores (Blocked if overdue) | Evaluator |
GET |
/api/evaluation/my-results |
View personal finalized scores | Student |
-
Clone the repository:
git clone <repository-url> cd fsd-35-backend
-
Install Dependencies:
npm install
-
Environment Variables: Create a
.envfile in the root directory and add:PORT=5000 MONGO_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret_key
-
Run the Server:
# Development mode (Nodemon) npm run dev # Production mode npm start
-
Run the Frontend: Open
frontend/index.htmlvia Live Server or any local static file server. (EnsureAPI_URLinapp.jsis pointed tohttp://localhost:5000/apifor local testing).