# gab-abc/internship-management-intranet architecture

> Architecture diagram of the GitHub repository gab-abc/internship-management-intranet, 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/gab-abc/internship-management-intranet
- Repository: https://github.com/gab-abc/internship-management-intranet

## Overview

This is a PHP intranet for schools to manage internships, companies, faculty, and user access. The main workflow is a user request entering through the front controller, passing route and role checks, then reaching a controller that searches or changes internship records and renders a page; authorized staff can also export filtered listings as PDFs. Separate branches cover company and faculty directories, user administration, account access, and school configuration. The excerpts show concrete calls for several controllers; links for other documented features are limited to routes and tree evidence.

Main entry points: [`src/Core/Router.php`](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Core/Router.php) (Route dispatch), [`src/Controllers/StageController.php`](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/StageController.php) (Internship workflow), [`src/Core/Controller.php`](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Core/Controller.php) (View and access base), [`src/Controllers/EntrepriseController.php`](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/EntrepriseController.php) (Company directory)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_request["Request and access"]
  node_front["Front controller<br/>[index.php]"]
  node_router["Route dispatch<br/>[Router.php]"]
  node_auth["Authentication<br/>[Auth.php]"]
  node_authcontroller["Login and account<br/>[AuthController.php]"]
end

subgraph group_internships["Internship management"]
  node_homecontroller["Dashboard<br/>[HomeController.php]"]
  node_stagecontroller["Internship workflow"]
  node_stagemodel["Internship records<br/>[Stage.php]"]
  node_studentmodel["Student records<br/>[Etudiant.php]"]
  node_tutormodel["Tutor records<br/>[Tuteur.php]"]
  node_stagepdf["Internship PDF<br/>[StagePdf.php]"]
end

subgraph group_administration["Directories and administration"]
  node_entreprisecontroller["Company directory"]
  node_entreprisemodel["Company records<br/>[Entreprise.php]"]
  node_entreprisepdf["Company PDF<br/>[EntreprisePdf.php]"]
  node_profcontroller["Faculty management<br/>[ProfController.php]"]
  node_profmodel["Faculty records<br/>[Prof.php]"]
  node_usercontroller["User administration<br/>[UserController.php]"]
  node_usermodel["User records<br/>[User.php]"]
  node_configcontroller["School settings"]
end

subgraph group_presentation["Rendering and persistence"]
  node_controllerbase["View and access base<br/>[Controller.php]"]
  node_views["Page templates"]
  node_layout["Shared page layout<br/>[main.php]"]
  node_database["PDO database access<br/>[Database.php]"]
end

node_user(("School user"))
node_dbservice[("MySQL database")]

node_user -->|"requests page"| node_front
node_front -->|"dispatches to"| node_router
node_router -->|"checks access"| node_auth
node_router -->|"dispatches route"| node_authcontroller
node_router -->|"dispatches route"| node_homecontroller
node_router -->|"dispatches route"| node_stagecontroller
node_router -->|"dispatches route"| node_entreprisecontroller
node_router -->|"dispatches route"| node_profcontroller
node_router -->|"dispatches route"| node_usercontroller
node_router -->|"dispatches route"| node_configcontroller
node_authcontroller -->|"authenticates user"| node_auth
node_homecontroller -->|"loads statistics"| node_stagemodel
node_stagecontroller -->|"searches and updates"| node_stagemodel
node_stagecontroller -->|"updates student"| node_studentmodel
node_stagecontroller -->|"loads and resolves company"| node_entreprisemodel
node_stagecontroller -->|"resolves tutor"| node_tutormodel
node_stagecontroller -->|"loads and resolves faculty"| node_profmodel
node_stagecontroller -->|"generates PDF"| node_stagepdf
node_entreprisecontroller -->|"searches and updates"| node_entreprisemodel
node_entreprisecontroller -->|"generates PDF"| node_entreprisepdf
node_profcontroller -->|"manages faculty"| node_profmodel
node_usercontroller -->|"manages accounts"| node_usermodel
node_homecontroller -->|"renders page"| node_controllerbase
node_stagecontroller -->|"renders page"| node_controllerbase
node_entreprisecontroller -->|"renders page"| node_controllerbase
node_profcontroller -->|"renders page"| node_controllerbase
node_usercontroller -->|"renders page"| node_controllerbase
node_authcontroller -->|"renders account"| node_controllerbase
node_controllerbase -->|"loads template"| node_views
node_controllerbase -->|"wraps content"| node_layout
node_stagemodel -->|"queries"| node_database
node_entreprisemodel -->|"queries"| node_database
node_usermodel -->|"queries"| node_database
node_database -->|"connects to"| node_dbservice

click node_front "https://github.com/gab-abc/internship-management-intranet/blob/main/index.php"
click node_router "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Core/Router.php"
click node_auth "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Core/Auth.php"
click node_authcontroller "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/AuthController.php"
click node_homecontroller "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/HomeController.php"
click node_stagecontroller "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/StageController.php"
click node_stagemodel "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/Stage.php"
click node_studentmodel "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/Etudiant.php"
click node_tutormodel "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/Tuteur.php"
click node_stagepdf "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Lib/StagePdf.php"
click node_entreprisecontroller "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/EntrepriseController.php"
click node_entreprisemodel "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/Entreprise.php"
click node_entreprisepdf "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Lib/EntreprisePdf.php"
click node_profcontroller "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/ProfController.php"
click node_profmodel "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/Prof.php"
click node_usercontroller "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/UserController.php"
click node_usermodel "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/User.php"
click node_configcontroller "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/ConfigController.php"
click node_controllerbase "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Core/Controller.php"
click node_views "https://github.com/gab-abc/internship-management-intranet/tree/main/src/Views"
click node_layout "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Views/layout/main.php"
click node_database "https://github.com/gab-abc/internship-management-intranet/blob/main/src/Core/Database.php"

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_front,node_router,node_auth,node_authcontroller,node_user toneBlue
class node_homecontroller,node_stagecontroller,node_stagemodel,node_studentmodel,node_tutormodel,node_stagepdf,node_dbservice toneAmber
class node_entreprisecontroller,node_entreprisemodel,node_entreprisepdf,node_profcontroller,node_profmodel,node_usercontroller,node_usermodel,node_configcontroller toneMint
class node_controllerbase,node_views,node_layout,node_database toneRose
```

## Components

### Request and access

- [Front controller](https://github.com/gab-abc/internship-management-intranet/blob/main/index.php): `index.php`
- [Route dispatch](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Core/Router.php): `src/Core/Router.php`
- [Authentication](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Core/Auth.php): `src/Core/Auth.php`
- [Login and account](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/AuthController.php): `src/Controllers/AuthController.php`

### Internship management

- [Dashboard](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/HomeController.php): `src/Controllers/HomeController.php`
- [Internship workflow](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/StageController.php): `src/Controllers/StageController.php`
- [Internship records](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/Stage.php): `src/Models/Stage.php`
- [Student records](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/Etudiant.php): `src/Models/Etudiant.php`
- [Tutor records](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/Tuteur.php): `src/Models/Tuteur.php`
- [Internship PDF](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Lib/StagePdf.php): `src/Lib/StagePdf.php`

### Directories and administration

- [Company directory](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/EntrepriseController.php): `src/Controllers/EntrepriseController.php`
- [Company records](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/Entreprise.php): `src/Models/Entreprise.php`
- [Company PDF](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Lib/EntreprisePdf.php): `src/Lib/EntreprisePdf.php`
- [Faculty management](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/ProfController.php): `src/Controllers/ProfController.php`
- [Faculty records](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/Prof.php): `src/Models/Prof.php`
- [User administration](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/UserController.php): `src/Controllers/UserController.php`
- [User records](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Models/User.php): `src/Models/User.php`
- [School settings](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Controllers/ConfigController.php): `src/Controllers/ConfigController.php`

### Rendering and persistence

- [View and access base](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Core/Controller.php): `src/Core/Controller.php`
- [Page templates](https://github.com/gab-abc/internship-management-intranet/tree/main/src/Views): `src/Views`
- [Shared page layout](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Views/layout/main.php): `src/Views/layout/main.php`
- [PDO database access](https://github.com/gab-abc/internship-management-intranet/blob/main/src/Core/Database.php): `src/Core/Database.php`

### Other components

- **School user**
- **MySQL database**

## Connections

- School user → Front controller: requests page
- Front controller → Route dispatch: dispatches to
- Route dispatch → Authentication: checks access
- Route dispatch → Login and account: dispatches route
- Route dispatch → Dashboard: dispatches route
- Route dispatch → Internship workflow: dispatches route
- Route dispatch → Company directory: dispatches route
- Route dispatch → Faculty management: dispatches route
- Route dispatch → User administration: dispatches route
- Route dispatch → School settings: dispatches route
- Login and account → Authentication: authenticates user
- Dashboard → Internship records: loads statistics
- Internship workflow → Internship records: searches and updates
- Internship workflow → Student records: updates student
- Internship workflow → Company records: loads and resolves company
- Internship workflow → Tutor records: resolves tutor
- Internship workflow → Faculty records: loads and resolves faculty
- Internship workflow → Internship PDF: generates PDF
- Company directory → Company records: searches and updates
- Company directory → Company PDF: generates PDF
- Faculty management → Faculty records: manages faculty
- User administration → User records: manages accounts
- Dashboard → View and access base: renders page
- Internship workflow → View and access base: renders page
- Company directory → View and access base: renders page
- Faculty management → View and access base: renders page
- User administration → View and access base: renders page
- Login and account → View and access base: renders account
- View and access base → Page templates: loads template
- View and access base → Shared page layout: wraps content
- Internship records → PDO database access: queries
- Company records → PDO database access: queries
- User records → PDO database access: queries
- PDO database access → MySQL database: connects to
