# cfscell2026-maker/cargo-tracker-v4 architecture

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

- Interactive diagram: https://gitdiagram.com/cfscell2026-maker/cargo-tracker-v4
- Repository: https://github.com/cfscell2026-maker/cargo-tracker-v4
- Video tour (about a minute): https://gitdiagram.com/cfscell2026-maker/cargo-tracker-v4/video

## Overview

Cargo Tracker is a React/Supabase application for tracking cargo and customs operations at a dry port. Agents sign in, navigate role-specific screens, and use RPC actions to record and advance cargo through operational stages; supervisors and administrators also manage stock, warehouses, parking, users, settings, and reports. The server validates sessions and permissions before dispatching actions that operate on Supabase data. The README is empty, and excerpts are partial, so the graph keeps uncertain internal wiring out while retaining major capabilities evidenced by the source tree and sampled code.

Main entry points: [`supabase/functions/rpc/actions/registry.ts`](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/registry.ts) (Action registry), [`apps/web/src/lib/rpc.ts`](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/lib/rpc.ts) (RPC client), [`apps/web/src/App.tsx`](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/App.tsx) (App shell), [`supabase/functions/rpc/index.ts`](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/index.ts) (RPC endpoint)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_main["Web entry<br/>[main.tsx]"]
  node_app["App shell<br/>[App.tsx]"]
  node_screens["Operational screens<br/>[screens.tsx]"]
  node_detail["Cargo detail<br/>[detail.tsx]"]
  node_parkingui["Parking screen<br/>[parking.tsx]"]
  node_ui["UI primitives<br/>[ui.tsx]"]
  node_rpcclient["RPC client<br/>[rpc.ts]"]
  node_supabaseclient["Supabase client<br/>[supabase.ts]"]
end

subgraph group_server["RPC backend"]
  node_edge["RPC endpoint<br/>[index.ts]"]
  node_auth["Session and audit<br/>[supa.ts]"]
  node_registry["Action registry<br/>[registry.ts]"]
end

subgraph group_domain["Business domain"]
  node_domain["Workflow rules<br/>[workflow.ts]"]
  node_validation["Normalization rules<br/>[normalisation.ts]"]
  node_constants["Domain constants<br/>[constantes.ts]"]
end

subgraph group_operations["Operational services"]
  node_cargo["Cargo operations<br/>[ecriture.ts]"]
  node_reads["Cargo and stock reads<br/>[lecture.ts]"]
  node_reports["Reports<br/>[rapports.ts]"]
  node_stock["Stock operations<br/>[stock.ts]"]
  node_warehouses["Warehouse operations<br/>[entrepots.ts]"]
  node_parking["Parking operations<br/>[parking.ts]"]
  node_accounts["Accounts and settings<br/>[utilisateurs.ts]"]
  node_settings["Parameter actions<br/>[parametres.ts]"]
end

subgraph group_data["Persistence"]
  node_db[("Supabase data")]
end

node_agent(("Agent"))
node_supabaseauth["Supabase Auth"]

node_agent -->|"uses"| node_main
node_main -->|"renders"| node_app
node_app -->|"renders"| node_screens
node_app -->|"uses"| node_ui
node_screens -->|"uses"| node_ui
node_screens -->|"requests"| node_rpcclient
node_detail -->|"requests"| node_rpcclient
node_parkingui -->|"requests"| node_rpcclient
node_app -->|"requests"| node_rpcclient
node_rpcclient -->|"uses"| node_supabaseclient
node_rpcclient -->|"sends RPC"| node_edge
node_edge -->|"validates session"| node_auth
node_auth -->|"validates JWT"| node_supabaseauth
node_auth -->|"reads profiles, writes audit"| node_db
node_edge -->|"dispatches action"| node_registry
node_edge -->|"checks permission"| node_domain
node_registry -->|"dispatches"| node_cargo
node_registry -->|"dispatches"| node_reads
node_registry -->|"dispatches"| node_reports
node_registry -->|"dispatches"| node_stock
node_registry -->|"dispatches"| node_warehouses
node_registry -->|"dispatches"| node_parking
node_registry -->|"dispatches"| node_accounts
node_registry -->|"dispatches"| node_settings
node_cargo -->|"reads and writes"| node_db
node_reads -->|"reads"| node_db
node_reports -->|"reads"| node_db
node_stock -->|"reads and writes"| node_db
node_warehouses -->|"reads and writes"| node_db
node_parking -->|"reads and writes"| node_db
node_accounts -->|"reads and writes"| node_db
node_settings -->|"reads and writes"| node_db
node_cargo -->|"validates input"| node_validation
node_cargo -->|"applies workflow"| node_domain
node_reports -->|"uses domain rules"| node_constants

click node_main "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/main.tsx"
click node_app "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/App.tsx"
click node_screens "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/screens.tsx"
click node_detail "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/detail.tsx"
click node_parkingui "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/parking.tsx"
click node_ui "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/lib/ui.tsx"
click node_rpcclient "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/lib/rpc.ts"
click node_supabaseclient "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/lib/supabase.ts"
click node_edge "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/index.ts"
click node_auth "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/supa.ts"
click node_registry "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/registry.ts"
click node_domain "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/_shared/domaine/src/workflow.ts"
click node_validation "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/_shared/domaine/src/normalisation.ts"
click node_constants "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/_shared/domaine/src/constantes.ts"
click node_cargo "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/ecriture.ts"
click node_reads "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/lecture.ts"
click node_reports "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/rapports.ts"
click node_stock "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/stock.ts"
click node_warehouses "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/entrepots.ts"
click node_parking "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/parking.ts"
click node_accounts "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/utilisateurs.ts"
click node_settings "https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/parametres.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_main,node_app,node_screens,node_detail,node_parkingui,node_ui,node_rpcclient,node_supabaseclient toneBlue
class node_edge,node_auth,node_registry toneAmber
class node_domain,node_validation,node_constants toneMint
class node_cargo,node_reads,node_reports,node_stock,node_warehouses,node_parking,node_accounts,node_settings toneRose
class node_db,node_agent,node_supabaseauth toneIndigo
```

## Components

### Web application

- [Web entry](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/main.tsx): `apps/web/src/main.tsx`
- [App shell](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/App.tsx): `apps/web/src/App.tsx`
- [Operational screens](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/screens.tsx): `apps/web/src/screens.tsx`
- [Cargo detail](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/detail.tsx): `apps/web/src/detail.tsx`
- [Parking screen](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/parking.tsx): `apps/web/src/parking.tsx`
- [UI primitives](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/lib/ui.tsx): `apps/web/src/lib/ui.tsx`
- [RPC client](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/lib/rpc.ts): `apps/web/src/lib/rpc.ts`
- [Supabase client](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/apps/web/src/lib/supabase.ts): `apps/web/src/lib/supabase.ts`

### RPC backend

- [RPC endpoint](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/index.ts): `supabase/functions/rpc/index.ts`
- [Session and audit](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/supa.ts): `supabase/functions/rpc/supa.ts`
- [Action registry](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/registry.ts): `supabase/functions/rpc/actions/registry.ts`

### Business domain

- [Workflow rules](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/_shared/domaine/src/workflow.ts): `supabase/functions/_shared/domaine/src/workflow.ts`
- [Normalization rules](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/_shared/domaine/src/normalisation.ts): `supabase/functions/_shared/domaine/src/normalisation.ts`
- [Domain constants](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/_shared/domaine/src/constantes.ts): `supabase/functions/_shared/domaine/src/constantes.ts`

### Operational services

- [Cargo operations](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/ecriture.ts): `supabase/functions/rpc/actions/ecriture.ts`
- [Cargo and stock reads](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/lecture.ts): `supabase/functions/rpc/actions/lecture.ts`
- [Reports](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/rapports.ts): `supabase/functions/rpc/actions/rapports.ts`
- [Stock operations](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/stock.ts): `supabase/functions/rpc/actions/stock.ts`
- [Warehouse operations](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/entrepots.ts): `supabase/functions/rpc/actions/entrepots.ts`
- [Parking operations](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/parking.ts): `supabase/functions/rpc/actions/parking.ts`
- [Accounts and settings](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/utilisateurs.ts): `supabase/functions/rpc/actions/utilisateurs.ts`
- [Parameter actions](https://github.com/cfscell2026-maker/cargo-tracker-v4/blob/main/supabase/functions/rpc/actions/parametres.ts): `supabase/functions/rpc/actions/parametres.ts`

### Persistence

- **Supabase data**

### Other components

- **Agent**
- **Supabase Auth**

## Connections

- Agent → Web entry: uses
- Web entry → App shell: renders
- App shell → Operational screens: renders
- App shell → UI primitives: uses
- Operational screens → UI primitives: uses
- Operational screens → RPC client: requests
- Cargo detail → RPC client: requests
- Parking screen → RPC client: requests
- App shell → RPC client: requests
- RPC client → Supabase client: uses
- RPC client → RPC endpoint: sends RPC
- RPC endpoint → Session and audit: validates session
- Session and audit → Supabase Auth: validates JWT
- Session and audit → Supabase data: reads profiles, writes audit
- RPC endpoint → Action registry: dispatches action
- RPC endpoint → Workflow rules: checks permission
- Action registry → Cargo operations: dispatches
- Action registry → Cargo and stock reads: dispatches
- Action registry → Reports: dispatches
- Action registry → Stock operations: dispatches
- Action registry → Warehouse operations: dispatches
- Action registry → Parking operations: dispatches
- Action registry → Accounts and settings: dispatches
- Action registry → Parameter actions: dispatches
- Cargo operations → Supabase data: reads and writes
- Cargo and stock reads → Supabase data: reads
- Reports → Supabase data: reads
- Stock operations → Supabase data: reads and writes
- Warehouse operations → Supabase data: reads and writes
- Parking operations → Supabase data: reads and writes
- Accounts and settings → Supabase data: reads and writes
- Parameter actions → Supabase data: reads and writes
- Cargo operations → Normalization rules: validates input
- Cargo operations → Workflow rules: applies workflow
- Reports → Domain constants: uses domain rules
