A comprehensive Spring Boot-based Online Course Management System that provides a platform for instructors to create and manage courses, and students to enroll and track their learning progress.
- Framework: Spring Boot (Java 17)
- Database: PostgreSQL
- Authentication: Keycloak OAuth2 with JWT
- Migration: Flyway
- Documentation: Swagger OpenAPI
- Spring Web
- Spring Security
- Spring Data JPA
- PostgreSQL Driver
- Keycloak OAuth2
- Flyway
- Swagger OpenAPI
- Keycloak: Authentication and Authorization Server
- PostgreSQL: Primary Database
- Online Course Application: Main Application Server
- Platform: Keycloak
- Authentication Flow: OAuth2 Authorization Code
- Token Type: JWT (JSON Web Tokens)
| Username | Password | Role |
|---|---|---|
| jamesdio | jamesdio | ADMIN |
| johndoe | johndoe | INSTRUCTOR |
| janedoe | janedoe | STUDENT |
-
ADMIN
- Manage system categories
- Full administrative access
-
INSTRUCTOR
- Create and manage courses
- Add course modules and lessons
- Publish/unpublish courses
- Track student enrollments
-
STUDENT
- Browse available courses
- Enroll/unenroll in courses
- Access course content
- Track learning progress
- Create courses with detailed information
- Multi-level course structure (Courses → Lessons)
- Course categorization
- Course publishing workflow
- Search and filter capabilities
- Create, update, and delete lessons
- Lesson progress tracking
- Progress status management
POST /api/login: User authenticationGET /api/user-info: Retrieve user information
POST /api/v1/courses: Create a courseGET /api/v1/courses: List all coursesGET /api/v1/courses/search: Search coursesGET /api/v1/courses/filter: Filter coursesPOST /api/v1/courses/{courseId}/enroll: Enroll in a course
POST /api/v1/courses/{courseId}/lessons: Create a lessonPUT /api/v1/lessons/{lessonId}/progress: Update lesson progressGET /api/v1/courses/{courseId}/lessons: Get course lessons
POST /api/v1/categories: Create a categoryGET /api/v1/categories: List all categories
- Java 17
- Docker
- PostgreSQL
- Keycloak
- Clone the repository
- Set environment variables in
docker-compose.yml - Run Docker Compose:
docker-compose up -d
- Provide environment variables for existing
application.properties - Configure PostgreSQL connection
- Set up Keycloak realm
- Swagger UI:
http://localhost:8080/swagger-ui.html - API Docs:
http://localhost:8080/v3/api-docs
- Keycloak: Authentication Server
- PostgreSQL: Database
- Online Course App: Main Application
- OAuth2 Resource Server
- JWT Token Validation
- Role-Based Access Control
- Secure Endpoint Protection
- Slf4j logging
- Health checks for services
- Implement course reviews
- Advanced filtering
- More granular access controls
- Comprehensive error handling
- Verify Keycloak realm configuration
- Check database connections
- Validate JWT token settings