- Naveen Jaisankar (23200145)
- Shaline Raghupathy (23201217)
- Nithishh Saravanan (23200138)
Ctrl+Edu is a comprehensive distributed educational campus management system designed to facilitate efficient campus operations for students, lecturers, and super admins. The system addresses critical distributed system challenges, including fault tolerance, scalability, and real-time communication, with the following key features:
- Role-Based Access Control: Secure access for students, lecturers, and super admins using Keycloak.
- Course & Enrollment Management: Super admins can manage courses, enroll students, and assign lecturers.
- Real-Time Chat Service: WebSockets and Kafka power real-time chat communication for subject-specific collaboration.
- Scalability & Fault Tolerance: Technologies like Redis, Kafka, RabbitMQ, and Eureka ensure high availability.
- Notification Service: RabbitMQ-based notification service sends automated emails for critical events.
- Gateway Service: Netflix Eureka for service discovery and API routing.
- React with TypeScript
- Vite
- Tailwind CSS
- WebSocket Integration
- Keycloak JavaScript Adapter
- Java with Spring Boot
- AuthService: Manages authentication using Keycloak.
- ChatService: Real-time messaging using WebSockets and Kafka.
- MasterService: Core business logic and database management.
- NotificationService: RabbitMQ-based email notifications.
- GatewayService: Spring Cloud Gateway for routing and token validation.
- EurekaService: Service discovery and load balancing with Netflix Eureka.
- Kafka & Zookeeper (Message Streaming)
- Redis (Caching)
- RabbitMQ (Message Queue)
- PostgreSQL (Relational Database)
- Docker & Docker Compose
- Netflix Eureka (Service Discovery)
- Keycloak (Identity and Access Management)
- Docker and Docker Compose
- Java 17+
- Node.js with npm
- Keycloak setup (Configured Realm and Client)
-
Clone the repository:
git clone https://github.com/Naveen-Jaisankar/CtrlEdu.git cd CtrlEdu -
Start the Services:
docker-compose up --build
-
Keycloak Configuration:
- Access Keycloak URL:
http://localhost:8080 - Login with
adminas both username and password. - Create a new realm named
CtrlEdu. - Create a client ID named
ctrledu-client. - Enable:
- Client authentication
- Client authorization
- Standard Flow
- Direct Access Grants
- Service Account Roles
- OAuth 2.0 Device Authorization Grant
- Set:
- Root URL:
http://localhost:8080/ - Valid Redirect URI:
http://localhost:8080/* - Web Origin:
http://localhost:8080/
- Root URL:
- Click Save.
- Create realm roles:
student,super-admin,teacher(all case-sensitive). - Go to Clients > ctrledu-client > Credentials tab and copy the Client Secret.
- Paste the client secret in the
application.propertiesof Auth Service for the keykeycloak.credentials.secret.
- Access Keycloak URL:
-
Restart Services:
docker-compose down # Delete all Docker images and containers but not volumes mvn clean install docker-compose up --build -
Run Frontend Manually (Optional):
cd Frontend/Client npm install npm run dev -
Access the Application:
- Frontend:
http://localhost:3000 - Keycloak Admin:
http://localhost:8080
- Frontend:
-
Stopping Services:
docker-compose down
frontend/: React frontend with TypeScript and Viteauth-service/: Handles authentication using Keycloakchat-service/: Real-time chat service using Kafka and WebSocketsmaster-service/: Core academic management logicnotification-service/: RabbitMQ-driven notification handlinggateway-service/: Central API gatewayeureka-service/: Service discovery using Netflix Eurekadocker-compose.yml: Manages all services and dependencies
- Naveen Jaisankar: CommonService, EurekaService, GatewayService, NotificationService, Docker setup.
- Shaline Raghupathy: ChatService, MasterService, WebSocket Integration, Redis Caching.
- Nithishh Saravanan: AuthService, Keycloak Integration, Frontend Dashboard (Admin, Teacher, Student).
This project is licensed under the MIT License.