Skip to content

Latest commit

Β 

History

50 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ Esprit PIDEV 4SAE4 β€” English School Management

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).


πŸ“Œ Table of Contents


πŸ“– Overview

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

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    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        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

Backend

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

Frontend

Technology Version Usage
Angular 17+ Framework
TypeScript 5.x Language
RxJS 7.x Reactive programming
Angular Router 17+ Navigation

βš™οΈ Microservices

1. πŸ” Discovery Service (Eureka) β€” :8761

  • Service registry for all microservices
  • Health monitoring and load balancing

2. 🌐 Gateway Service β€” :8080

  • Single entry point for all API calls
  • CORS configuration (centralized)
  • Load balancing via Eureka

3. πŸ“ Assessment Service β€” :8081

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, duration

4. πŸ“ Resources Service β€” :8096

Handles 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

πŸ–₯️ Frontend

Pages

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

Key Features

  • 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

✨ Features

Assessment Management

  • βœ… 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

Resource Management

  • βœ… 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

Planning

  • βœ… Monthly calendar view
  • βœ… Timeline sidebar view
  • βœ… Navigate between months
  • βœ… Click on a day to see assessments

Dashboard

  • βœ… Real-time counts (Assessments, Resources)
  • βœ… Recent activity feed
  • βœ… Quick action buttons

πŸš€ Getting Started

Prerequisites

  • Java 17+
  • Node.js 18+
  • MySQL 8.x
  • Maven 3.x
  • Angular CLI 17+

1. Clone the repository

git clone https://github.com/firastourki/Esprit-PIDEV-4SAE4-2026-EnglishSchoolManagement.git
cd Esprit-PIDEV-4SAE4-2026-EnglishSchoolManagement

2. Start MySQL

Create two databases:

CREATE DATABASE assessment_db;
CREATE DATABASE resources_db;

3. Start services (in order)

# 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:run

4. Start Angular Frontend

cd esm-front
npm install
ng serve

5. Open in browser

http://localhost:4200/backoffice/dashboard

πŸ”Œ API Routes Summary

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

πŸ‘₯ Team

Name Role Branch
Firas Tourki Backend + Frontend (Assessment, Resources, Planning, Gateway) feature-firas-backend

πŸ“„ License

This project is developed for academic purposes at Esprit School of Engineering.


πŸŽ“ Esprit School of Engineering β€” PIDEV 4SAE4 β€” 2025/2026

About

This project was developed as part of the PIDEV - 4Th year Engineering Program at Esprit School of Engineering (Academic Year 2025-2026). A full-stack application using Spring Boot & Angular

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages