Skip to content

Latest commit

Β 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Student Management System (SMS)

A complete, production-ready Student Management System built with Node.js, Express, MongoDB, React, and Tailwind CSS.

Features

πŸ‘₯ User Management

  • Role-based access: Super Admin, Admin, Teacher, Student, Parent
  • JWT authentication with secure login/register
  • Profile management & password reset

πŸ“š Student Management

  • Add/Edit/Delete students with full profiles
  • Automatic student ID generation
  • Upload photos & documents
  • Parent/guardian information
  • Emergency contacts & medical info
  • Search & filter with pagination

πŸ‘¨β€πŸ« Teacher Management

  • Full teacher profiles with qualifications
  • Subject & class assignment
  • Employment type & salary tracking
  • Document management

πŸ“– Class & Subject Management

  • Create classes with multiple sections
  • Assign class teachers
  • Subject creation with pass/fail criteria
  • Academic year tracking

βœ… Attendance Management

  • Daily attendance marking (Present/Absent/Late/Half-day)
  • Bulk mark all present/absent
  • Monthly attendance reports
  • Student-wise attendance percentage
  • Attendance analytics with charts

πŸ“ Exam & Results

  • Create exams (Midterm, Final, Quiz, Weekly, Monthly, Practical)
  • Marks entry per subject per student
  • Automatic grade calculation (A+ to F)
  • Report card generation
  • Pass/Fail status tracking

πŸ’° Fee Management

  • Fee collection with receipt generation
  • Multiple fee types (Tuition, Hostel, Transport, etc.)
  • Payment tracking (Paid/Partial/Pending/Overdue)
  • Discount & fine management
  • Payment methods (Cash, Card, Online, Cheque)

πŸ“… Timetable Management

  • Class-wise & teacher-wise timetable
  • Day/subject period management
  • Room assignment
  • Bulk entry support

πŸ“„ Assignment Management

  • Create & submit assignments
  • Grade submissions with feedback
  • Late submission detection

πŸ“š Library Management

  • Book catalog with search
  • Issue/Return tracking
  • Fine calculation for overdue books
  • Real-time availability tracking

πŸ”” Notification System

  • In-app notifications
  • Role-based broadcasting
  • Priority levels (Low/Medium/High/Urgent)
  • Read/unread tracking

πŸ“Š Reports & Dashboards

  • Admin dashboard with stats & charts
  • Teacher dashboard with quick actions
  • Student dashboard with attendance & fee status
  • Attendance reports with visual charts
  • Fee collection summary

🎨 UI/UX

  • Modern, responsive design
  • Dark mode / Light mode toggle
  • Smooth animations & transitions
  • Mobile-friendly layout
  • Toast notifications
  • Loading skeletons

Tech Stack

Layer Technology
Frontend React 18, React Router 6, Tailwind CSS, Chart.js, Axios
Backend Node.js, Express.js
Database MongoDB with Mongoose ODM
Auth JWT (JSON Web Tokens), bcryptjs
Security Helmet, CORS, Rate Limiting, XSS Clean, Input Validation
File Upload Multer
Email Nodemailer

Project Structure

StudentManagementSystem/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ config/          # Database & app config
β”‚   β”‚   β”œβ”€β”€ controllers/     # Route handlers
β”‚   β”‚   β”œβ”€β”€ middleware/       # Auth, validation, upload, error handling
β”‚   β”‚   β”œβ”€β”€ models/          # Mongoose schemas
β”‚   β”‚   β”œβ”€β”€ routes/          # Express routes
β”‚   β”‚   β”œβ”€β”€ utils/           # Helpers
β”‚   β”‚   β”œβ”€β”€ validators/      # Express-validator rules
β”‚   β”‚   β”œβ”€β”€ server.js        # Entry point
β”‚   β”‚   └── seed.js          # Database seeder
β”‚   β”œβ”€β”€ .env
β”‚   └── package.json
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ assets/css/      # Tailwind styles
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/        # Login, Register
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/   # Admin, Teacher, Student dashboards
β”‚   β”‚   β”‚   β”œβ”€β”€ layout/      # MainLayout, Sidebar, Header
β”‚   β”‚   β”‚   β”œβ”€β”€ students/    # List, Form
β”‚   β”‚   β”‚   β”œβ”€β”€ teachers/    # List, Form
β”‚   β”‚   β”‚   β”œβ”€β”€ classes/     # ClassList, SubjectList
β”‚   β”‚   β”‚   β”œβ”€β”€ attendance/  # Mark, Reports
β”‚   β”‚   β”‚   β”œβ”€β”€ exams/       # List, Form, MarksEntry, Results
β”‚   β”‚   β”‚   β”œβ”€β”€ fees/        # List, Collect
β”‚   β”‚   β”‚   β”œβ”€β”€ timetable/   # TimetableView
β”‚   β”‚   β”‚   β”œβ”€β”€ assignments/ # AssignmentList
β”‚   β”‚   β”‚   β”œβ”€β”€ library/     # LibraryView
β”‚   β”‚   β”‚   β”œβ”€β”€ notifications/ # NotificationList
β”‚   β”‚   β”‚   └── common/      # Settings
β”‚   β”‚   β”œβ”€β”€ contexts/        # AuthContext, ThemeContext
β”‚   β”‚   β”œβ”€β”€ services/        # API service (Axios)
β”‚   β”‚   β”œβ”€β”€ App.jsx          # Router
β”‚   β”‚   └── main.jsx         # Entry point
β”‚   β”œβ”€β”€ index.html
   β”œβ”€β”€ vite.config.js
β”‚   └── package.json

Quick Start

Prerequisites

  • Node.js 18+
  • MongoDB (local or Atlas)

1. Clone & Install

cd StudentManagementSystem

# Install backend dependencies
cd backend
npm install

# Install frontend dependencies
cd ../frontend
npm install

2. Configure Environment

# Backend: Edit backend/.env
PORT=5000
MONGODB_URI=mongodb://localhost:27017/student_management
JWT_SECRET=your_jwt_secret_key_change_this
JWT_EXPIRE=7d

3. Seed Database

cd backend
npm run seed

4. Start Development

# Terminal 1 - Backend
cd backend
npm run dev

# Terminal 2 - Frontend
cd frontend
npm run dev

Visit http://localhost:3000

Demo Credentials

Role Email Password
Super Admin admin@sms.com Admin123!
Teacher teacher@sms.com Teacher123!
Student student@sms.com Student123!
Parent parent@sms.com Parent123!

API Endpoints

Authentication

Method Endpoint Description
POST /api/auth/register Register new user
POST /api/auth/login Login
GET /api/auth/me Get current user
PUT /api/auth/profile Update profile
POST /api/auth/forgot-password Forgot password
PUT /api/auth/reset-password/:token Reset password

Students

Method Endpoint Description
GET /api/students List (paginated, filterable)
GET /api/students/:id Get single
POST /api/students Create
PUT /api/students/:id Update
DELETE /api/students/:id Deactivate

Teachers, Classes, Subjects, Attendance, Exams, Results, Fees, Timetable, Assignments, Library, Notifications, Dashboard

  • All follow similar RESTful patterns under /api/teachers, /api/classes, etc.

Deployment

Backend (Render / Railway / Vercel)

cd backend
# Set environment variables on platform
npm start

Frontend (Vercel / Netlify)

cd frontend
npm run build
# Deploy dist/ folder

Security Features

  • βœ… Password hashing with bcryptjs (12 rounds)
  • βœ… JWT-based authentication with expiry
  • βœ… Input validation & sanitization (express-validator, xss)
  • βœ… HTTP headers protection (helmet)
  • βœ… Cross-Origin Resource Sharing (cors)
  • βœ… Rate limiting (express-rate-limit)
  • βœ… Request logging (morgan)
  • βœ… File upload validation (multer)

API Documentation

Full API documentation is available at /api/health endpoint when the server is running.

Releases

Packages

Contributors

Languages