# tayawelba/sokoni architecture

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

- Interactive diagram: https://gitdiagram.com/tayawelba/sokoni
- Repository: https://github.com/tayawelba/sokoni

## Overview

Sokoni est une application de gestion de catalogue : les utilisateurs se connectent, puis consultent ou administrent produits, catégories et comptes selon leur rôle. L’interface Next.js échange avec une API Nest.js qui applique les opérations métier; les écritures métier alimentent aussi le journal d’audit. L’API expose également un tableau de bord et des métriques. Les capacités sont établies par le README et l’arborescence; les extraits de code ne couvrent pas les services métier ni le câblage complet du client, donc les liens internes non vérifiables sont omis.

Main entry points: [`apps/api/src/main.ts`](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/main.ts) (Entrée API), [`apps/api/src/database/data-source.ts`](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/database/data-source.ts) (PostgreSQL), [`apps/api/src/audit/audit.service.ts`](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/audit/audit.service.ts) (Écriture et recherche audit), [`apps/web/src/app`](https://github.com/tayawelba/sokoni/tree/main/apps/web/src/app) (Pages métier)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Interface web"]
  node_web_pages["Pages métier"]
  node_web_shell["Shell applicatif"]
  node_web_auth["État de session<br/>[auth.tsx]"]
  node_web_api["Client API<br/>[api-client.ts]"]
end

subgraph group_identity["Identité et accès"]
  node_api_entry["Entrée API<br/>[main.ts]"]
  node_auth_controller["Routes d’authentification<br/>[auth.controller.ts]"]
  node_auth_service["Sessions et identifiants<br/>[auth.service.ts]"]
end

subgraph group_catalog["Catalogue et comptes"]
  node_users_controller["Routes utilisateurs"]
  node_users_service["Gestion utilisateurs<br/>[users.service.ts]"]
  node_categories_controller["Routes catégories"]
  node_categories_service["Gestion catégories"]
  node_products_controller["Routes produits"]
  node_products_service["Gestion produits"]
end

subgraph group_insight["Audit et supervision"]
  node_dashboard_controller["Route tableau de bord"]
  node_dashboard_service["Synthèse catalogue"]
  node_audit_controller["Consultation audit"]
  node_audit_service["Écriture et recherche audit<br/>[audit.service.ts]"]
  node_metrics_controller["Route métriques"]
  node_metrics_service["Exposition métriques<br/>[metrics.service.ts]"]
end

subgraph group_persistence["Persistance"]
  node_postgres[("PostgreSQL<br/>[data-source.ts]")]
end

node_operator(("Utilisateur"))

node_operator -->|"utilise"| node_web_pages
node_web_pages -->|"s’affiche dans"| node_web_shell
node_web_pages -->|"appelle"| node_web_api
node_web_pages -->|"consulte session"| node_web_auth
node_web_api -->|"requêtes HTTP"| node_api_entry
node_api_entry -->|"sert les routes"| node_auth_controller
node_api_entry -->|"sert les routes"| node_users_controller
node_api_entry -->|"sert les routes"| node_categories_controller
node_api_entry -->|"sert les routes"| node_products_controller
node_api_entry -->|"sert les routes"| node_dashboard_controller
node_api_entry -->|"sert les routes"| node_audit_controller
node_api_entry -->|"sert les routes"| node_metrics_controller
node_auth_controller -->|"délègue"| node_auth_service
node_users_controller -->|"délègue"| node_users_service
node_users_controller -->|"enregistre écritures"| node_audit_service
node_categories_controller -->|"délègue"| node_categories_service
node_categories_controller -->|"enregistre écritures"| node_audit_service
node_products_controller -->|"délègue"| node_products_service
node_products_controller -->|"enregistre écritures"| node_audit_service
node_dashboard_controller -->|"délègue"| node_dashboard_service
node_audit_controller -->|"délègue"| node_audit_service
node_metrics_controller -->|"rend"| node_metrics_service
node_auth_service -->|"lit et écrit"| node_postgres
node_users_service -->|"lit et écrit"| node_postgres
node_categories_service -->|"lit et écrit"| node_postgres
node_products_service -->|"lit et écrit"| node_postgres
node_dashboard_service -->|"agrège depuis"| node_postgres
node_audit_service -->|"lit et écrit"| node_postgres

click node_web_pages "https://github.com/tayawelba/sokoni/tree/main/apps/web/src/app"
click node_web_shell "https://github.com/tayawelba/sokoni/tree/main/apps/web/src/components/app"
click node_web_auth "https://github.com/tayawelba/sokoni/blob/main/apps/web/src/lib/auth.tsx"
click node_web_api "https://github.com/tayawelba/sokoni/blob/main/apps/web/src/lib/api-client.ts"
click node_api_entry "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/main.ts"
click node_auth_controller "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/auth/auth.controller.ts"
click node_auth_service "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/auth/auth.service.ts"
click node_users_controller "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/users/users.controller.ts"
click node_users_service "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/users/users.service.ts"
click node_categories_controller "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/categories/categories.controller.ts"
click node_categories_service "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/categories/categories.service.ts"
click node_products_controller "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/products/products.controller.ts"
click node_products_service "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/products/products.service.ts"
click node_dashboard_controller "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/dashboard/dashboard.controller.ts"
click node_dashboard_service "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/dashboard/dashboard.service.ts"
click node_audit_controller "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/audit/audit.controller.ts"
click node_audit_service "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/audit/audit.service.ts"
click node_metrics_controller "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/metrics/metrics.controller.ts"
click node_metrics_service "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/metrics/metrics.service.ts"
click node_postgres "https://github.com/tayawelba/sokoni/blob/main/apps/api/src/database/data-source.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_web_pages,node_web_shell,node_web_auth,node_web_api toneBlue
class node_api_entry,node_auth_controller,node_auth_service toneAmber
class node_users_controller,node_users_service,node_categories_controller,node_categories_service,node_products_controller,node_products_service toneMint
class node_dashboard_controller,node_dashboard_service,node_audit_controller,node_audit_service,node_metrics_controller,node_metrics_service toneRose
class node_postgres,node_operator toneIndigo
```

## Components

### Interface web

- [Pages métier](https://github.com/tayawelba/sokoni/tree/main/apps/web/src/app): `apps/web/src/app`
- [Shell applicatif](https://github.com/tayawelba/sokoni/tree/main/apps/web/src/components/app): `apps/web/src/components/app`
- [État de session](https://github.com/tayawelba/sokoni/blob/main/apps/web/src/lib/auth.tsx): `apps/web/src/lib/auth.tsx`
- [Client API](https://github.com/tayawelba/sokoni/blob/main/apps/web/src/lib/api-client.ts): `apps/web/src/lib/api-client.ts`

### Identité et accès

- [Entrée API](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/main.ts): `apps/api/src/main.ts`
- [Routes d’authentification](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/auth/auth.controller.ts): `apps/api/src/auth/auth.controller.ts`
- [Sessions et identifiants](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/auth/auth.service.ts): `apps/api/src/auth/auth.service.ts`

### Catalogue et comptes

- [Routes utilisateurs](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/users/users.controller.ts): `apps/api/src/users/users.controller.ts`
- [Gestion utilisateurs](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/users/users.service.ts): `apps/api/src/users/users.service.ts`
- [Routes catégories](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/categories/categories.controller.ts): `apps/api/src/categories/categories.controller.ts`
- [Gestion catégories](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/categories/categories.service.ts): `apps/api/src/categories/categories.service.ts`
- [Routes produits](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/products/products.controller.ts): `apps/api/src/products/products.controller.ts`
- [Gestion produits](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/products/products.service.ts): `apps/api/src/products/products.service.ts`

### Audit et supervision

- [Route tableau de bord](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/dashboard/dashboard.controller.ts): `apps/api/src/dashboard/dashboard.controller.ts`
- [Synthèse catalogue](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/dashboard/dashboard.service.ts): `apps/api/src/dashboard/dashboard.service.ts`
- [Consultation audit](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/audit/audit.controller.ts): `apps/api/src/audit/audit.controller.ts`
- [Écriture et recherche audit](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/audit/audit.service.ts): `apps/api/src/audit/audit.service.ts`
- [Route métriques](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/metrics/metrics.controller.ts): `apps/api/src/metrics/metrics.controller.ts`
- [Exposition métriques](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/metrics/metrics.service.ts): `apps/api/src/metrics/metrics.service.ts`

### Persistance

- [PostgreSQL](https://github.com/tayawelba/sokoni/blob/main/apps/api/src/database/data-source.ts): `apps/api/src/database/data-source.ts`

### Other components

- **Utilisateur**

## Connections

- Utilisateur → Pages métier: utilise
- Pages métier → Shell applicatif: s’affiche dans
- Pages métier → Client API: appelle
- Pages métier → État de session: consulte session
- Client API → Entrée API: requêtes HTTP
- Entrée API → Routes d’authentification: sert les routes
- Entrée API → Routes utilisateurs: sert les routes
- Entrée API → Routes catégories: sert les routes
- Entrée API → Routes produits: sert les routes
- Entrée API → Route tableau de bord: sert les routes
- Entrée API → Consultation audit: sert les routes
- Entrée API → Route métriques: sert les routes
- Routes d’authentification → Sessions et identifiants: délègue
- Routes utilisateurs → Gestion utilisateurs: délègue
- Routes utilisateurs → Écriture et recherche audit: enregistre écritures
- Routes catégories → Gestion catégories: délègue
- Routes catégories → Écriture et recherche audit: enregistre écritures
- Routes produits → Gestion produits: délègue
- Routes produits → Écriture et recherche audit: enregistre écritures
- Route tableau de bord → Synthèse catalogue: délègue
- Consultation audit → Écriture et recherche audit: délègue
- Route métriques → Exposition métriques: rend
- Sessions et identifiants → PostgreSQL: lit et écrit
- Gestion utilisateurs → PostgreSQL: lit et écrit
- Gestion catégories → PostgreSQL: lit et écrit
- Gestion produits → PostgreSQL: lit et écrit
- Synthèse catalogue → PostgreSQL: agrège depuis
- Écriture et recherche audit → PostgreSQL: lit et écrit
