A MERN-based Student Information Management System implementing role-based access (Admin, Teacher, Student) with JWT authentication. The system supports attendance tracking, performance evaluation, and secure REST APIs.
Frontend (Vercel): student-information-management-system-22bce9368-21cargc41.vercel.app
Backend API (Render): https://student-information-management-system-p4x6.onrender.com
Educational institutions often manage attendance, academic performance, and student communication using manual processes or multiple disconnected tools. This results in data inconsistency, limited transparency, and security risks around sensitive student information.
There is a need for a centralized, secure system that allows administrators, teachers, and students to interact with academic data based on clearly defined roles and permissions.
This project implements a web-based Student Information Management System using the MERN stack (MongoDB, Express.js, React.js, Node.js).
The system provides role-based access for Admin, Teacher, and Student users, enabling secure management of attendance, performance evaluation, and communication through RESTful APIs. JWT-based authentication ensures that users can only access functionality permitted by their role.
The system is designed to digitize core academic workflows while maintaining security, scalability, and clear separation of responsibilities between users.
-
User Roles: The system supports three user roles: Admin, Teacher, and Student. Each role has specific functionalities and access levels.
-
Admin Dashboard: Administrators can add new students and teachers, create classes and subjects, manage user accounts, and oversee system settings.
-
Attendance Tracking: Implemented attendance management using REST APIs with MongoDB schemas linked to classes and students.
-
Performance Assessment: Teachers can assess students' performance by providing marks and feedback. Students can view their marks and track their progress over time.
-
Data Visualization: Students can visualize their performance data through interactive charts and tables, helping them understand their academic performance at a glance.
-
Communication: Users can communicate effortlessly through the system. Teachers can send messages to students and vice versa, promoting effective communication and collaboration.
POST /login
POST /register
GET /SclassList/:adminId
DELETE /Sclass/:id
GET /AllSubjects/:adminId
POST /Attendance
- JWT-based authentication
- Role-based authorization middleware
- Protected REST endpoints
- Environment variables for secrets
- CORS configuration for production
- Frontend: React.js, Material UI, Redux
- Backend: Node.js, Express.js
- Database: MongoDB
- Containerization: Docker, Docker Compose (local development)
- Authentication & Security: JWT-based role authentication
- React frontend communicates with Express REST APIs using Axios.
- JWT tokens are used for authentication and role-based authorization
- MongoDB stores users, classes, attendance, and performance data
JWT was chosen to keep the backend stateless and scalable, especially for a REST API-driven architecture. The trade-off is that token revocation is less straightforward and requires careful expiration handling.
MongoDB was selected for its flexible schema design, which simplifies modeling evolving entities such as attendance records and performance data. This comes at the cost of weaker enforced relationships compared to a relational database.
Using a separate React frontend and Express backend improves modularity and mirrors real-world production systems, but increases initial setup complexity and API management overhead.
Docker and Docker Compose were used to ensure consistent local environments and easier onboarding. This adds some learning curve and slightly slower startup times compared to a non-containerized setup.
Open 2 terminals in separate windows/tabs.
Terminal 1: Setting Up Backend
cd backend
npm install
npm startCreate a file called .env in the backend folder. Inside it write this :
MONGO_URL = mongodb://localhost:27017/Student_RecordIf you are using MongoDB Compass you can use this database link but if you are using MongoDB Atlas then instead of this link write your own database link.
Terminal 2: Setting Up Frontend
cd frontend
npm install
npm startNow, navigate to localhost:3000 in your browser.
The Backend API will be running at localhost:5000.
You can run the project locally using Docker for a fully containerized environment.
- Clone the repository:
git clone <your-repo-link>
cd MERN-Student-Information-Management-System├── backend/
│ ├── controllers/ # Request handlers and business logic
│ ├── middleware/ # Custom middleware functions (auth, validation, etc.)
│ ├── models/ # Database models/schemas (e.g., Mongoose)
│ ├── routes/ # API route definitions
│ ├── .dockerignore
│ ├── .gitignore
│ ├── Dockerfile
│ ├── index.js # Main server entry point
│ ├── package-lock.json
│ └── package.json
├── frontend/
│ ├── public/ # Static assets (index.html, favicon, etc.)
│ ├── src/ # React source code (components, pages, etc.)
│ ├── .dockerignore
│ ├── .env
│ ├── .gitignore
│ ├── Dockerfile
│ ├── nginx.conf # Nginx server config for production
│ ├── package-lock.json
│ └── package.json
├── docker-compose.prod.yml
├── docker-compose.dev.yml
└── .env
- Frontend deployed on Vercel
- Backend deployed on Render
- MongoDB Atlas for cloud database
- CORS configured for cross-origin requests
- Environment variables configured in production
Backend (.env)
PORT=5000 MONGO_URL=your_mongodb_connection_string JWT_SECRET=your_secret_key
- Add analytics dashboards for administrators








