Plateforme web de gestion des propositions de livraison pour agences, agents, livreurs et administrateurs. Le projet vise à digitaliser le cycle complet commande → proposition client → décision → planification de livraison.
- Vision du projet
- Fonctionnalités clés
- Stack technique
- Architecture du projet
- Prérequis
- Installation locale
- Configuration des variables d’environnement
- Base de données & Prisma
- Lancement du projet
- Scripts disponibles
- Rôles et permissions
- Flux fonctionnel
- API (aperçu)
- Qualité & tests
- Sécurité & bonnes pratiques
- Dépannage (troubleshooting)
- Roadmap
- Contribution
TAW Delivery est conçu pour aider une agence de transport/livraison à :
- centraliser les commandes,
- envoyer automatiquement des propositions de livraison par SMS/email,
- recueillir la décision du client,
- attribuer des créneaux de livraison,
- améliorer le suivi opérationnel des équipes.
Le socle produit est pensé pour une montée en charge progressive : interface agent/admin, flux client mobile-first, traçabilité des actions et extension vers le temps réel.
- Gestion des entités métier : agences, agents, livreurs, clients, commandes, propositions, créneaux, réservations.
- Authentification et gestion des rôles via Better Auth.
- Organisation multi-agences via le modèle
Organization/Member/Invitation. - API internes (Next.js routes) pour les ressources principales (
agencies,agents,orders, etc.). - Outils de messagerie côté serveur (email + base pour SMS) avec journalisation (
MessageLog). - Génération de liens de proposition courts (intégration
rcdm.ink).
- Tracking temps réel (Socket.io) et notifications live.
- Enrichissement UX côté client (acceptation/refus, géolocalisation, créneau, paiement).
- Analytique opérationnelle par agence et par agent.
- Frontend : Next.js 16, React 19, TypeScript
- UI : Tailwind CSS 4, composants Shadcn UI, Lucide
- Backend : Route Handlers Next.js + Server Actions
- Auth : Better Auth
- Base de données : PostgreSQL serverless (Neon)
- ORM : Prisma
- Tests : Vitest + Testing Library
- Package manager recommandé :
pnpm
app/
(agent)/, (super)/, admin/, api/
components/
lib/
prisma/
scripts/
tests/app/api/*: endpoints backend par domaine métier.app/actions/*: server actions pour la logique côté serveur.lib/*: auth, Prisma client, email, SMS, utilitaires métier.prisma/schema.prisma: modèle de données complet.scripts/*: scripts utilitaires (migration org, super admin, vérifications).
- Node.js >= 20
pnpminstallé globalement- Une base PostgreSQL accessible (Neon recommandé)
Installation de pnpm (si nécessaire) :
npm install -g pnpmgit clone <url-du-repo>
cd taw-delivery
pnpm install- Créer un fichier
.envà la racine. - Ajouter les variables nécessaires (exemple ci-dessous).
- Ne jamais versionner vos secrets.
# Database
DATABASE_URL="postgresql://user:password@host:5432/dbname?sslmode=require"
# Better Auth
BETTER_AUTH_SECRET="change-me"
BETTER_AUTH_URL="http://localhost:3000"
NEXT_PUBLIC_APP_URL="http://localhost:3000"
# SMTP (email)
SMTP_HOST="smtp.provider.com"
SMTP_PORT=587
SMTP_USER="noreply@yourdomain.com"
SMTP_PASSWORD="change-me"
# SMS provider
MBOA_SMS_USERID="..."
MBOA_SMS_API_PASSWORD="..."
MBOA_SMS_SENDER_NAME="TAW"
# URL shortener token
RCDM_INK_TOKEN="..."DATABASE_URL: connexion PostgreSQL (Prisma/Neon).BETTER_AUTH_SECRET/BETTER_AUTH_URL: configuration auth.NEXT_PUBLIC_APP_URL: URL publique de l’app.SMTP_*: envoi d’emails (invitations, notifications).MBOA_SMS_*: envoi SMS côté serveur.RCDM_INK_TOKEN: création/gestion des liens courts.
pnpm prisma generatepnpm prisma db pushpnpm prisma studioLe build exécute automatiquement
prisma generateavantnext build.
pnpm devApplication accessible sur : http://localhost:3000
pnpm build
pnpm startpnpm dev: démarre le serveur de développement.pnpm build: génère Prisma + build Next.js.pnpm start: démarre le serveur Next.js en mode production.pnpm lint: lance ESLint.pnpm test: lance Vitest.pnpm test:coverage: exécute les tests avec couverture.pnpm test:ui: interface UI de Vitest.
Scripts utilitaires (scripts/) :
scripts/migrate-to-better-auth.ts: migration agences → organizations.scripts/create-superadmin.ts: bootstrap d’un super admin.scripts/cleanup-test-agencies.ts: nettoyage de données de test.scripts/verify-booking.ts: vérifications métier de réservation.
Rôles applicatifs principaux :
SUPER_ADMIN: supervision globale.ADMIN: administration d’agence.AGENT: saisie/suivi des commandes.DRIVER: exécution des livraisons.
Le modèle relationnel intègre aussi des memberships d’organisation (owner/admin/member) pour la gouvernance multi-agences.
- L’agent enregistre une commande.
- Le système crée une proposition liée à la commande.
- Un lien de décision est généré puis envoyé (SMS/email).
- Le client accepte/refuse.
- En cas d’acceptation : choix du créneau + adresse + option de paiement.
- La commande passe dans le pipeline opérationnel de livraison.
Endpoints principaux exposés sous app/api/* :
/api/agencies/api/agents/api/drivers/api/clients/api/orders/api/proposals/api/bookings/api/seed(usage dev/test)
Selon les routes, des garde-fous existent pour limiter certains comportements en production.
Commandes recommandées avant merge :
pnpm lint
pnpm test
pnpm buildLe dossier tests/ contient la base des tests unitaires/intégration (Vitest + Testing Library).
- Ne jamais committer
.envni des clés API. - Utiliser des secrets différents par environnement (dev/staging/prod).
- Restreindre les scripts sensibles aux environnements non production si nécessaire.
- Vérifier les permissions côté serveur (session, rôle, organisation active).
- Vérifier
DATABASE_URL. - Exécuter
pnpm prisma generatepuispnpm prisma db push.
- Vérifier
BETTER_AUTH_SECRET,BETTER_AUTH_URL,NEXT_PUBLIC_APP_URL. - Contrôler que la base contient bien les tables Better Auth.
- Vérifier
SMTP_HOST,SMTP_PORT,SMTP_USER,SMTP_PASSWORD. - Vérifier les logs serveur.
- Vérifier
RCDM_INK_TOKEN. - Contrôler l’accès réseau sortant à
rcdm.ink.
- Interface client finale (acceptation/refus + tunnel complet).
- Optimisation des tableaux de bord agent/admin.
- Intégration tracking live livreur.
- Automatisation relances et règles métiers avancées.
- Renforcement observabilité (logs + audit détaillé).
- Créer une branche dédiée.
- Développer avec conventions TypeScript/ESLint existantes.
- Exécuter lint/tests/build.
- Ouvrir une PR claire avec contexte, impacts et plan de validation.
Si vous voulez, je peux aussi fournir une version README “production-ready open source” avec badges, sections SLA/monitoring, diagrammes Mermaid et templates d’issues/PR.