EduNexus is a modern, full-stack Learning Management System (LMS) built with React, Spring Boot, and MongoDB. It provides a comprehensive platform for educational institutions to manage courses, students, and instructors.
- JWT-based authentication system
- Role-based access control (Admin, Instructor, Student)
- Secure password encryption using BCrypt
- User registration and login functionality
- Session management with JWT tokens
- User registration with role selection
- User profile management
- Role-based access control
- User authentication and authorization
- Password encryption and security
- Course creation and management
- Course enrollment system
- Course content organization
- Course progress tracking
- Course categorization
- Course enrollment
- Progress tracking
- Course materials access
- Assignment submission
- Grade viewing
- Course creation and management
- Student enrollment management
- Assignment creation and grading
- Course content management
- Student progress monitoring
- User management
- Course management
- System configuration
- Analytics and reporting
- Role management
- React.js
- Material-UI
- Axios for API calls
- React Router for navigation
- Redux for state management
- Spring Boot
- Spring Security
- JWT Authentication
- MongoDB
- Maven
- MongoDB
- Document-based storage
- Flexible schema design
- Node.js (v14 or higher)
- Java JDK (v11 or higher)
- MongoDB
- Maven
- npm or yarn
EduNexus/
├── backend/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── edunexus/
│ │ │ │ ├── config/ # Spring configuration classes
│ │ │ │ ├── controller/ # REST API controllers
│ │ │ │ ├── dto/ # Data Transfer Objects
│ │ │ │ ├── model/ # Domain models
│ │ │ │ ├── repository/ # MongoDB repositories
│ │ │ │ ├── security/ # Security related classes
│ │ │ │ └── service/ # Business logic services
│ │ │ └── resources/
│ │ │ └── application.properties # Application configuration
│ │ └── test/ # Test classes
│ ├── pom.xml # Maven configuration
│ └── README.md
└── frontend/
├── public/ # Static files
├── src/
│ ├── components/ # Reusable UI components
│ ├── pages/ # Page components
│ ├── services/ # API service calls
│ ├── store/ # Redux store
│ ├── utils/ # Utility functions
│ ├── App.js # Main application component
│ └── index.js # Application entry point
├── package.json # NPM configuration
└── README.md
{
"_id": "ObjectId",
"email": "String",
"password": "String",
"firstName": "String",
"lastName": "String",
"role": "String", // "admin", "instructor", "student"
"enrolledCourses": ["ObjectId"],
"managedCourses": ["ObjectId"],
"createdAt": "Date",
"updatedAt": "Date"
}
{
"_id": "ObjectId",
"title": "String",
"description": "String",
"instructorId": "ObjectId",
"category": "String",
"enrolledStudents": ["ObjectId"],
"modules": [
{
"title": "String",
"content": "String",
"order": "Number"
}
],
"assignments": [
{
"title": "String",
"description": "String",
"dueDate": "Date",
"submissions": [
{
"studentId": "ObjectId",
"submissionDate": "Date",
"grade": "Number",
"feedback": "String"
}
]
}
],
"createdAt": "Date",
"updatedAt": "Date"
}
{
"_id": "ObjectId",
"courseId": "ObjectId",
"title": "String",
"description": "String",
"dueDate": "Date",
"totalMarks": "Number",
"submissions": [
{
"studentId": "ObjectId",
"submissionDate": "Date",
"grade": "Number",
"feedback": "String"
}
],
"createdAt": "Date",
"updatedAt": "Date"
}
-
Navigate to the backend directory:
cd backend
-
Install dependencies:
mvn install
-
Configure MongoDB connection in
application.properties
-
Start the backend server:
mvn spring-boot:run
-
Navigate to the frontend directory:
cd frontend
-
Install dependencies:
npm install
-
Start the development server:
npm start
POST /api/auth/register
- Register a new userPOST /api/auth/login
- User loginGET /api/auth/me
- Get current user details
GET /api/users
- Get all users (Admin only)GET /api/users/{id}
- Get user by IDPUT /api/users/{id}
- Update userDELETE /api/users/{id}
- Delete user
GET /api/courses
- Get all coursesPOST /api/courses
- Create new courseGET /api/courses/{id}
- Get course by IDPUT /api/courses/{id}
- Update courseDELETE /api/courses/{id}
- Delete course
- JWT-based authentication
- Role-based access control
- Password encryption
- CORS configuration
- CSRF protection
- Input validation
- Secure session management
spring.data.mongodb.uri=mongodb://localhost:27017/edunexus
jwt.secret=your-secret-key
jwt.expiration=86400000
REACT_APP_API_URL=http://localhost:8083/api
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For any queries or support, please contact the development team.