A full-featured web platform designed to facilitate online learning. This system enables Admins, Instructors, and Students to interact and manage learning content efficiently. It supports role-based access control, secure login with JWT, media uploads, and a dynamic, responsive frontend interface.
- Secure login and signup using JWT.
- Role-based access: Admins, Instructors, and Students have access to specific features.
- Manage all users and courses.
- View, update, or delete users and courses.
- Approve or remove courses created by instructors.
- Create and manage courses.
- Add lessons to courses with text, videos, or PDFs.
- View students enrolled in courses.
- Browse and enroll in courses.
- Access course materials and lessons.
- Track learning progress.
- Each course has a title, description, and multiple lessons.
- Lessons can include text, video, or PDF content.
- Students can enroll in courses.
- Duplicate enrollments are prevented.
- Upload course-related files like videos, PDFs, images, or audio.
- Supports AWS S3, Uploadcare, and Firebase Storage.
Frontend:
- Thymeleaf with Tailwind CSS
Backend:
- Spring Boot 3, Spring Security, JWT, Spring Data JPA
Database:
- MySQL
Media Storage: Feature not built yet
- Firebase Storage
API Documentation:
- OpenAPI / Swagger
Deployment:
- Deployed on Digital Ocean
- Unit tests with JUnit 5 and Mockito for backend services (Controller, Service, Repository)
- End-to-end testing for user workflows
- Java 17+
- MySQL
- Maven for backend dependency management
-
Clone the repository:
git clone <repository-url> cd lms
-
Set up the backend:
- Configure
application.propertieswith database and storage credentials. - Run the backend server:
mvn spring-boot:run
- Configure
-
Set up the frontend:
cd frontend npm install npm start -
Open the application in your browser:
http://localhost:3000
./mvnw package spring-boot:repackage -DskipTestsjava -jar targer/*.jar > app.log/backend
├── src
├ └── main
├ ├── java
├ ├ └── com.sarankirthic.lms
├ ├ └── code
├ └── resources
├ ├── static
├ ├── templates
├ └── application.properties
└── pom.xml
spring.datasource.url=jdbc:mysql://localhost:3306/lms
spring.datasource.username=root
spring.datasource.password=yourpassword
jwt.secret=your_jwt_secret
storage.aws.access-key=your-access-key
storage.aws.secret-key=your-secret-key
This project is licensed under the MIT License.