A full-stack, production-ready Student Management System for managing courses, users, enrollments, grades, and learning resources. Built with a modern Java Spring Boot backend and a React/MUI frontend, this project provides robust role-based access control, JWT authentication, and a clean, responsive UI for administrators, teachers, and students.
- Overview
- Features
- Tech Stack
- Project Structure
- Installation
- Configuration
- Usage
- API Documentation
- Scripts & Commands
- Testing
- Contribution Guidelines
- License
Student Management System is designed to streamline the administration of educational institutions. It enables efficient management of users (admins, teachers, students), courses, subjects, enrollments, and grades, with secure authentication and role-based access.
- User Authentication: Secure JWT-based login for all roles.
- Role-Based Access Control: Super Admin, Teacher, and Student roles with protected routes and endpoints.
- Course Management: Create, update, and view courses, subjects, and enrollments.
- Student & Teacher Management: CRUD operations for students and teachers.
- Grade Management: Assign and view grades.
- Learning Management: LMS features for students and teachers.
- Responsive UI: Built with React and Material-UI.
- API-First Design: RESTful endpoints for all major operations.
- Database Migrations: Managed with Flyway.
- Production-Ready: Includes build scripts and deployment instructions.
Backend:
- Java 17
- Spring Boot 3.x/4.x
- Spring Data JPA (MySQL)
- Spring Security (JWT)
- Lombok
- Flyway (DB migrations)
- Maven
Frontend:
- React 18
- Material-UI (MUI)
- React Router DOM
- Axios
- Bootstrap
Database:
- MySQL 8.0+
Testing:
- JUnit (backend)
- React Testing Library, Jest (frontend)
Student Management System/
├── student-backend/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/StudentManagementSystem/
│ │ │ │ ├── controller/
│ │ │ │ ├── entity/
│ │ │ │ ├── repository/
│ │ │ │ ├── service/
│ │ │ │ ├── security/
│ │ │ │ └── dto/
│ │ │ └── resources/
│ │ │ ├── application.properties
│ │ │ └── db/
│ ├── pom.xml
│ └── ...
├── student-frontend/
│ ├── src/
│ │ ├── api/
│ │ ├── components/
│ │ ├── context/
│ │ ├── pages/
│ │ ├── routes/
│ │ └── utils/
│ ├── public/
│ ├── package.json
│ └── ...
└── README.md
- Java 17+
- Node.js 16+
- MySQL 8.0+
- Maven 3.6+
-
Clone the repository:
git clone <repo-url> cd "Student Management System"
-
Configure the database: Edit
student-backend/src/main/resources/application.properties:spring.datasource.url=jdbc:mysql://localhost:3306/student_db?createDatabaseIfNotExist=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC spring.datasource.username=your_mysql_username spring.datasource.password=your_mysql_password
-
Run database migrations (optional): Flyway will auto-run on backend startup.
-
Build and run the backend:
cd student-backend ./mvnw spring-boot:run # or on Windows mvnw.cmd spring-boot:run
The backend will start at http://localhost:8080.
-
Install dependencies:
cd ../student-frontend npm install -
Start the development server:
npm start
The frontend will start at http://localhost:3000.
-
Backend: All configuration is in
student-backend/src/main/resources/application.properties.- Database URL, username, password
- Server port (default: 8080)
- JWT secret (if applicable)
-
Frontend: API base URL is set in
src/api/axiosConfig.js(default:/apiorhttp://localhost:8080).
On first run, if no super admin exists, you can log in with:
- Email:
admin@example.com - Password:
Admin@123
Or use the /auth/bootstrap endpoint to create one.
- Open http://localhost:3000
- Enter super admin credentials.
- You will be redirected to the admin dashboard.
Login:
POST /auth/login
Content-Type: application/json
{
"email": "admin@example.com",
"password": "Admin@123"
}Protected Endpoint:
GET /admin/dashboard/stats
Authorization: Bearer <JWT_TOKEN>POST /auth/login— User loginPOST /auth/bootstrap— Create initial super admin
GET /admin/dashboard/stats— Dashboard statisticsGET /admin/teachers— List teachersPOST /admin/teachers— Add teacherGET /admin/students— List studentsPOST /admin/students— Add studentGET /admin/courses— List coursesPOST /admin/courses— Add course
GET /teacher/dashboard— Teacher dashboardGET /teacher/courses— Teacher's coursesGET /teacher/students— Enrolled studentsPOST /teacher/grades— Assign grades
GET /student/dashboard— Student dashboardGET /student/courses— Enrolled coursesPOST /student/enroll— Enroll in courseGET /student/grades— View grades
- JWT-based authentication
- Role-based access control (SUPER_ADMIN, TEACHER, STUDENT)
- Password encryption (BCrypt)
- Protected frontend routes
- Run backend:
./mvnw spring-boot:runormvnw.cmd spring-boot:run - Build JAR:
./mvnw clean package - Run JAR:
java -jar target/Student-Management-System-0.0.1-SNAPSHOT.jar
- Start dev server:
npm start - Build production:
npm run build - Run tests:
npm test
- Run tests:
./mvnw test
- Run tests:
(Uses React Testing Library and Jest. Add tests in
npm testsrc/*.test.js.)
- Fork the repository.
- Create a feature branch.
- Commit your changes.
- Push to your branch.
- Create a Pull Request.
Please ensure code quality and add tests for new features.
Suggested: MIT License (No explicit license file detected. Please add a LICENSE file to clarify terms.)
- The backend and frontend are intended to run locally for development.
- Production deployment involves building the frontend and copying the build to the backend's
static/directory. - The default super admin credentials are as shown above.
- All endpoints and features are inferred from code and may be extended.
For questions or support, please open an issue or contact the maintainers.