# assane2911/apllication-gestion-immobili-re- architecture

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

- Interactive diagram: https://gitdiagram.com/assane2911/apllication-gestion-immobili-re-
- Repository: https://github.com/assane2911/apllication-gestion-immobili-re-

## Overview

Gestion Immobilière is a role-based property-management application with manager, tenant, owner, and admin spaces. Its main workflow is managing properties and tenants, creating contracts that generate rent invoices, then tracking payments and tenant-reported issues. The frontend calls an Express API; controllers coordinate persistence and selected services. The README documents payment-provider options, scheduled contract reminders, public listings, and file uploads. Some subsystem links reflect documented capabilities because their implementation was not sampled; uncertain internal wiring is omitted.

Main entry points: [`backend/src/db/client.ts`](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/db/client.ts) (PostgreSQL data), [`frontend/src/App.tsx`](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/frontend/src/App.tsx) (Role-based app), [`backend/src/controllers/contract.controller.ts`](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/contract.controller.ts) (Contract operations), [`backend/src/app.ts`](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/app.ts) (Express API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_frontend["Role-based app<br/>[App.tsx]"]
  node_api_client["API client<br/>[client.ts]"]
  node_manager_pages["Manager workspace"]
  node_tenant_pages["Tenant portal"]
end

subgraph group_api["API and identity"]
  node_backend_app["Express API<br/>[app.ts]"]
  node_auth_routes["Auth routes<br/>[auth.routes.ts]"]
  node_auth_controller["Identity controller<br/>[auth.controller.ts]"]
  node_domain_routes["Domain routes"]
  node_domain_controllers["Domain controllers"]
end

subgraph group_management["Rental operations"]
  node_contracts["Contract operations"]
  node_invoices["Invoice generation<br/>[invoice.service.ts]"]
  node_issues["Issue reports"]
  node_listings["Public listings"]
end

subgraph group_services["Payments and services"]
  node_db[("PostgreSQL data<br/>[client.ts]")]
  node_payment_controller["Subscription control"]
  node_payment_service["Payment service<br/>[payment.service.ts]"]
  node_storage["File storage<br/>[storage.service.ts]"]
  node_reminders["Contract reminders<br/>[cron.controller.ts]"]
  node_email["Email service<br/>[email.service.ts]"]
end

subgraph group_external["External systems"]
  node_supabase[("Supabase")]
  node_payment_providers["Payment providers"]
  node_smtp["SMTP email"]
end

node_manager(("Manager"))
node_tenant(("Tenant"))

node_manager -->|"uses"| node_frontend
node_tenant -->|"uses"| node_frontend
node_frontend -->|"routes managers"| node_manager_pages
node_frontend -->|"routes tenants"| node_tenant_pages
node_manager_pages -->|"requests data"| node_api_client
node_tenant_pages -->|"requests data"| node_api_client
node_api_client -->|"calls API"| node_backend_app
node_backend_app -->|"mounts"| node_auth_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_backend_app -->|"mounts"| node_domain_routes
node_domain_routes -->|"dispatches"| node_domain_controllers
node_domain_controllers -->|"reads and writes"| node_db
node_contracts -->|"generates invoices"| node_invoices
node_contracts -->|"reads and writes"| node_db
node_contracts -->|"signs file links"| node_storage
node_payment_controller -->|"initiates payment"| node_payment_service
node_payment_controller -->|"updates subscription"| node_db
node_payment_service -.->|"processes payment"| node_payment_providers
node_storage -->|"uploads and signs"| node_supabase
node_db -->|"persists data"| node_supabase
node_issues -->|"stores photos"| node_storage
node_reminders -.->|"sends reminders"| node_email
node_email -.->|"delivers email"| node_smtp
node_listings -->|"reads and writes"| node_db

click node_frontend "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/frontend/src/App.tsx"
click node_api_client "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/frontend/src/api/client.ts"
click node_manager_pages "https://github.com/assane2911/apllication-gestion-immobili-re-/tree/main/frontend/src/pages/manager"
click node_tenant_pages "https://github.com/assane2911/apllication-gestion-immobili-re-/tree/main/frontend/src/pages/tenant"
click node_backend_app "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/app.ts"
click node_auth_routes "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/routes/auth.routes.ts"
click node_auth_controller "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/auth.controller.ts"
click node_domain_routes "https://github.com/assane2911/apllication-gestion-immobili-re-/tree/main/backend/src/routes"
click node_domain_controllers "https://github.com/assane2911/apllication-gestion-immobili-re-/tree/main/backend/src/controllers"
click node_contracts "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/contract.controller.ts"
click node_invoices "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/services/invoice.service.ts"
click node_issues "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/issue.controller.ts"
click node_listings "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/listing.controller.ts"
click node_db "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/db/client.ts"
click node_payment_controller "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/subscription.controller.ts"
click node_payment_service "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/services/payment.service.ts"
click node_storage "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/services/storage.service.ts"
click node_reminders "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/cron.controller.ts"
click node_email "https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/services/email.service.ts"

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_frontend,node_api_client,node_manager_pages,node_tenant_pages toneBlue
class node_backend_app,node_auth_routes,node_auth_controller,node_domain_routes,node_domain_controllers toneAmber
class node_contracts,node_invoices,node_issues,node_listings toneMint
class node_db,node_payment_controller,node_payment_service,node_storage,node_reminders,node_email toneRose
class node_supabase,node_payment_providers,node_smtp,node_manager,node_tenant toneIndigo
```

## Components

### Web application

- [Role-based app](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [API client](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/frontend/src/api/client.ts): `frontend/src/api/client.ts`
- [Manager workspace](https://github.com/assane2911/apllication-gestion-immobili-re-/tree/main/frontend/src/pages/manager): `frontend/src/pages/manager`
- [Tenant portal](https://github.com/assane2911/apllication-gestion-immobili-re-/tree/main/frontend/src/pages/tenant): `frontend/src/pages/tenant`

### API and identity

- [Express API](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/app.ts): `backend/src/app.ts`
- [Auth routes](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/routes/auth.routes.ts): `backend/src/routes/auth.routes.ts`
- [Identity controller](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/auth.controller.ts): `backend/src/controllers/auth.controller.ts`
- [Domain routes](https://github.com/assane2911/apllication-gestion-immobili-re-/tree/main/backend/src/routes): `backend/src/routes`
- [Domain controllers](https://github.com/assane2911/apllication-gestion-immobili-re-/tree/main/backend/src/controllers): `backend/src/controllers`

### Rental operations

- [Contract operations](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/contract.controller.ts): `backend/src/controllers/contract.controller.ts`
- [Invoice generation](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/services/invoice.service.ts): `backend/src/services/invoice.service.ts`
- [Issue reports](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/issue.controller.ts): `backend/src/controllers/issue.controller.ts`
- [Public listings](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/listing.controller.ts): `backend/src/controllers/listing.controller.ts`

### Payments and services

- [PostgreSQL data](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/db/client.ts): `backend/src/db/client.ts`
- [Subscription control](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/subscription.controller.ts): `backend/src/controllers/subscription.controller.ts`
- [Payment service](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/services/payment.service.ts): `backend/src/services/payment.service.ts`
- [File storage](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/services/storage.service.ts): `backend/src/services/storage.service.ts`
- [Contract reminders](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/controllers/cron.controller.ts): `backend/src/controllers/cron.controller.ts`
- [Email service](https://github.com/assane2911/apllication-gestion-immobili-re-/blob/main/backend/src/services/email.service.ts): `backend/src/services/email.service.ts`

### External systems

- **Supabase**
- **Payment providers**
- **SMTP email**

### Other components

- **Manager**
- **Tenant**

## Connections

- Manager → Role-based app: uses
- Tenant → Role-based app: uses
- Role-based app → Manager workspace: routes managers
- Role-based app → Tenant portal: routes tenants
- Manager workspace → API client: requests data
- Tenant portal → API client: requests data
- API client → Express API: calls API
- Express API → Auth routes: mounts
- Auth routes → Identity controller: dispatches
- Express API → Domain routes: mounts
- Domain routes → Domain controllers: dispatches
- Domain controllers → PostgreSQL data: reads and writes
- Contract operations → Invoice generation: generates invoices
- Contract operations → PostgreSQL data: reads and writes
- Contract operations → File storage: signs file links
- Subscription control → Payment service: initiates payment
- Subscription control → PostgreSQL data: updates subscription
- Payment service → Payment providers: processes payment
- File storage → Supabase: uploads and signs
- PostgreSQL data → Supabase: persists data
- Issue reports → File storage: stores photos
- Contract reminders → Email service: sends reminders
- Email service → SMTP email: delivers email
- Public listings → PostgreSQL data: reads and writes
