This repository contains the code for a Learning Management System (LMS) built using Spring Boot microservices. The project consists of several services including Discovery Server, API Gateway, and various microservices for managing students, staff, courses, enrollments, content, and notifications.
-
Spring Boot: The primary framework used for building the microservices.
-
Java: The programming language used for developing the microservices.
-
Spring Cloud: For building distributed systems and microservices.
- Spring Cloud Config: For centralized configuration management.
- Spring Cloud Netflix Eureka: For service discovery.
- Spring Cloud Gateway: For API Gateway.
- Spring Cloud OpenFeign: Communication between microservices
-
Lombok: An annotations Java library that is used to reduce boilerplate code.
-
Apache Kafka: Distributed event store and stream-processing
- Kafka Consumer: KafkaConsumerConfig.java (Course service)
- Kafka Producer: KafkaTopicConfig.java (University service)
-
Spring Security: Protecting endpoints by using two forms of OAuth 2.0 Bearer Tokens
- ReactJs: The primary framework used for building the front end.
- JavaScript with TypeSript: The Programming language used for developing frontend
- Amplify UI: Used for Integration with AWS Cognito
- Axios: Http client (api.ts)
- Bootstrap: The programming language used for developing the microservices.
- PostgreSql: The primary application database.
- Pageadmin4: Interact with the database
- Vault by HashiCorp: Manage backend secrets and protect sensitive data.
- Dotenv: Load environment variables.
- Amazon Cognito User Pool: User authentication and access control.
- JWT: Used for secure authentication and authorization.
- RBAC: Manage user permissions (Admin / Student/ Lecturer)
- Amplify Auth: Authentication and authorization for frontend using AWS Cognito
- Docker: For containerizing the microservices.
- Docker Compose: For orchestrating multi-container Docker applications.
- Github Action: Build and analyze (with sonarcloud)
- Terraform: Automated creating AWS Cognito user group with admin use
- AWS Lambda: Cognito pre token generation trigger.
- Amazon S3: Store static content