# ekkrog/adaremise architecture

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

- Interactive diagram: https://gitdiagram.com/ekkrog/adaremise
- Repository: https://github.com/ekkrog/adaremise

## Overview

La Remise est une application de gestion d’une boutique solidaire : les bénévoles enregistrent des dépôts et leurs objets, suivent leur état, consultent les stocks et statistiques, puis réalisent des ventes. Le frontend React route les écrans et utilise un utilitaire partagé pour les échanges avec l’API Express ; les routes accèdent à PostgreSQL via le pool. Les relations entre écrans et API ne sont pas toutes visibles dans les extraits : les liens vers l’utilitaire partagé sont donc indiqués sans prétendre que son transport HTTP a été inspecté.

Main entry points: [`front-react/src/App.jsx`](https://github.com/ekkrog/adaremise/blob/main/front-react/src/App.jsx) (Routage application), [`back/server/server.js`](https://github.com/ekkrog/adaremise/blob/main/back/server/server.js) (Serveur Express), [`back/server/db.js`](https://github.com/ekkrog/adaremise/blob/main/back/server/db.js) (Pool PostgreSQL), [`front-react/src/assets/utils.js`](https://github.com/ekkrog/adaremise/blob/main/front-react/src/assets/utils.js) (Client API partagé)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Interface React"]
  node_app["Routage application<br/>[App.jsx]"]
  node_api_client["Client API partagé<br/>[utils.js]"]
end

subgraph group_inventory["Dépôts et inventaire"]
  node_inventory_list["Liste objets<br/>[ListeObjets.jsx]"]
  node_filters["Filtres objets<br/>[Filtres.jsx]"]
  node_object_display["Affichage objet<br/>[Objet.jsx]"]
  node_object_tracking["Suivi objet<br/>[SuiviObjets.jsx]"]
  node_new_deposit["Nouveau dépôt<br/>[NouveauDepot.jsx]"]
  node_deposit_forms["Formulaires dépôt"]
  node_people_list["Liste personnes<br/>[ListePersonnes.jsx]"]
end

subgraph group_sales["Ventes et bénévoles"]
  node_volunteer_login["Choix bénévole<br/>[Benevoles.jsx]"]
  node_volunteer_admin["Gestion bénévoles"]
  node_volunteer_form["Ajout bénévole<br/>[AjoutBenevole.jsx]"]
  node_sales_screen["Vente et panier<br/>[Vente.jsx]"]
  node_stats_screen["Statistiques<br/>[Stats.jsx]"]
end

subgraph group_backend["API et données"]
  node_api_server["Serveur Express<br/>[server.js]"]
  node_people_routes["Routes personnes<br/>[personnes.js]"]
  node_volunteer_routes["Routes bénévoles<br/>[benevoles.js]"]
  node_category_routes["Routes catégories<br/>[categories.js]"]
  node_deposit_routes["Routes dépôts<br/>[depots.js]"]
  node_object_routes["Routes objets<br/>[objets.js]"]
  node_sales_routes["Routes ventes<br/>[ventes.js]"]
  node_stats_routes["Routes statistiques<br/>[stats.js]"]
  node_pool["Pool PostgreSQL<br/>[db.js]"]
end

node_volunteer(("Bénévole"))
node_postgres[("PostgreSQL")]

node_volunteer -->|"utilise"| node_app
node_app -->|"route vers"| node_inventory_list
node_app -->|"route vers"| node_object_tracking
node_app -->|"route vers"| node_new_deposit
node_app -->|"route vers"| node_sales_screen
node_app -->|"route vers"| node_stats_screen
node_app -->|"route vers"| node_volunteer_login
node_app -->|"route vers"| node_volunteer_admin
node_inventory_list -->|"affiche"| node_filters
node_inventory_list -->|"affiche"| node_object_display
node_object_tracking -->|"appelle"| node_api_client
node_inventory_list -->|"appelle"| node_api_client
node_new_deposit -->|"appelle"| node_api_client
node_new_deposit -->|"utilise"| node_deposit_forms
node_new_deposit -->|"utilise"| node_people_list
node_sales_screen -->|"appelle"| node_api_client
node_stats_screen -->|"utilise"| node_api_client
node_volunteer_login -->|"utilise"| node_api_client
node_volunteer_admin -->|"utilise"| node_volunteer_form
node_api_server -->|"monte"| node_volunteer_routes
node_api_server -->|"monte"| node_category_routes
node_api_server -->|"monte"| node_deposit_routes
node_api_server -->|"monte"| node_object_routes
node_api_server -->|"monte"| node_people_routes
node_api_server -->|"monte"| node_stats_routes
node_api_server -->|"monte"| node_sales_routes
node_deposit_routes -->|"interroge"| node_pool
node_object_routes -->|"interroge"| node_pool
node_sales_routes -->|"interroge"| node_pool
node_people_routes -->|"accède"| node_pool
node_volunteer_routes -->|"accède"| node_pool
node_category_routes -->|"accède"| node_pool
node_stats_routes -->|"accède"| node_pool
node_pool -->|"ouvre connexion"| node_postgres
node_api_client -.->|"requêtes API"| node_api_server

click node_app "https://github.com/ekkrog/adaremise/blob/main/front-react/src/App.jsx"
click node_api_client "https://github.com/ekkrog/adaremise/blob/main/front-react/src/assets/utils.js"
click node_inventory_list "https://github.com/ekkrog/adaremise/blob/main/front-react/src/ListeObjets.jsx"
click node_filters "https://github.com/ekkrog/adaremise/blob/main/front-react/src/Filtres.jsx"
click node_object_display "https://github.com/ekkrog/adaremise/blob/main/front-react/src/Objet.jsx"
click node_object_tracking "https://github.com/ekkrog/adaremise/blob/main/front-react/src/SuiviObjets.jsx"
click node_new_deposit "https://github.com/ekkrog/adaremise/blob/main/front-react/src/NouveauDepot.jsx"
click node_deposit_forms "https://github.com/ekkrog/adaremise/blob/main/front-react/src/FormulairesDepot.jsx"
click node_people_list "https://github.com/ekkrog/adaremise/blob/main/front-react/src/ListePersonnes.jsx"
click node_volunteer_login "https://github.com/ekkrog/adaremise/blob/main/front-react/src/Benevoles.jsx"
click node_volunteer_admin "https://github.com/ekkrog/adaremise/blob/main/front-react/src/GestionBenevoles.jsx"
click node_volunteer_form "https://github.com/ekkrog/adaremise/blob/main/front-react/src/AjoutBenevole.jsx"
click node_sales_screen "https://github.com/ekkrog/adaremise/blob/main/front-react/src/Vente.jsx"
click node_stats_screen "https://github.com/ekkrog/adaremise/blob/main/front-react/src/Stats.jsx"
click node_api_server "https://github.com/ekkrog/adaremise/blob/main/back/server/server.js"
click node_people_routes "https://github.com/ekkrog/adaremise/blob/main/back/server/routes/personnes.js"
click node_volunteer_routes "https://github.com/ekkrog/adaremise/blob/main/back/server/routes/benevoles.js"
click node_category_routes "https://github.com/ekkrog/adaremise/blob/main/back/server/routes/categories.js"
click node_deposit_routes "https://github.com/ekkrog/adaremise/blob/main/back/server/routes/depots.js"
click node_object_routes "https://github.com/ekkrog/adaremise/blob/main/back/server/routes/objets.js"
click node_sales_routes "https://github.com/ekkrog/adaremise/blob/main/back/server/routes/ventes.js"
click node_stats_routes "https://github.com/ekkrog/adaremise/blob/main/back/server/routes/stats.js"
click node_pool "https://github.com/ekkrog/adaremise/blob/main/back/server/db.js"

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_api_client toneBlue
class node_inventory_list,node_filters,node_object_display,node_object_tracking,node_new_deposit,node_deposit_forms,node_people_list,node_postgres toneAmber
class node_volunteer_login,node_volunteer_admin,node_volunteer_form,node_sales_screen,node_stats_screen toneMint
class node_api_server,node_people_routes,node_volunteer_routes,node_category_routes,node_deposit_routes,node_object_routes,node_sales_routes,node_stats_routes,node_pool toneRose
class node_volunteer toneIndigo
```

## Components

### Interface React

- [Routage application](https://github.com/ekkrog/adaremise/blob/main/front-react/src/App.jsx): `front-react/src/App.jsx`
- [Client API partagé](https://github.com/ekkrog/adaremise/blob/main/front-react/src/assets/utils.js): `front-react/src/assets/utils.js`

### Dépôts et inventaire

- [Liste objets](https://github.com/ekkrog/adaremise/blob/main/front-react/src/ListeObjets.jsx): `front-react/src/ListeObjets.jsx`
- [Filtres objets](https://github.com/ekkrog/adaremise/blob/main/front-react/src/Filtres.jsx): `front-react/src/Filtres.jsx`
- [Affichage objet](https://github.com/ekkrog/adaremise/blob/main/front-react/src/Objet.jsx): `front-react/src/Objet.jsx`
- [Suivi objet](https://github.com/ekkrog/adaremise/blob/main/front-react/src/SuiviObjets.jsx): `front-react/src/SuiviObjets.jsx`
- [Nouveau dépôt](https://github.com/ekkrog/adaremise/blob/main/front-react/src/NouveauDepot.jsx): `front-react/src/NouveauDepot.jsx`
- [Formulaires dépôt](https://github.com/ekkrog/adaremise/blob/main/front-react/src/FormulairesDepot.jsx): `front-react/src/FormulairesDepot.jsx`
- [Liste personnes](https://github.com/ekkrog/adaremise/blob/main/front-react/src/ListePersonnes.jsx): `front-react/src/ListePersonnes.jsx`

### Ventes et bénévoles

- [Choix bénévole](https://github.com/ekkrog/adaremise/blob/main/front-react/src/Benevoles.jsx): `front-react/src/Benevoles.jsx`
- [Gestion bénévoles](https://github.com/ekkrog/adaremise/blob/main/front-react/src/GestionBenevoles.jsx): `front-react/src/GestionBenevoles.jsx`
- [Ajout bénévole](https://github.com/ekkrog/adaremise/blob/main/front-react/src/AjoutBenevole.jsx): `front-react/src/AjoutBenevole.jsx`
- [Vente et panier](https://github.com/ekkrog/adaremise/blob/main/front-react/src/Vente.jsx): `front-react/src/Vente.jsx`
- [Statistiques](https://github.com/ekkrog/adaremise/blob/main/front-react/src/Stats.jsx): `front-react/src/Stats.jsx`

### API et données

- [Serveur Express](https://github.com/ekkrog/adaremise/blob/main/back/server/server.js): `back/server/server.js`
- [Routes personnes](https://github.com/ekkrog/adaremise/blob/main/back/server/routes/personnes.js): `back/server/routes/personnes.js`
- [Routes bénévoles](https://github.com/ekkrog/adaremise/blob/main/back/server/routes/benevoles.js): `back/server/routes/benevoles.js`
- [Routes catégories](https://github.com/ekkrog/adaremise/blob/main/back/server/routes/categories.js): `back/server/routes/categories.js`
- [Routes dépôts](https://github.com/ekkrog/adaremise/blob/main/back/server/routes/depots.js): `back/server/routes/depots.js`
- [Routes objets](https://github.com/ekkrog/adaremise/blob/main/back/server/routes/objets.js): `back/server/routes/objets.js`
- [Routes ventes](https://github.com/ekkrog/adaremise/blob/main/back/server/routes/ventes.js): `back/server/routes/ventes.js`
- [Routes statistiques](https://github.com/ekkrog/adaremise/blob/main/back/server/routes/stats.js): `back/server/routes/stats.js`
- [Pool PostgreSQL](https://github.com/ekkrog/adaremise/blob/main/back/server/db.js): `back/server/db.js`

### Other components

- **Bénévole**
- **PostgreSQL**

## Connections

- Bénévole → Routage application: utilise (evidence: `front-react/src/App.jsx`)
- Routage application → Liste objets: route vers (evidence: `front-react/src/App.jsx`)
- Routage application → Suivi objet: route vers (evidence: `front-react/src/App.jsx`)
- Routage application → Nouveau dépôt: route vers (evidence: `front-react/src/App.jsx`)
- Routage application → Vente et panier: route vers (evidence: `front-react/src/App.jsx`)
- Routage application → Statistiques: route vers (evidence: `front-react/src/App.jsx`)
- Routage application → Choix bénévole: route vers (evidence: `front-react/src/App.jsx`)
- Routage application → Gestion bénévoles: route vers (evidence: `front-react/src/App.jsx`)
- Liste objets → Filtres objets: affiche (evidence: `front-react/src/ListeObjets.jsx`)
- Liste objets → Affichage objet: affiche (evidence: `front-react/src/ListeObjets.jsx`)
- Suivi objet → Client API partagé: appelle (evidence: `front-react/src/SuiviObjets.jsx`)
- Liste objets → Client API partagé: appelle (evidence: `front-react/src/ListeObjets.jsx`)
- Nouveau dépôt → Client API partagé: appelle (evidence: `front-react/src/NouveauDepot.jsx`)
- Nouveau dépôt → Formulaires dépôt: utilise (evidence: `front-react/src/NouveauDepot.jsx`)
- Nouveau dépôt → Liste personnes: utilise (evidence: `front-react/src/NouveauDepot.jsx`)
- Vente et panier → Client API partagé: appelle (evidence: `front-react/src/Vente.jsx`)
- Statistiques → Client API partagé: utilise (evidence: `front-react/src/Stats.jsx`)
- Choix bénévole → Client API partagé: utilise (evidence: `front-react/src/Benevoles.jsx`)
- Gestion bénévoles → Ajout bénévole: utilise (evidence: `front-react/src/GestionBenevoles.jsx`)
- Serveur Express → Routes bénévoles: monte (evidence: `back/server/server.js`)
- Serveur Express → Routes catégories: monte (evidence: `back/server/server.js`)
- Serveur Express → Routes dépôts: monte (evidence: `back/server/server.js`)
- Serveur Express → Routes objets: monte (evidence: `back/server/server.js`)
- Serveur Express → Routes personnes: monte (evidence: `back/server/server.js`)
- Serveur Express → Routes statistiques: monte (evidence: `back/server/server.js`)
- Serveur Express → Routes ventes: monte (evidence: `back/server/server.js`)
- Routes dépôts → Pool PostgreSQL: interroge (evidence: `back/server/routes/depots.js`)
- Routes objets → Pool PostgreSQL: interroge (evidence: `back/server/routes/objets.js`)
- Routes ventes → Pool PostgreSQL: interroge (evidence: `back/server/routes/ventes.js`)
- Routes personnes → Pool PostgreSQL: accède (evidence: `back/server/routes/personnes.js`)
- Routes bénévoles → Pool PostgreSQL: accède (evidence: `back/server/routes/benevoles.js`)
- Routes catégories → Pool PostgreSQL: accède (evidence: `back/server/routes/categories.js`)
- Routes statistiques → Pool PostgreSQL: accède (evidence: `back/server/routes/stats.js`)
- Pool PostgreSQL → PostgreSQL: ouvre connexion (evidence: `back/server/db.js`)
- Client API partagé → Serveur Express: requêtes API
