A comprehensive web application for managing and planning exam surveillance at the National School of Applied Sciences of El Jadida (ENSA El Jadida).
- Department and faculty management
- Exam session planning
- Automated surveillance assignments
- Venue management (amphitheaters and classrooms)
- Backup supervisor system
- Surveillance schedule generation
- React.js for UI components
- Redux Toolkit for state management and API calls
- Material Tailwind for modern UI components
- Responsive design optimized for all devices
Built on Spring Cloud Netflix stack for robust microservices:
-
API Gateway Service
- Spring Cloud Gateway for routing
- Load balancing
- Security filters
- Rate limiting
-
Service Registry (Eureka Server)
- Service discovery
- Load balancing
- Fault tolerance
-
Config Server
- Centralized configuration
- Environment-specific settings
- Runtime configuration updates
-
Core Microservices
-
Exam Service (Service des Examens)
-
Department Service (Service des Départements)
-
- Keycloak for Identity and Access Management
- OAuth 2.0 / OpenID Connect
- Role-based access control
- Single Sign-On (SSO)
- User Federation
- MySQL databases (one per service)
- Database per service pattern
- Node.js (v14+)
- Java 17
- Maven 3.8+
- MySQL 8.0+
- Docker & Docker Compose
- Keycloak 21+
# Clone the repository
git clone https://github.com/Mohammedaoudi/Exam-surveillance-platform.git
# Navigate to frontend directory
cd frontend
# Install dependencies
npm install
# Start development server
npm start
# Start infrastructure services
docker-compose up -d
# Navigate to service directory
cd [service-name]
# Build with Maven
mvn clean install
# Run the service
mvn spring-boot:run
- Start Keycloak server:
docker-compose up keycloak
- Access Keycloak Admin Console (http://localhost:8180)
- Create new realm
- Configure client settings
- Set up roles and initial users
REACT_APP_API_URL=http://localhost:8080
REACT_APP_KEYCLOAK_URL=http://localhost:8180
REACT_APP_KEYCLOAK_REALM=your-realm
REACT_APP_KEYCLOAK_CLIENT_ID=your-client-id
spring:
application:
name: exam-service
cloud:
config:
uri: http://localhost:8888
discovery:
enabled: true
datasource:
url: jdbc:mysql://localhost:3306/exam_db
username: root
password: root
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
freecompress-surveillanceDemo.mp4
For support and questions, please open an issue on GitHub.
This project is the property of ENSA El Jadida. All rights reserved.