Structure du monorepo
Arborescence
nex/
apps/
mobile-client/ @nex/mobile-client Expo SDK 53 — App consommateur (NokiPay)
mobile-pro/ @nex/mobile-pro Expo SDK 53 — App business (NxPay Business)
cmms/ @nex/cmms Nuxt 4 — Dashboard CMMS
backoffice/ @nex/backoffice Nuxt 4 — Dashboard Backoffice
docs/ @nex/docs VitePress — Documentation technique
packages/
tokens/ @nex/tokens Design tokens (couleurs, typo, spacing)
ui-mobile/ @nex/ui-mobile Composants React Native
ui-web/ @nex/ui-web Theme CSS pour Nuxt UI
shared-types/ @nex/shared-types DTOs, enums, interfaces partages
shared-utils/ @nex/shared-utils Formatters, validators, constantes CEMAC
eslint-config/ @nex/eslint-config Configs ESLint partagees
tsconfig/ @nex/tsconfig Configs TypeScript partagees
services/
auth/ port 3001
ledger-wallets/ port 3002
customer-profiles-kyc/ port 3003
orchestrator/ port 3004
notifications/ port 3005
configuration/ port 3006
file-service/ port 3007
providers-gateway/ port 3008
risk-engine/ port 3009
service-catalog/ port 3010
logs-reporting/ port 3011
infrastructure/
docker/ Images Docker (node, postgresql, redis)
nginx/ Reverse proxy
kubernetes/ Manifests K8s (base, overlays staging/review/production)
cicd/ Pipelines GitLab CI modulaires
scripts/ Scripts utilitaires (dev, migrations, deploy)
docs/ Notes d'architecture internesGraphe de dependances
@nex/tokens ← ZERO dependance, TS pur
│
├──→ @nex/ui-mobile ← peerDeps: react-native, expo
│ ├──→ apps/mobile-client
│ └──→ apps/mobile-pro
│
├──→ @nex/ui-web ← peerDeps: nuxt, @nuxt/ui
│ ├──→ apps/cmms
│ └──→ apps/backoffice
│
├──→ @nex/shared-types ← ZERO deps runtime
│ ├──→ tous les services
│ └──→ toutes les apps
│
└──→ @nex/shared-utils ← deps minimales
├──→ tous les services
└──→ toutes les appsOutillage
| Outil | Role |
|---|---|
| pnpm 10.x | Package manager avec workspaces |
| Turborepo | Orchestration des builds (cache, parallelisme) |
| TypeScript 5.8 | Strict mode partout |
| ESLint | Configs partagees via @nex/eslint-config |
| Commitlint + Husky | Convention de commit automatique |
Configuration notable
.npmrcashamefully-hoist=true(requis pour Expo/React Native dans pnpm)- Metro bundler dans les apps mobiles configure
watchFoldersvers la racine du monorepo - tsconfig dans les apps mobiles a des path aliases :
@nex/tokens,@nex/ui-mobile