# antsaisme/royaltravel architecture

> Architecture diagram of the GitHub repository antsaisme/royaltravel, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/antsaisme/royaltravel
- Repository: https://github.com/antsaisme/royaltravel

## Overview

Gestion de réservation is a React + Symfony application for managing clients, vehicles, seats, and reservations. The likely user workflow is through the React interface to Symfony’s HTTP API, where controllers validate requests and use Doctrine repositories to access domain entities; reservation handling also manages seat occupancy and can generate PDF receipts. The README confirms the technology pairing, but frontend source and most controller code were not sampled, so frontend-to-API links and unsampled capabilities are shown only as unverified where appropriate.

Main entry points: [`src/Controller/RESERVERController.php`](https://github.com/antsaisme/royaltravel/blob/main/src/Controller/RESERVERController.php) (Reservation API), [`src/Kernel.php`](https://github.com/antsaisme/royaltravel/blob/main/src/Kernel.php) (Symfony kernel), [`src/Controller/PLACEController.php`](https://github.com/antsaisme/royaltravel/blob/main/src/Controller/PLACEController.php) (Seat API), [`src/Repository/VOITURERepository.php`](https://github.com/antsaisme/royaltravel/blob/main/src/Repository/VOITURERepository.php) (Vehicle repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["React interface"]
  node_react_app["React app<br/>[app.js]"]
  node_ui_components["Reservation UI"]
  node_http_client["HTTP client<br/>[axios.js]"]
end

subgraph group_api["Symfony API"]
  node_entry["HTTP entry<br/>[index.php]"]
  node_kernel["Symfony kernel<br/>[Kernel.php]"]
  node_client_api["Client API"]
  node_vehicle_api["Vehicle API"]
  node_seat_api["Seat API"]
  node_reservation_api["Reservation API"]
  node_home_api["Home controller<br/>[HomeController.php]"]
end

subgraph group_domain["Domain records"]
  node_client["Client<br/>[CLIENT.php]"]
  node_vehicle["Vehicle<br/>[VOITURE.php]"]
  node_seat["Seat<br/>[PLACE.php]"]
  node_reservation["Reservation<br/>[RESERVER.php]"]
end

subgraph group_persistence["Doctrine persistence"]
  node_client_repo["Client repository"]
  node_vehicle_repo["Vehicle repository"]
  node_seat_repo["Seat repository"]
  node_reservation_repo["Reservation repository"]
  node_database[("Doctrine database")]
end

node_user(("User"))
node_http_request(("HTTP request"))
node_pdf_engine["PDF generation"]

node_user -.->|"uses"| node_react_app
node_react_app -.->|"renders"| node_ui_components
node_ui_components -.->|"requests"| node_http_client
node_http_client -.->|"sends"| node_http_request
node_http_request -.->|"enters"| node_entry
node_entry -->|"boots"| node_kernel
node_kernel -.->|"routes"| node_client_api
node_kernel -.->|"routes"| node_vehicle_api
node_kernel -.->|"routes"| node_seat_api
node_kernel -.->|"routes"| node_reservation_api
node_client_api -->|"queries"| node_client_repo
node_vehicle_api -->|"queries"| node_vehicle_repo
node_vehicle_api -->|"creates seats"| node_seat_api
node_seat_api -->|"looks up"| node_vehicle_repo
node_seat_api -->|"queries"| node_seat_repo
node_reservation_api -->|"checks client"| node_client_repo
node_reservation_api -->|"checks vehicle"| node_vehicle_repo
node_reservation_api -->|"checks seat"| node_seat_repo
node_reservation_api -->|"queries"| node_reservation_repo
node_reservation_api -->|"updates occupancy"| node_seat_api
node_reservation_api -.->|"generates PDF"| node_pdf_engine
node_client_repo -->|"maps"| node_client
node_vehicle_repo -->|"maps"| node_vehicle
node_seat_repo -->|"maps"| node_seat
node_reservation_repo -->|"maps"| node_reservation
node_client_repo -.->|"reads and writes"| node_database
node_vehicle_repo -.->|"reads and writes"| node_database
node_seat_repo -.->|"reads and writes"| node_database
node_reservation_repo -.->|"reads and writes"| node_database

click node_react_app "https://github.com/antsaisme/royaltravel/blob/main/assets/app.js"
click node_ui_components "https://github.com/antsaisme/royaltravel/tree/main/assets/components"
click node_http_client "https://github.com/antsaisme/royaltravel/blob/main/assets/api/axios.js"
click node_entry "https://github.com/antsaisme/royaltravel/blob/main/public/index.php"
click node_kernel "https://github.com/antsaisme/royaltravel/blob/main/src/Kernel.php"
click node_client_api "https://github.com/antsaisme/royaltravel/blob/main/src/Controller/ClientController.php"
click node_vehicle_api "https://github.com/antsaisme/royaltravel/blob/main/src/Controller/VoitureController.php"
click node_seat_api "https://github.com/antsaisme/royaltravel/blob/main/src/Controller/PLACEController.php"
click node_reservation_api "https://github.com/antsaisme/royaltravel/blob/main/src/Controller/RESERVERController.php"
click node_home_api "https://github.com/antsaisme/royaltravel/blob/main/src/Controller/HomeController.php"
click node_client "https://github.com/antsaisme/royaltravel/blob/main/src/Entity/CLIENT.php"
click node_vehicle "https://github.com/antsaisme/royaltravel/blob/main/src/Entity/VOITURE.php"
click node_seat "https://github.com/antsaisme/royaltravel/blob/main/src/Entity/PLACE.php"
click node_reservation "https://github.com/antsaisme/royaltravel/blob/main/src/Entity/RESERVER.php"
click node_client_repo "https://github.com/antsaisme/royaltravel/blob/main/src/Repository/CLIENTRepository.php"
click node_vehicle_repo "https://github.com/antsaisme/royaltravel/blob/main/src/Repository/VOITURERepository.php"
click node_seat_repo "https://github.com/antsaisme/royaltravel/blob/main/src/Repository/PLACERepository.php"
click node_reservation_repo "https://github.com/antsaisme/royaltravel/blob/main/src/Repository/RESERVERRepository.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_react_app,node_ui_components,node_http_client,node_user toneBlue
class node_entry,node_kernel,node_client_api,node_vehicle_api,node_seat_api,node_reservation_api,node_home_api toneAmber
class node_client,node_vehicle,node_seat,node_reservation,node_http_request toneMint
class node_client_repo,node_vehicle_repo,node_seat_repo,node_reservation_repo,node_database toneRose
class node_pdf_engine toneIndigo
```

## Components

### React interface

- [React app](https://github.com/antsaisme/royaltravel/blob/main/assets/app.js): `assets/app.js`
- [Reservation UI](https://github.com/antsaisme/royaltravel/tree/main/assets/components): `assets/components`
- [HTTP client](https://github.com/antsaisme/royaltravel/blob/main/assets/api/axios.js): `assets/api/axios.js`

### Symfony API

- [HTTP entry](https://github.com/antsaisme/royaltravel/blob/main/public/index.php): `public/index.php`
- [Symfony kernel](https://github.com/antsaisme/royaltravel/blob/main/src/Kernel.php): `src/Kernel.php`
- [Client API](https://github.com/antsaisme/royaltravel/blob/main/src/Controller/ClientController.php): `src/Controller/ClientController.php`
- [Vehicle API](https://github.com/antsaisme/royaltravel/blob/main/src/Controller/VoitureController.php): `src/Controller/VoitureController.php`
- [Seat API](https://github.com/antsaisme/royaltravel/blob/main/src/Controller/PLACEController.php): `src/Controller/PLACEController.php`
- [Reservation API](https://github.com/antsaisme/royaltravel/blob/main/src/Controller/RESERVERController.php): `src/Controller/RESERVERController.php`
- [Home controller](https://github.com/antsaisme/royaltravel/blob/main/src/Controller/HomeController.php): `src/Controller/HomeController.php`

### Domain records

- [Client](https://github.com/antsaisme/royaltravel/blob/main/src/Entity/CLIENT.php): `src/Entity/CLIENT.php`
- [Vehicle](https://github.com/antsaisme/royaltravel/blob/main/src/Entity/VOITURE.php): `src/Entity/VOITURE.php`
- [Seat](https://github.com/antsaisme/royaltravel/blob/main/src/Entity/PLACE.php): `src/Entity/PLACE.php`
- [Reservation](https://github.com/antsaisme/royaltravel/blob/main/src/Entity/RESERVER.php): `src/Entity/RESERVER.php`

### Doctrine persistence

- [Client repository](https://github.com/antsaisme/royaltravel/blob/main/src/Repository/CLIENTRepository.php): `src/Repository/CLIENTRepository.php`
- [Vehicle repository](https://github.com/antsaisme/royaltravel/blob/main/src/Repository/VOITURERepository.php): `src/Repository/VOITURERepository.php`
- [Seat repository](https://github.com/antsaisme/royaltravel/blob/main/src/Repository/PLACERepository.php): `src/Repository/PLACERepository.php`
- [Reservation repository](https://github.com/antsaisme/royaltravel/blob/main/src/Repository/RESERVERRepository.php): `src/Repository/RESERVERRepository.php`
- **Doctrine database**

### Other components

- **User**
- **HTTP request**
- **PDF generation**

## Connections

- User → React app: uses
- React app → Reservation UI: renders
- Reservation UI → HTTP client: requests
- HTTP client → HTTP request: sends
- HTTP request → HTTP entry: enters
- HTTP entry → Symfony kernel: boots (evidence: `public/index.php`)
- Symfony kernel → Client API: routes
- Symfony kernel → Vehicle API: routes
- Symfony kernel → Seat API: routes
- Symfony kernel → Reservation API: routes
- Client API → Client repository: queries (evidence: `src/Controller/ClientController.php`)
- Vehicle API → Vehicle repository: queries (evidence: `src/Controller/VoitureController.php`)
- Vehicle API → Seat API: creates seats (evidence: `src/Controller/VoitureController.php`)
- Seat API → Vehicle repository: looks up (evidence: `src/Controller/PLACEController.php`)
- Seat API → Seat repository: queries (evidence: `src/Controller/PLACEController.php`)
- Reservation API → Client repository: checks client (evidence: `src/Controller/RESERVERController.php`)
- Reservation API → Vehicle repository: checks vehicle (evidence: `src/Controller/RESERVERController.php`)
- Reservation API → Seat repository: checks seat (evidence: `src/Controller/RESERVERController.php`)
- Reservation API → Reservation repository: queries (evidence: `src/Controller/RESERVERController.php`)
- Reservation API → Seat API: updates occupancy (evidence: `src/Controller/RESERVERController.php`)
- Reservation API → PDF generation: generates PDF
- Client repository → Client: maps (evidence: `src/Entity/CLIENT.php`)
- Vehicle repository → Vehicle: maps (evidence: `src/Entity/VOITURE.php`)
- Seat repository → Seat: maps (evidence: `src/Entity/PLACE.php`)
- Reservation repository → Reservation: maps (evidence: `src/Entity/RESERVER.php`)
- Client repository → Doctrine database: reads and writes
- Vehicle repository → Doctrine database: reads and writes
- Seat repository → Doctrine database: reads and writes
- Reservation repository → Doctrine database: reads and writes
