Aller au contenu principal

Déploiement et Environnement

Ce document décrit la configuration réelle de l'écosystème Tranoo tel qu'il est déployé et documenté dans le dépôt tranoo-api.

URLs de production

ServiceURLDépôt / dossier
API backendhttps://api.tranoo.storetranoo-api/src/
Swagger UIhttps://api.tranoo.store/api-docs
Dashboard webhttps://tranoo.storetranoo-api/tranoo_landing/
Connexion adminhttps://tranoo.store/login
Inscription agenthttps://tranoo.store/inscription-agent-com

Il n'existe pas de fichier DEPLOY.md, de Dockerfile ni de pipeline CI/CD dans le dépôt. Le déploiement backend documenté dans le projet passe par PM2 (voir tranoo-api/docs/CAPTCHA.md).

Monorepo tranoo-api

tranoo-api/
├── src/ # API Express (point d'entrée : src/app.js)
├── docs/ # Notes backend (SWAGGER, CAPTCHA, I18N, auth…)
├── scripts/ # Utilitaires (swagger:verify, migrations…)
├── tranoo/ # App Flutter acheteurs
├── tranoo_pro/ # App Flutter professionnels
├── tranoo_landing/ # Dashboard Next.js
├── .env # Config développement (gitignored)
├── .env.prod # Config production (gitignored)
└── whatsapp.env.example # Modèle variables WhatsApp Meta

Backend — Node.js / Express

Scripts npm

CommandeAction
npm run devnodemon src/app.js — développement
npm run startnode src/app.js — production
npm run swagger:verifyVérifie la couverture OpenAPI
npm run swagger:countCompte les paths documentés

Ports

FichierPORT
.env (dev)5000
.env.prod5005

Base de données

  • Variable utilisée au runtime : MONGO_URI (mongoose.connect dans src/app.js)
  • Les deux fichiers .env / .env.prod pointent vers MongoDB Atlas (mongodb+srv://…)

Firebase Admin

Initialisation dans src/app.js, par ordre de priorité :

  1. FIREBASE_SERVICE_ACCOUNT_JSON (JSON en variable d'environnement) — recommandé en production
  2. Fichier src/firebaseServiceAccountKey.json (gitignored)

Alternative documentée : GOOGLE_APPLICATION_CREDENTIALS dans .env.

Variables d'environnement principales

Fichiers de référence : .env, .env.prod, whatsapp.env.example, tranoo_landing/.env.example.

DomaineVariables clés
ServeurPORT, NODE_ENV, WEB_SESSION_IDLE_MS
MongoDBMONGO_URI
FirebaseGOOGLE_APPLICATION_CREDENTIALS, FIREBASE_SERVICE_ACCOUNT_JSON
CloudinaryCLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET
CAPTCHATURNSTILE_SECRET_KEY, CAPTCHA_ENABLED
AuthAUTH_RATE_LIMIT_MAX, AUTH_RATE_LIMIT_ENABLED
FeexPayFEEXPAY_BASE_URL, FEEXPAY_SHOP_ID, FEEXPAY_API_TOKEN, FEEXPAY_MODE, PAYMENT_EXPIRE_SECONDS
WhatsApp MetaWHATSAPP_TOKEN / ACCESS_TOKEN, PHONE_NUMBER_ID, WHATSAPP_OTP_TEMPLATE_NAME, WHATSAPP_VERIFICATION_TEMPLATE_NAME, PUBLIC_API_BASE_URL
Email (optionnel)SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS — utilisé par emailService.js si configuré

Non utilisées dans le code (présentes dans .env avec valeurs placeholder) : MAILJET_*, TWILIO_*, FEEXPAY_INIT_PATH, FEEXPAY_STATUS_PATH.

Workers démarrés au boot (src/app.js)

  1. paymentController.startPaymentStatusWorker() — suivi statuts paiement FeexPay
  2. cronJobs.startCronJobs() — expiration publicités, vues automatiques
  3. deliveryController.startDeliveryOfferWorker()(legacy, livraison interne)

Déploiement production (PM2)

Procédure documentée dans tranoo-api/docs/CAPTCHA.md :

pm2 restart tranoo-api --update-env
pm2 logs tranoo-api --lines 30

Nom du processus : tranoo-api.

Health check :

curl https://api.tranoo.store/
# Réponse attendue : "API opérationnelle"

Développement local

cd tranoo-api
npm install
npm run dev
# http://localhost:5000
# Swagger : http://localhost:5000/api-docs

Dashboard web — Next.js (tranoo_landing)

Proxy API

next.config.ts redirige /api/:path* vers le backend :

  • Production par défaut : https://api.tranoo.store/api/:path*
  • Surcharge possible : NEXT_PUBLIC_API_URL ou API_URL

Variables web (.env.example)

NEXT_PUBLIC_TURNSTILE_SITE_KEY=...
TURNSTILE_SECRET_KEY=...

Scripts

cd tranoo_landing
npm install
npm run dev # http://localhost:3000
npm run build
npm run start

Checklist déploiement web

Documentée dans tranoo-api/docs/CAPTCHA.md :

  • NEXT_PUBLIC_TURNSTILE_SITE_KEY et TURNSTILE_SECRET_KEY configurées
  • Hostname tranoo.store autorisé dans Cloudflare Turnstile
  • Rebuild et redéploiement après modification des variables

Applications mobiles — Flutter

Projets

AppDossierCible
Tranootranoo/Acheteurs
Tranoo Protranoo_pro/Vendeurs, transitaires, chauffeurs, agents

Configuration

Variables typiques dans .env à la racine de chaque app Flutter :

API_BASE_URL=https://api.tranoo.store/api

Les clés Firebase sont dans firebase_options.dart et les fichiers natifs (google-services.json, GoogleService-Info.plist).

Build

cd tranoo # ou tranoo_pro
flutter pub get
flutter run
flutter build apk --release
flutter build appbundle --release

WhatsApp Cloud API (Meta)

Modèle complet : whatsapp.env.example.

ÉlémentValeur documentée
Webhookhttps://api.tranoo.store/api/whatsapp/webhook
PDF vérification (proxy public)https://api.tranoo.store/api/public/verification-reports/<token>
Template OTPtranoo_reset_code (langue fr)
Template rapport PDFtranoo_verification_rapport (langue fr)

Sécurité

MesureImplémentation
Secrets.env, .env.prod, clés Firebase — gitignored
CAPTCHA webCloudflare Turnstile — voir Authentification et tranoo-api/docs/CAPTCHA.md
Rate limiting authauthRateLimit.js sur /api/auth/* (40 req / 15 min par IP)
Firebase App CheckCode présent (verifyAppCheck.js) — non monté sur les routes actuellement

Documentation backend associée

FichierSujet
tranoo-api/docs/SWAGGER.mdOpenAPI / Swagger
tranoo-api/docs/CAPTCHA.mdTurnstile + checklist PM2
tranoo-api/docs/I18N.mdInternationalisation API / web
tranoo-api/docs/MIGRATION_AUTH_TELEPHONE.mdAuth téléphone + MDP
tranoo-api/docs/DEMO_TRACKING_TRANOO_PRO.mdKPI démos agents
tranoo-api/whatsapp.env.exampleVariables WhatsApp Meta

Voir aussi