Skip to content

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 internes

Graphe 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 apps

Outillage

OutilRole
pnpm 10.xPackage manager avec workspaces
TurborepoOrchestration des builds (cache, parallelisme)
TypeScript 5.8Strict mode partout
ESLintConfigs partagees via @nex/eslint-config
Commitlint + HuskyConvention de commit automatique

Configuration notable

  • .npmrc a shamefully-hoist=true (requis pour Expo/React Native dans pnpm)
  • Metro bundler dans les apps mobiles configure watchFolders vers la racine du monorepo
  • tsconfig dans les apps mobiles a des path aliases : @nex/tokens, @nex/ui-mobile

NxPay — Plateforme fintech CEMAC