# jainjy/servo architecture

> Architecture diagram of the GitHub repository jainjy/servo, 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/jainjy/servo
- Repository: https://github.com/jainjy/servo

## Overview

Servo is a broad French-language services and marketplace application: users browse offerings across property, home services, tourism, work and training, products, and other domains, then can pursue reservations, quotes, or purchases. Professionals and administrators have separate management areas. The route excerpt confirms the application shell and several product branches; sampled service and authentication code confirms API access, while the README only describes the project tooling. Wiring for unsampled booking, payment, and management flows is therefore not inferred.

Main entry points: [`src/App.tsx`](https://github.com/jainjy/servo/blob/main/src/App.tsx) (Routed application), [`src/lib/api.js`](https://github.com/jainjy/servo/blob/main/src/lib/api.js) (API client), [`src/pages/ServicesPartnersPage/ServicesPages.tsx`](https://github.com/jainjy/servo/blob/main/src/pages/ServicesPartnersPage/ServicesPages.tsx) (Services catalogue), [`src/services/authService.js`](https://github.com/jainjy/servo/blob/main/src/services/authService.js) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application shell"]
  node_app["Routed application<br/>[App.tsx]"]
  node_auth["Authentication<br/>[authService.js]"]
  node_api["API client<br/>[api.js]"]
end

subgraph group_discovery["Marketplace discovery"]
  node_service_discovery["Services catalogue<br/>[ServicesPages.tsx]"]
  node_ibr["IBR services<br/>[useIBRServices.ts]"]
  node_property["Property search<br/>[PropertyPage.tsx]"]
  node_home_work["Home and works<br/>[Travaux.tsx]"]
  node_tourism["Tourism experiences<br/>[Tourisme.tsx]"]
  node_employment["Jobs and training"]
  node_products["Products marketplace<br/>[Produits.tsx]"]
end

subgraph group_transactions["User transactions"]
  node_reservations["Reservations"]
  node_cart["Shopping cart<br/>[CartContext.tsx]"]
end

subgraph group_operations["Platform operations"]
  node_professional["Professional workspace<br/>[Dashboard.tsx]"]
  node_admin["Administration<br/>[AdminDashboard.tsx]"]
end

node_visitor(("Visitor or user"))
node_backend{{"Application backend"}}

node_visitor -->|"uses"| node_app
node_app -->|"routes to"| node_service_discovery
node_app -->|"routes to"| node_property
node_app -->|"routes to"| node_home_work
node_app -->|"routes to"| node_tourism
node_app -->|"routes to"| node_employment
node_app -->|"routes to"| node_products
node_app -->|"routes to"| node_reservations
node_app -->|"routes to"| node_professional
node_app -->|"routes to"| node_admin
node_service_discovery -->|"requests services"| node_api
node_ibr -->|"requests services"| node_api
node_auth -->|"sends auth requests"| node_api
node_api -->|"calls"| node_backend

click node_app "https://github.com/jainjy/servo/blob/main/src/App.tsx"
click node_auth "https://github.com/jainjy/servo/blob/main/src/services/authService.js"
click node_api "https://github.com/jainjy/servo/blob/main/src/lib/api.js"
click node_service_discovery "https://github.com/jainjy/servo/blob/main/src/pages/ServicesPartnersPage/ServicesPages.tsx"
click node_ibr "https://github.com/jainjy/servo/blob/main/src/hooks/useIBRServices.ts"
click node_property "https://github.com/jainjy/servo/blob/main/src/pages/PropertyPage.tsx"
click node_home_work "https://github.com/jainjy/servo/blob/main/src/pages/Travaux.tsx"
click node_tourism "https://github.com/jainjy/servo/blob/main/src/pages/Tourisme.tsx"
click node_employment "https://github.com/jainjy/servo/blob/main/src/pages/EmploiFormationsPage/EmploiFormationsPage.tsx"
click node_products "https://github.com/jainjy/servo/blob/main/src/pages/Produits.tsx"
click node_reservations "https://github.com/jainjy/servo/blob/main/src/pages/ClientReservations.tsx"
click node_cart "https://github.com/jainjy/servo/blob/main/src/components/contexts/CartContext.tsx"
click node_professional "https://github.com/jainjy/servo/blob/main/src/pages/pro/Dashboard.tsx"
click node_admin "https://github.com/jainjy/servo/blob/main/src/pages/admin/AdminDashboard.tsx"

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_auth,node_api,node_visitor toneBlue
class node_service_discovery,node_ibr,node_property,node_home_work,node_tourism,node_employment,node_products toneAmber
class node_reservations,node_cart toneMint
class node_professional,node_admin toneRose
class node_backend toneIndigo
```

## Components

### Application shell

- [Routed application](https://github.com/jainjy/servo/blob/main/src/App.tsx): `src/App.tsx`
- [Authentication](https://github.com/jainjy/servo/blob/main/src/services/authService.js): `src/services/authService.js`
- [API client](https://github.com/jainjy/servo/blob/main/src/lib/api.js): `src/lib/api.js`

### Marketplace discovery

- [Services catalogue](https://github.com/jainjy/servo/blob/main/src/pages/ServicesPartnersPage/ServicesPages.tsx): `src/pages/ServicesPartnersPage/ServicesPages.tsx`
- [IBR services](https://github.com/jainjy/servo/blob/main/src/hooks/useIBRServices.ts): `src/hooks/useIBRServices.ts`
- [Property search](https://github.com/jainjy/servo/blob/main/src/pages/PropertyPage.tsx): `src/pages/PropertyPage.tsx`
- [Home and works](https://github.com/jainjy/servo/blob/main/src/pages/Travaux.tsx): `src/pages/Travaux.tsx`
- [Tourism experiences](https://github.com/jainjy/servo/blob/main/src/pages/Tourisme.tsx): `src/pages/Tourisme.tsx`
- [Jobs and training](https://github.com/jainjy/servo/blob/main/src/pages/EmploiFormationsPage/EmploiFormationsPage.tsx): `src/pages/EmploiFormationsPage/EmploiFormationsPage.tsx`
- [Products marketplace](https://github.com/jainjy/servo/blob/main/src/pages/Produits.tsx): `src/pages/Produits.tsx`

### User transactions

- [Reservations](https://github.com/jainjy/servo/blob/main/src/pages/ClientReservations.tsx): `src/pages/ClientReservations.tsx`
- [Shopping cart](https://github.com/jainjy/servo/blob/main/src/components/contexts/CartContext.tsx): `src/components/contexts/CartContext.tsx`

### Platform operations

- [Professional workspace](https://github.com/jainjy/servo/blob/main/src/pages/pro/Dashboard.tsx): `src/pages/pro/Dashboard.tsx`
- [Administration](https://github.com/jainjy/servo/blob/main/src/pages/admin/AdminDashboard.tsx): `src/pages/admin/AdminDashboard.tsx`

### Other components

- **Visitor or user**
- **Application backend**

## Connections

- Visitor or user → Routed application: uses
- Routed application → Services catalogue: routes to
- Routed application → Property search: routes to
- Routed application → Home and works: routes to
- Routed application → Tourism experiences: routes to
- Routed application → Jobs and training: routes to
- Routed application → Products marketplace: routes to
- Routed application → Reservations: routes to
- Routed application → Professional workspace: routes to
- Routed application → Administration: routes to
- Services catalogue → API client: requests services
- IBR services → API client: requests services
- Authentication → API client: sends auth requests
- API client → Application backend: calls
