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
| Service | URL | Dépôt / dossier |
|---|---|---|
| API backend | https://api.tranoo.store | tranoo-api/src/ |
| Swagger UI | https://api.tranoo.store/api-docs | — |
| Dashboard web | https://tranoo.store | tranoo-api/tranoo_landing/ |
| Connexion admin | https://tranoo.store/login | — |
| Inscription agent | https://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
| Commande | Action |
|---|---|
npm run dev | nodemon src/app.js — développement |
npm run start | node src/app.js — production |
npm run swagger:verify | Vérifie la couverture OpenAPI |
npm run swagger:count | Compte les paths documentés |
Ports
| Fichier | PORT |
|---|---|
.env (dev) | 5000 |
.env.prod | 5005 |
Base de données
- Variable utilisée au runtime :
MONGO_URI(mongoose.connectdanssrc/app.js) - Les deux fichiers
.env/.env.prodpointent vers MongoDB Atlas (mongodb+srv://…)
Firebase Admin
Initialisation dans src/app.js, par ordre de priorité :
FIREBASE_SERVICE_ACCOUNT_JSON(JSON en variable d'environnement) — recommandé en production- 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.
| Domaine | Variables clés |
|---|---|
| Serveur | PORT, NODE_ENV, WEB_SESSION_IDLE_MS |
| MongoDB | MONGO_URI |
| Firebase | GOOGLE_APPLICATION_CREDENTIALS, FIREBASE_SERVICE_ACCOUNT_JSON |
| Cloudinary | CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET |
| CAPTCHA | TURNSTILE_SECRET_KEY, CAPTCHA_ENABLED |
| Auth | AUTH_RATE_LIMIT_MAX, AUTH_RATE_LIMIT_ENABLED |
| FeexPay | FEEXPAY_BASE_URL, FEEXPAY_SHOP_ID, FEEXPAY_API_TOKEN, FEEXPAY_MODE, PAYMENT_EXPIRE_SECONDS |
| WhatsApp Meta | WHATSAPP_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)
paymentController.startPaymentStatusWorker()— suivi statuts paiement FeexPaycronJobs.startCronJobs()— expiration publicités, vues automatiquesdeliveryController.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_URLouAPI_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_KEYetTURNSTILE_SECRET_KEYconfigurées- Hostname
tranoo.storeautorisé dans Cloudflare Turnstile - Rebuild et redéploiement après modification des variables
Applications mobiles — Flutter
Projets
| App | Dossier | Cible |
|---|---|---|
| Tranoo | tranoo/ | Acheteurs |
| Tranoo Pro | tranoo_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ément | Valeur documentée |
|---|---|
| Webhook | https://api.tranoo.store/api/whatsapp/webhook |
| PDF vérification (proxy public) | https://api.tranoo.store/api/public/verification-reports/<token> |
| Template OTP | tranoo_reset_code (langue fr) |
| Template rapport PDF | tranoo_verification_rapport (langue fr) |
Sécurité
| Mesure | Implémentation |
|---|---|
| Secrets | .env, .env.prod, clés Firebase — gitignored |
| CAPTCHA web | Cloudflare Turnstile — voir Authentification et tranoo-api/docs/CAPTCHA.md |
| Rate limiting auth | authRateLimit.js sur /api/auth/* (40 req / 15 min par IP) |
| Firebase App Check | Code présent (verifyAppCheck.js) — non monté sur les routes actuellement |
Documentation backend associée
| Fichier | Sujet |
|---|---|
tranoo-api/docs/SWAGGER.md | OpenAPI / Swagger |
tranoo-api/docs/CAPTCHA.md | Turnstile + checklist PM2 |
tranoo-api/docs/I18N.md | Internationalisation API / web |
tranoo-api/docs/MIGRATION_AUTH_TELEPHONE.md | Auth téléphone + MDP |
tranoo-api/docs/DEMO_TRACKING_TRANOO_PRO.md | KPI démos agents |
tranoo-api/whatsapp.env.example | Variables WhatsApp Meta |
Voir aussi
- Architecture Backend
- API Swagger
- Authentification
- Agents commerciaux — inscription agent web
- Transit international