A full-stack microservices application for managing assessments, resources, and planning in an English language school.
Developed as part of the PIDEV β 4th Year Engineering Program at Esprit School of Engineering (Academic Year 2025β2026).
- Overview
- Architecture
- Tech Stack
- Microservices
- Frontend
- Features
- Getting Started
- API Routes
- Screenshots
- Team
English School Management is a platform designed for administrators to manage:
- π Assessments β create, edit, publish, and schedule exams, quizzes, and projects
- π Resources β upload and link files (PDF, DOCX, Audio, Images) to assessments
- π Planning β calendar view of scheduled assessments with timeline
- π Dashboard β real-time overview of school activity
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Angular Frontend β
β localhost:4200 β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API Gateway (Spring Cloud) β
β localhost:8080 β
β /api/assessments/** β Assessment Service β
β /api/enums/** β Assessment Service β
β /api/planning/** β Assessment Service β
β /api/resources/** β Resources Service β
ββββββββ¬βββββββββββββββββββββββββββ¬ββββββββββββββββββββ
β β
βΌ βΌ
βββββββββββββββ βββββββββββββββββββ
β Assessment β β Resources β
β Service β β Service β
β :8081 β β :8096 β
β MySQL DB β β MySQL DB + β
β β β File Storage β
ββββββββ¬βββββββ βββββββββββββββββ-β
β
βΌ
βββββββββββββββββββ
β Eureka Server β
β (Discovery) β
β :8761 β
βββββββββββββββββββ
| Technology | Version | Usage |
|---|---|---|
| Java | 23 | Language |
| Spring Boot | 3.2.0 | Framework |
| Spring Cloud Gateway | 4.1.0 | API Gateway + CORS |
| Spring Cloud Netflix Eureka | 4.1.0 | Service Discovery |
| Spring Data JPA | 3.2.0 | ORM |
| Hibernate | 6.3.1 | Database mapping |
| MySQL | 8.x | Database |
| Maven | 3.x | Build tool |
| Technology | Version | Usage |
|---|---|---|
| Angular | 17+ | Framework |
| TypeScript | 5.x | Language |
| RxJS | 7.x | Reactive programming |
| Angular Router | 17+ | Navigation |
- Service registry for all microservices
- Health monitoring and load balancing
- Single entry point for all API calls
- CORS configuration (centralized)
- Load balancing via Eureka
Handles all assessment and planning logic.
Endpoints:
GET /api/assessments β List all assessments
POST /api/assessments β Create assessment
PUT /api/assessments/{id} β Update assessment
DELETE /api/assessments/{id} β Delete assessment
GET /api/enums/types β Assessment types (EXAM, QUIZ, PROJECT)
GET /api/enums/statuses β Assessment statuses (DRAFT, PUBLISHED, CLOSED)
GET /api/planning/calendar β Calendar view by year/month
GET /api/planning/upcoming β Upcoming assessments
Entity: Assessment
id, title, courseName, type, status,
startDate, endDate, durationHandles file upload and resource management.
Endpoints:
POST /api/resources/upload β Upload file linked to assessment
GET /api/resources/assessment/{id} β Get resources by assessment
DELETE /api/resources/{id} β Delete resource
Entity: LearningResource
id, title, type, published, fileUrl, assessmentId| Route | Component | Description |
|---|---|---|
/backoffice/dashboard |
Dashboard | School overview & recent activity |
/backoffice/assessments |
Backoffice | Full CRUD for assessments |
/backoffice/resources |
Resources | File upload & management |
/backoffice/planning |
Planning | Calendar & timeline view |
- Custom Time Picker β scroll-based HH:MM selector for scheduling
- Real-time updates β no page refresh needed after create/upload/delete
- Pagination β 6 items per page with navigation
- Search & Filter β by title, course, type, status
- Notifications β success/error/confirm popups
- β Create, edit, delete assessments
- β Filter by status (DRAFT / PUBLISHED / CLOSED) and type (EXAM / QUIZ / PROJECT)
- β Schedule with start date, end date, duration
- β Custom scroll time picker for hour/minute selection
- β Upload PDF, DOCX, Audio, Image files
- β Link resources to specific assessments
- β View & Download files directly
- β Published / Private visibility toggle
- β Real-time list refresh after upload
- β Monthly calendar view
- β Timeline sidebar view
- β Navigate between months
- β Click on a day to see assessments
- β Real-time counts (Assessments, Resources)
- β Recent activity feed
- β Quick action buttons
- Java 17+
- Node.js 18+
- MySQL 8.x
- Maven 3.x
- Angular CLI 17+
git clone https://github.com/firastourki/Esprit-PIDEV-4SAE4-2026-EnglishSchoolManagement.git
cd Esprit-PIDEV-4SAE4-2026-EnglishSchoolManagementCreate two databases:
CREATE DATABASE assessment_db;
CREATE DATABASE resources_db;# 1. Eureka Discovery Service
cd backend/discovery-service
mvn spring-boot:run
# 2. Gateway Service
cd backend/gateway-service
mvn spring-boot:run
# 3. Assessment Service
cd backend/assessment-service
mvn spring-boot:run
# 4. Resources Service
cd backend/resources-service
mvn spring-boot:runcd esm-front
npm install
ng servehttp://localhost:4200/backoffice/dashboard
| Method | URL | Description |
|---|---|---|
| GET | localhost:8080/api/assessments |
All assessments |
| POST | localhost:8080/api/assessments |
Create assessment |
| PUT | localhost:8080/api/assessments/{id} |
Update assessment |
| DELETE | localhost:8080/api/assessments/{id} |
Delete assessment |
| GET | localhost:8080/api/enums/types |
Assessment types |
| GET | localhost:8080/api/enums/statuses |
Assessment statuses |
| GET | localhost:8080/api/planning/calendar?year=2026&month=3 |
Calendar |
| POST | localhost:8080/api/resources/upload |
Upload file |
| GET | localhost:8080/api/resources/assessment/{id} |
Resources by assessment |
| DELETE | localhost:8080/api/resources/{id} |
Delete resource |
| Name | Role | Branch |
|---|---|---|
| Firas Tourki | Backend + Frontend (Assessment, Resources, Planning, Gateway) | feature-firas-backend |
This project is developed for academic purposes at Esprit School of Engineering.