# fadaldrame97-sys/e-bourse-ugesm architecture

> Architecture diagram of the GitHub repository fadaldrame97-sys/e-bourse-ugesm, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fadaldrame97-sys/e-bourse-ugesm
- Repository: https://github.com/fadaldrame97-sys/e-bourse-ugesm

## Overview

E-Bourse UGESM centralizes scholarship and return-ticket procedures for Senegalese students in Morocco. Students authenticate, submit applications with supporting files, track decisions and notifications; authorized administrators review, approve or reject applications, manage students and consult statistics. The React client calls a Laravel API, whose controllers delegate domain work to services backed by Eloquent models and storage. The README documents the broader capability set; some service and route wiring is represented only at the documented subsystem level because those sources were not sampled.

Main entry points: [`Backend/routes/api.php`](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/routes/api.php) (API routes), [`Backend/app/Models`](https://github.com/fadaldrame97-sys/e-bourse-ugesm/tree/main/Backend/app/Models) (Eloquent records), [`Backend/app/Services/DemandeBourseService.php`](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/DemandeBourseService.php) (Scholarship workflow), [`Backend/app/Services/BilletRetourService.php`](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/BilletRetourService.php) (Ticket workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React client"]
  node_app["Route application<br/>[App.jsx]"]
  node_student_pages["Student pages"]
  node_admin_pages["Admin pages"]
  node_scholarship_form["Scholarship form<br/>[DemandeBourse.jsx]"]
  node_http_client["API client<br/>[axios.js]"]
end

subgraph group_api["Laravel API"]
  node_api_routes["API routes<br/>[api.php]"]
  node_auth_controller["Authentication API<br/>[AuthController.php]"]
  node_scholarship_controller["Scholarship API"]
  node_ticket_controller["Return ticket API"]
  node_student_controller["Student API"]
  node_notification_controller["Notification API"]
  node_stats_controller["Statistics API"]
end

subgraph group_domain["Domain services"]
  node_auth_service["Authentication<br/>[AuthService.php]"]
  node_scholarship_service["Scholarship workflow"]
  node_ticket_service["Ticket workflow"]
  node_student_service["Student management"]
  node_notification_service["Notifications"]
  node_stats_service["Statistics"]
end

subgraph group_data["Persistence"]
  node_models["Eloquent records"]
  node_sql_store[("Relational database")]
  node_file_store[("Uploaded documents")]
end

node_student(("Student"))
node_admin(("Administrator"))

node_student -->|"uses"| node_app
node_admin -->|"uses"| node_app
node_app -->|"routes"| node_student_pages
node_app -->|"routes"| node_admin_pages
node_student_pages -->|"opens"| node_scholarship_form
node_student_pages -->|"requests"| node_http_client
node_admin_pages -->|"requests"| node_http_client
node_scholarship_form -->|"submits"| node_http_client
node_http_client -->|"HTTP requests"| node_api_routes
node_api_routes -->|"dispatches"| node_auth_controller
node_api_routes -->|"dispatches"| node_scholarship_controller
node_api_routes -->|"dispatches"| node_ticket_controller
node_api_routes -->|"dispatches"| node_student_controller
node_api_routes -->|"dispatches"| node_notification_controller
node_api_routes -->|"dispatches"| node_stats_controller
node_auth_controller -->|"calls"| node_auth_service
node_scholarship_controller -->|"calls"| node_scholarship_service
node_ticket_controller -->|"calls"| node_ticket_service
node_student_controller -->|"calls"| node_student_service
node_notification_controller -->|"calls"| node_notification_service
node_stats_controller -->|"calls"| node_stats_service
node_scholarship_service -->|"creates notices"| node_notification_service
node_ticket_service -->|"creates notices"| node_notification_service
node_auth_service -->|"loads user"| node_models
node_scholarship_service -->|"reads and writes"| node_models
node_ticket_service -->|"reads and writes"| node_models
node_student_service -->|"reads and writes"| node_models
node_notification_service -->|"stores notices"| node_models
node_stats_service -->|"queries records"| node_models
node_models -->|"persists"| node_sql_store
node_scholarship_service -->|"stores documents"| node_file_store
node_ticket_service -->|"stores diploma"| node_file_store

click node_app "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Frontend/src/App.jsx"
click node_student_pages "https://github.com/fadaldrame97-sys/e-bourse-ugesm/tree/main/Frontend/src/pages"
click node_admin_pages "https://github.com/fadaldrame97-sys/e-bourse-ugesm/tree/main/Frontend/src/pages"
click node_scholarship_form "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Frontend/src/components/DemandeBourse.jsx"
click node_http_client "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Frontend/src/api/axios.js"
click node_api_routes "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/routes/api.php"
click node_auth_controller "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/AuthController.php"
click node_scholarship_controller "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/DemandeBourseController.php"
click node_ticket_controller "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/BilletRetourController.php"
click node_student_controller "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/EtudiantController.php"
click node_notification_controller "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/NotificationController.php"
click node_stats_controller "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/StatistiqueController.php"
click node_auth_service "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/AuthService.php"
click node_scholarship_service "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/DemandeBourseService.php"
click node_ticket_service "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/BilletRetourService.php"
click node_student_service "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/EtudiantService.php"
click node_notification_service "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/NotificationService.php"
click node_stats_service "https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/StatistiqueService.php"
click node_models "https://github.com/fadaldrame97-sys/e-bourse-ugesm/tree/main/Backend/app/Models"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_student_pages,node_admin_pages,node_scholarship_form,node_http_client toneBlue
class node_api_routes,node_auth_controller,node_scholarship_controller,node_ticket_controller,node_student_controller,node_notification_controller,node_stats_controller toneAmber
class node_auth_service,node_scholarship_service,node_ticket_service,node_student_service,node_notification_service,node_stats_service toneMint
class node_models,node_sql_store,node_file_store toneRose
class node_student,node_admin toneIndigo
```

## Components

### React client

- [Route application](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Frontend/src/App.jsx): `Frontend/src/App.jsx`
- [Student pages](https://github.com/fadaldrame97-sys/e-bourse-ugesm/tree/main/Frontend/src/pages): `Frontend/src/pages`
- [Admin pages](https://github.com/fadaldrame97-sys/e-bourse-ugesm/tree/main/Frontend/src/pages): `Frontend/src/pages`
- [Scholarship form](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Frontend/src/components/DemandeBourse.jsx): `Frontend/src/components/DemandeBourse.jsx`
- [API client](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Frontend/src/api/axios.js): `Frontend/src/api/axios.js`

### Laravel API

- [API routes](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/routes/api.php): `Backend/routes/api.php`
- [Authentication API](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/AuthController.php): `Backend/app/Http/Controllers/Api/AuthController.php`
- [Scholarship API](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/DemandeBourseController.php): `Backend/app/Http/Controllers/Api/DemandeBourseController.php`
- [Return ticket API](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/BilletRetourController.php): `Backend/app/Http/Controllers/Api/BilletRetourController.php`
- [Student API](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/EtudiantController.php): `Backend/app/Http/Controllers/Api/EtudiantController.php`
- [Notification API](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/NotificationController.php): `Backend/app/Http/Controllers/Api/NotificationController.php`
- [Statistics API](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Http/Controllers/Api/StatistiqueController.php): `Backend/app/Http/Controllers/Api/StatistiqueController.php`

### Domain services

- [Authentication](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/AuthService.php): `Backend/app/Services/AuthService.php`
- [Scholarship workflow](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/DemandeBourseService.php): `Backend/app/Services/DemandeBourseService.php`
- [Ticket workflow](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/BilletRetourService.php): `Backend/app/Services/BilletRetourService.php`
- [Student management](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/EtudiantService.php): `Backend/app/Services/EtudiantService.php`
- [Notifications](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/NotificationService.php): `Backend/app/Services/NotificationService.php`
- [Statistics](https://github.com/fadaldrame97-sys/e-bourse-ugesm/blob/main/Backend/app/Services/StatistiqueService.php): `Backend/app/Services/StatistiqueService.php`

### Persistence

- [Eloquent records](https://github.com/fadaldrame97-sys/e-bourse-ugesm/tree/main/Backend/app/Models): `Backend/app/Models`
- **Relational database**
- **Uploaded documents**

### Other components

- **Student**
- **Administrator**

## Connections

- Student → Route application: uses
- Administrator → Route application: uses
- Route application → Student pages: routes
- Route application → Admin pages: routes
- Student pages → Scholarship form: opens
- Student pages → API client: requests
- Admin pages → API client: requests
- Scholarship form → API client: submits
- API client → API routes: HTTP requests
- API routes → Authentication API: dispatches
- API routes → Scholarship API: dispatches
- API routes → Return ticket API: dispatches
- API routes → Student API: dispatches
- API routes → Notification API: dispatches
- API routes → Statistics API: dispatches
- Authentication API → Authentication: calls
- Scholarship API → Scholarship workflow: calls
- Return ticket API → Ticket workflow: calls
- Student API → Student management: calls
- Notification API → Notifications: calls
- Statistics API → Statistics: calls
- Scholarship workflow → Notifications: creates notices
- Ticket workflow → Notifications: creates notices
- Authentication → Eloquent records: loads user
- Scholarship workflow → Eloquent records: reads and writes
- Ticket workflow → Eloquent records: reads and writes
- Student management → Eloquent records: reads and writes
- Notifications → Eloquent records: stores notices
- Statistics → Eloquent records: queries records
- Eloquent records → Relational database: persists
- Scholarship workflow → Uploaded documents: stores documents
- Ticket workflow → Uploaded documents: stores diploma
