Un projet de réservation d'autocars ne se résume pas à un formulaire, un devis et un bouton de paiement. Dès que le besoin devient réel, il faut gérer des trajets avec des contraintes horaires, des passagers, des lieux précis, des péages, des jours fériés, des tarifs qui changent selon les régions, des adhérents à mobiliser, des paiements à sécuriser, des documents à produire et des dossiers à reprendre quand une étape échoue.
Dawap a accompagné Saybus, dans l'écosystème du Réseau Réunir, sur une application métier Bus Booking pensée comme une vraie plateforme d'exploitation : parcours de demande de transport, moteur de calcul, devis, commandes, paiement sécurisé, empreinte bancaire, relances, espace client, espace adhérent, back-office interne, facturation, avoirs, exports et génération PDF. C'est typiquement le type de chantier où notre approche de Développement web sur mesure prend toute sa valeur.
Le projet est intéressant parce qu'il relie plusieurs mondes qui se parlent rarement bien dans les outils standards : un parcours client assez fluide pour convertir, un calculateur assez précis pour soutenir la promesse commerciale, un back-office assez robuste pour piloter les exceptions, et des intégrations API assez fiables pour tenir la production. Bus Booking n'est donc pas une couche cosmétique autour d'une réservation. C'est un système métier complet pour transformer une demande de transport en dossier exploitable.
1. Présentation du client
Un acteur du transport en autocar adossé au maillage du Réseau Réunir
Saybus conçoit et coordonne des solutions de transport en autocar pour des événements, déplacements professionnels, compétitions, séjours et opérations multi-sites. Le projet s'inscrit dans l'écosystème Réunir, un réseau d'autocaristes indépendants qui apporte un maillage national, des exploitants locaux et une capacité de coordination importante.
Ce contexte change profondément la nature du produit. Il ne suffit pas d'enregistrer une demande. Il faut qualifier un besoin de transport, calculer un prix crédible, transformer une estimation en devis, faire accepter une commande, sécuriser un moyen de paiement, mobiliser un adhérent, contrôler sa réponse, relancer si nécessaire et garder un historique clair pour le client comme pour les équipes.
Le code du projet montre cette profondeur métier : domaines Search, Calculator, Offer, Order, Assign, Payment, Stripe, Invoice, Credit, AccountingPeriod, DocumentConfig, Company, CustomerUser et BackofficeUser. Chaque domaine représente une partie du cycle réel, depuis la recherche initiale jusqu'à la facturation et au suivi d'exploitation.
Cette fiche présente la partie partageable du projet. Elle ne détaille pas les paramètres privés, les accès, les clés API, les données clients ni les règles confidentielles d'exploitation. Elle raconte en revanche la logique produit, les flux métiers, les choix techniques et le niveau de sur-mesure nécessaire pour construire un outil fiable dans le transport et la logistique.
2. Méthode projet Dawap
Analyse métier, sprints, Jira, sandbox, production et stabilisation continue
Le projet a été mené comme une application métier à part entière, pas comme une intégration rapide. La première étape a consisté à comprendre les cas de transport : aller simple, aller-retour, transfert, visite de ville, multi-étapes, demande issue du site, demande issue d'un calculateur interne, demande liée à une carte ou à un adhérent choisi par le client.
Le backlog a été suivi par lots dans Jira : socle Symfony, parcours de recherche, calculateur, espaces utilisateurs, paiement, back-office, affectation adhérent, documents PDF, factures, avoirs, statistiques, exports, relances et stabilisation du run. Chaque lot devait apporter une valeur mesurable : moins de ressaisie, moins d'ambiguïté de statut, meilleure reprise des erreurs, meilleure coordination des équipes.
La qualité a été sécurisée par des validations métier sur les parcours sensibles, des environnements distincts, une sandbox de paiement, une préproduction, une pipeline de build d'images Docker et une mise en production progressive. Sur un produit qui touche au paiement, aux devis et aux commandes, cette discipline est aussi importante que la fonctionnalité visible.
L'application a aussi été pensée pour vivre dans le temps. Les flux ne se limitent pas au moment de la réservation : il faut gérer les paiements qui réussissent ou échouent, les commandes qui attendent une confirmation, les adhérents qui acceptent ou refusent, les factures qui doivent être générées, les exports comptables, les comptes premium et les relances.
3. Contexte transport et enjeux Réunir
Quand une réservation d'autocar devient un dossier d'exploitation complet
Le transport en autocar rassemble des contraintes très concrètes : lieux de prise en charge, horaires, amplitude de conduite, nombre de passagers, capacité véhicule, coûts de roulage, repas, hébergement, relais, péages, jours fériés, saisons, disponibilités locales et coordination avec l'exploitant qui réalisera la prestation.
Dans l'univers Saybus / Réunir, ces contraintes prennent une dimension supplémentaire. Le service s'appuie sur un réseau d'adhérents, avec une promesse de réactivité et de coordination nationale. La plateforme devait donc aider à qualifier rapidement les demandes, mais aussi à transformer ces demandes en dossiers correctement pilotés côté exploitation.
La difficulté du projet tient à cette double lecture. Côté utilisateur, la réservation doit rester compréhensible. Côté métier, chaque détail peut modifier le coût, le statut, la faisabilité ou la manière d'affecter l'opération. Le produit devait donc être assez simple à utiliser, mais assez riche pour respecter la réalité du transport.
Dawap a abordé le chantier comme une application métier transactionnelle, à la frontière entre développement e-commerce sur mesure, outil d'exploitation et intégration API. Le prix, le paiement et la commande existent, mais ils ne suffisent pas : il faut aussi un back-office capable de suivre ce qui se passe après la conversion.
4. Douleurs avant Bus Booking
Trop de reprises quand trajet, prix, paiement et exploitation ne parlent pas le même langage
Avant la consolidation du produit, une partie de la difficulté venait de la circulation des informations. Une demande pouvait exister côté formulaire, être retravaillée côté équipe, nécessiter un recalcul, passer par un devis, être transformée en commande, puis demander une affectation et un suivi de paiement. Dès qu'une donnée n'était pas alignée, le dossier devenait plus fragile.
Les équipes avaient besoin de réduire les reprises manuelles sur des sujets très sensibles : prix, nombre de véhicules, dates, lieux, coordonnées client, informations de facturation, état de paiement, réponse d'un adhérent et génération documentaire. Une erreur sur une seule étape peut créer une mauvaise promesse commerciale ou une charge support importante.
Le calcul tarifaire était lui aussi un enjeu fort. Les coûts ne se limitent pas à une distance multipliée par un tarif. Le code montre des coûts de roulage, véhicule, main d'œuvre, repas, hébergement, relais, dimanche et jours fériés, coefficients de capacité, coefficients saisonniers, forfaits de transfert et règles de nuit.
La dernière douleur portait sur la visibilité. Sans états lisibles et partagés, il devient difficile de savoir si une commande est simplement créée, payée, partiellement payée, en attente de confirmation Stripe, à affecter, refusée par un adhérent, remboursée ou à facturer. L'objectif était de remplacer cette zone grise par une chaîne d'états explicite.
5. Objectifs métier et critères de succès
Fluidifier la demande sans appauvrir la complexité réelle du transport
Le premier objectif était de fluidifier le parcours de demande : choisir une typologie de transport, renseigner les lieux et horaires, obtenir une estimation ou déclencher une étude, enregistrer un devis, le transformer en commande et retrouver le dossier dans un espace client.
Le deuxième objectif était de fiabiliser le calcul. La plateforme devait s'appuyer sur des données géographiques, des règles paramétrables et des coefficients métier plutôt que sur des approximations difficiles à maintenir. Cette partie rejoint directement nos savoir-faire en API Cartographie & géolocalisation.
Le troisième objectif était de sécuriser le paiement sans bloquer l'exploitation. Bus Booking devait pouvoir gérer un paiement par carte ou SEPA, une empreinte bancaire, un paiement différé, des retours webhook, des échecs, des remboursements et un solde client pour certains comptes premium.
Le quatrième objectif était de donner un vrai poste de travail aux équipes : back-office de traitement, vues internes, espace adhérent, espace client, suivi des offres, commandes, paiements, factures, avoirs et statistiques. La réussite se mesurait donc à la capacité du produit à tenir toute la chaîne, pas uniquement à la capacité de créer une commande.
6. Parcours client et typologies de recherche
Une demande transport ne ressemble pas toujours à une autre
Le domaine Search du projet distingue plusieurs familles de demandes : aller simple, aller-retour, transfert, visite de ville et trajet multi-étapes. Ce découpage est essentiel, car chaque famille possède ses propres contraintes de saisie, de calcul, de validation et de restitution.
Un aller simple doit calculer la distance utile, la distance de retour, les temps de trajet et les péages. Un aller-retour doit intégrer la date de retour et vérifier une amplitude cohérente. Un transfert peut dépendre de forfaits prédéfinis avec rayon de départ et rayon de destination. Une visite de ville dépend d'une amplitude horaire, d'une ville couverte et d'un éventuel supplément de nuit. Un multi-étapes doit vérifier la cohérence horaire de plusieurs trajets successifs.
Cette granularité évite de forcer toutes les demandes dans un formulaire unique trop généraliste. Le produit parle le langage du transport : trajet, retour, transfert, city tour, multi-destination, passagers, amplitude, disponibilité et coût.
Côté interface, cette logique donne une meilleure expérience utilisateur. Côté back-office, elle permet de comprendre l'origine d'un prix et de reprendre un dossier avec les bons champs métier. C'est une application très représentative du développement d'application métier web : le modèle de données sert l'usage réel.
7. Calculateur transport sur mesure
Transformer des itinéraires et contraintes d'exploitation en prix explicable
Le calculateur est l'un des cœurs du projet. Le code montre une mécanique en deux temps : collecte des données métier, puis calcul des totaux. La collecte récupère ou reconstitue les kilomètres, les temps, les péages, les coûts unitaires et les coefficients. Le calcul applique ensuite les formules : coût de roulage, jours fériés, frais généraux, marge, production hors taxe, TVA, total TTC, frais, coefficient de capacité, coefficient saisonnier et prix final.
Cette séparation est importante. Les équipes doivent pouvoir comprendre pourquoi un prix sort à un certain niveau : distance, péage, capacité, saison, repas, hébergement, relais ou amplitude. Le calculateur n'est pas une boîte noire. Il reste ajustable et lisible pour les personnes qui traitent les demandes.
Les règles varient selon le type de demande. Un city tour s'appuie sur une ville, une amplitude et des règles de proximité. Un transfert cherche un forfait actif et retient le meilleur candidat selon les rayons configurés. Le multi-étapes additionne les trajets par jour, vérifie les horaires et ajoute le retour. Les trajets classiques exploitent les données d'itinéraire et les coûts paramétrés.
Un exemple simplifié du calcul donne la logique générale :
Recherche transport
-> Géocodage des lieux
-> Calcul distance et durée
-> Collecte coûts métier
-> Application coefficients
-> Prix HT, TVA, TTC
-> Devis exploitableCette brique rapproche Bus Booking d'un configurateur de devis transport. Elle permet d'aller bien plus loin qu'une estimation marketing, en reliant directement le parcours client aux contraintes d'exploitation.
8. Configurateur tarifaire et règles métier
Rendre le prix maintenable quand les coûts changent
Une bonne application de réservation doit accepter que les coûts évoluent. Le projet intègre donc des entités et écrans de configuration pour les coûts de roulage, coût véhicule, main d'œuvre, repas, hébergement, relais, dimanches et jours fériés, forfaits de transfert, coûts de visite de ville, coefficients de capacité et coefficients saisonniers.
Cette logique est décisive pour le run. Si chaque variation de coût demande une modification de code, le produit devient trop rigide. Ici, le back-office permet d'administrer les paramètres qui influencent les calculs, avec une lecture plus proche du métier transport.
Les coefficients de capacité permettent de transformer un nombre de passagers en nombre de véhicules ou en coefficient d'offre. Les coefficients saisonniers permettent de tenir compte du mois et de la région. Les coûts de visite de ville dépendent d'une ville et d'une amplitude. Les forfaits de transfert utilisent des points de référence, des rayons et un prix unitaire.
Le projet combine donc deux niveaux : un moteur de calcul stable et des paramètres modifiables par le métier. Ce modèle évite de figer la plateforme dans une logique qui serait vraie le jour de la mise en production, mais fausse quelques mois plus tard.
9. API cartographie, Google Places et ViaMichelin
Fiabiliser lieux, distances, temps de trajet et péages
Bus Booking s'appuie sur des intégrations API pour fiabiliser le parcours de recherche. Google Places intervient sur la saisie et l'hydratation des lieux : adresse, ville, région, pays, coordonnées GPS, type de lieu et contrôle des pays autorisés.
ViaMichelin est utilisé pour calculer les itinéraires : distance, temps de conduite, coût de péage et date de trajet. L'application exploite ces données pour alimenter le calculateur, déterminer les horaires d'arrivée, choisir une classe de péage selon le nombre de passagers et détecter certains cas incompatibles avec le réseau routier.
Le projet ajoute aussi une logique interne de proximité géographique. La formule de distance entre coordonnées permet de vérifier qu'un point de départ appartient bien à une zone attendue, qu'un transfert rentre dans un rayon de forfait ou qu'une visite de ville reste cohérente avec la ville demandée.
Cette combinaison illustre bien notre approche Google Maps Platform et cartographie : l'API ne fait pas tout. Elle fournit une donnée, puis l'application métier l'interprète, la sécurise et la transforme en décision.
10. Devis, commandes et cycle de validation
Passer d'une estimation à un dossier réellement exploitable
Le domaine Offer structure le devis : départ, destination, date, retour, passagers, nombre de véhicules, prix HT, TVA, TTC, frais, remise, client, origine de la demande, société affectée, état d'affectation, message personnalisé, date limite de paiement, options et identifiant public.
Un devis peut être créé depuis le back-office, issu du calculateur, enregistré par le client, envoyé par email, validé par le client, transformé en commande ou décliné. Cette mécanique donne une lecture claire du cycle commercial, sans confondre une estimation, un devis sauvegardé, un devis accepté et une commande.
Le domaine Order prend ensuite le relais. Une commande possède des états précis : brouillon, annulée par le client, annulée côté équipe, partiellement payée, payée, payée en attente de confirmation, attente de réponse Stripe, remboursée, à affecter ou non. Elle porte aussi les informations de facturation, le montant payé, le montant dû, la date limite de paiement, le statut de remboursement et l'identifiant public.
Cette granularité est indispensable pour les équipes support et exploitation. Une commande de transport ne peut pas être suivie seulement avec un booléen payé/non payé. Elle traverse des états intermédiaires, des reprises et des exceptions. Le code reflète cette réalité au lieu de la masquer.
11. Paiement Stripe, empreinte bancaire et remboursements
Sécuriser un paiement qui peut arriver après la prise de commande
Le projet intègre Stripe pour gérer les paiements par carte et SEPA. La mécanique ne se limite pas à créer une page de paiement : l'application crée une session de paiement en mode setup, rattache un client Stripe, conserve l'empreinte via SetupIntent, puis déclenche un PaymentIntent lié à la commande.
Cette approche correspond à un besoin métier fort : sécuriser une réservation et permettre un paiement différé ou confirmé dans de bonnes conditions. L'empreinte bancaire n'est pas là pour compliquer le parcours, mais pour éviter de perdre la continuité entre validation, moyen de paiement et encaissement.
Le système écoute les webhooks Stripe : création et succès du SetupIntent, session complétée, PaymentIntent créé, paiement réussi, paiement échoué, charge réussie et charge remboursée. Chaque événement est journalisé pour éviter les doubles traitements et faciliter la reprise.
Quand un paiement réussit, l'application crée un objet Payment, recalcule les montants de la commande, envoie les emails de confirmation et peut passer la commande à l'état payé. Quand un paiement échoue, le statut est conservé et les emails d'échec sont envoyés. Quand un remboursement intervient, la commande est marquée remboursée et les flux de notification suivent.
Le projet gère aussi des comptes premium avec logique d'encours client, plafond et délai. Cette dimension B2B est importante : certains clients n'entrent pas dans un paiement immédiat standard. La plateforme devait donc accepter plusieurs modes de règlement tout en gardant une lecture fiable du solde et du montant dû.
Pour ce type de sujet, les pages génériques ne suffisent pas. La valeur vient du lien entre intégration Stripe, états métier, emails, commandes, relances, remboursements et API Paiements.
12. Affectation adhérent et orchestration du réseau
Faire répondre le bon transporteur au bon moment
Le domaine Assign traduit la logique d'affrètement et de coordination avec les adhérents. Une affectation relie une offre à une société, avec une réponse attendue, une date limite, une source de réponse et un identifiant public.
Quand une société est sollicitée, l'application calcule une date limite de réponse en jours ouvrés, en évitant week-ends et jours fériés. Si l'adhérent accepte, il devient la société affectée à l'offre, le client peut être informé et la facture peut être générée si les conditions sont réunies. Si l'adhérent refuse, la commande repasse à affecter avec une raison claire.
Le système distingue plusieurs sources de réponse : adhérent via interface, réponse système en cas d'expiration, réponse interne côté équipe. Cette distinction donne de la traçabilité et permet d'expliquer pourquoi une commande est revenue dans la pile de traitement.
La plateforme envoie aussi des emails aux bons acteurs : adhérent, équipe interne, client. Cette orchestration rend visible l'état du dossier et évite que la coordination repose uniquement sur la mémoire ou sur des échanges dispersés.
Cette brique est l'un des marqueurs forts du projet. Bus Booking ne gère pas seulement une commande payée. Il accompagne le passage vers l'exécution réelle par un transporteur du réseau.
13. Back-office, espaces et rôles
Un outil de travail pour plusieurs profils, pas une interface unique pour tout le monde
Le projet comprend plusieurs espaces : front client, espace client, back-office interne, administration, espace adhérent et API internes. Chaque espace répond à un usage différent et ne doit pas exposer le même niveau d'information.
L'espace client permet de retrouver ses devis, commandes, factures, avoirs, informations personnelles, moyens de paiement et demandes en cours. Les comptes premium disposent d'une logique particulière autour de l'encours client et des limites de paiement.
Le back-office permet aux équipes de rechercher et traiter les offres, commandes, paiements, sociétés, utilisateurs, affectations, documents de configuration, factures, avoirs et périodes comptables. Les écrans statistiques donnent une lecture par société, conversion, offre, commande, source et utilisateurs.
L'espace adhérent sert à répondre aux affectations, suivre les demandes, recevoir les relances et tenir le niveau de réactivité attendu par le réseau. L'administration globale permet de configurer les coûts, coefficients, forfaits, utilisateurs et paramètres nécessaires au calculateur.
Cette répartition est un bon exemple d'ergonomie métier. Le produit ne force pas tous les profils dans la même interface. Il crée des workspaces adaptés à l'action attendue.
14. Factures, avoirs, documents PDF et exports
Garder une preuve exploitable après la réservation
Le projet ne s'arrête pas à la commande. Il intègre une vraie couche documentaire : devis PDF, commandes PDF, factures PDF, avoirs PDF, export CSV, périodes comptables et configuration des documents.
Les générateurs PDF s'appuient sur des templates spécifiques par type de transport : aller simple, aller-retour, transfert, visite de ville et multi-étapes. Les documents doivent restituer les bonnes informations de trajet, les prix, les conditions, les descriptions, les coordonnées et les éléments de facturation.
La configuration documentaire permet d'administrer les textes, conditions, mentions, coordonnées, informations légales, IBAN, BIC, banque, phrase de signature, description de tarif et messages environnementaux. Cette couche donne au métier la main sur les contenus qui doivent apparaître dans les documents.
Les factures sont reliées à des périodes comptables, avec référence, pourcentage facturé, total HT, TVA, total TTC et date. Les avoirs sont eux aussi rattachés aux factures et aux périodes. Cette structuration prépare une exploitation comptable plus propre et limite les suivis parallèles.
Les traitements PDF sont dispatchés via Messenger pour générer les documents sans bloquer inutilement l'utilisateur. C'est un détail technique qui a un impact produit direct : l'application peut produire la preuve attendue tout en conservant une expérience plus fluide.
15. Emails, relances et automatisations
Faire circuler l'information au bon moment
Le projet contient une couche email très riche : confirmation de paiement, paiement échoué, remboursement, devis envoyé, devis enregistré, devis validé, commande créée, commande annulée, demande de facture, affectation créée, relance adhérent, refus, expiration, compte créé, mot de passe oublié et activation de compte.
Ces emails ne sont pas décoratifs. Ils matérialisent l'état du workflow pour les clients, les adhérents et les équipes internes. Dans un projet de réservation, un email envoyé trop tôt, trop tard ou avec le mauvais statut crée de la confusion. La plateforme devait donc faire correspondre chaque événement métier au bon message.
Plusieurs commandes et traitements asynchrones complètent cette logique : création de PaymentIntent depuis une empreinte, correction d'identifiants publics encodés, migration de tarifs, commandes à remettre à l'état à affecter, génération de PDF et consommation de messages RabbitMQ.
L'infrastructure locale montre aussi Redis, RabbitMQ, MySQL, Nginx, PHP-FPM, Redis Commander et phpMyAdmin. Cette architecture donne un socle pour séparer les requêtes web des traitements en arrière-plan, observer certains services et maintenir les environnements de développement, sandbox et production.
L'automatisation a donc été traitée comme une partie du produit. Elle réduit les oublis, accélère les reprises et permet aux équipes de se concentrer sur les dossiers qui demandent vraiment une décision humaine.
16. Architecture Symfony, API et production
Un socle modulaire pour supporter le métier et le run
L'application repose sur Symfony avec une organisation en Domain, Infrastructure, Presentation et SharedKernel. Cette séparation aide à isoler les contrats métier, les entités de lecture ou d'écriture, les cas d'usage, les repositories, les contrôleurs, les services, les presenters et les templates.
Cette architecture est visible dans les domaines de paiement Stripe, factures, avoirs, documents, offres, commandes, recherches, calculateur, sociétés et utilisateurs. Elle permet de faire évoluer une partie du système sans transformer chaque modification en refonte globale.
Les API internes permettent de manipuler certaines données de société ou d'adresse, tandis que les contrôleurs front, admin et internes exposent des parcours adaptés aux usages. L'application utilise aussi des listeners et subscribers pour réagir aux événements Doctrine ou Stripe, générer des identifiants publics, recalculer des montants et déclencher des traitements.
La production s'appuie sur des images Docker PHP et Nginx, un registre, une pipeline de build et de push, des services RabbitMQ et Redis, des variables d'environnement, une sandbox de paiement et des domaines de préproduction. Les environnements distincts ont été importants pour tester les flux sensibles avant bascule.
Ce socle correspond exactement aux enjeux d'un projet de création d'API sur mesure et d'application métier : des composants suffisamment découplés pour évoluer, mais assez intégrés pour garantir la continuité du parcours.
17. Scénario terrain
Une demande multi-étapes qui doit devenir une commande payée et affectée
Prenons une demande de transport avec plusieurs étapes sur une journée. Le client renseigne les lieux, horaires, passagers et contraintes. L'application hydrate les adresses, calcule les distances, vérifie que les horaires sont compatibles, additionne les kilomètres, récupère les péages, applique les coûts et produit un devis.
Le client enregistre ou valide le devis. La plateforme crée la commande, sécurise le moyen de paiement via Stripe, conserve l'empreinte bancaire, attend les webhooks, met à jour les montants payés ou dus, puis déclenche les notifications nécessaires.
Si une société du réseau est sélectionnée ou affectée, l'application crée une demande d'affectation, calcule une date limite de réponse, notifie l'adhérent et suit son acceptation ou son refus. En cas d'acceptation, le dossier avance vers l'exécution et les documents nécessaires peuvent être générés. En cas de refus ou d'expiration, la commande redevient visible pour réaffectation.
Le fil simplifié ressemble à ceci :
Demande transport
-> Recherche et géocodage
-> Calcul métier
-> Devis
-> Commande
-> Empreinte bancaire
-> Paiement ou encours
-> Affectation adhérent
-> PDF et facture
-> Suivi back-officeCette séquence montre la vraie difficulté du projet : chaque étape est compréhensible séparément, mais la valeur vient de leur continuité. Dès qu'une seule information se perd, le support reprend à la main. Bus Booking a justement été construit pour éviter cette rupture.
18. Résultats et valeur opérationnelle
Un produit plus fiable pour convertir, traiter et piloter les dossiers
La plateforme a permis de centraliser une chaîne qui était naturellement complexe : typologies de recherche, calcul, devis, commandes, paiements, affectations, documents, factures et statistiques. Cette centralisation réduit les écarts entre ce que le client voit, ce que le back-office traite et ce que l'exploitation doit réaliser.
Le calculateur a donné un socle plus explicable aux estimations. Les équipes peuvent rattacher un prix à des données concrètes : kilomètres, péages, amplitude, coûts, coefficients, forfaits et règles de saison. Cette lisibilité améliore la confiance dans le devis et accélère le traitement des cas spécifiques.
Le paiement a gagné en robustesse grâce aux SetupIntent, PaymentIntent, webhooks, journaux d'événements et statuts. Les échecs et remboursements deviennent des états traçables plutôt que des situations floues à reconstruire.
Le back-office a apporté une meilleure visibilité sur les offres, commandes, paiements, factures, sociétés, utilisateurs et indicateurs. Les équipes peuvent piloter le flux avec des vues de travail plutôt que de reconstituer le contexte depuis plusieurs outils.
Le projet a surtout créé un socle durable. Il peut continuer à évoluer : nouveaux forfaits, nouvelles règles tarifaires, nouveaux moyens de paiement, enrichissement des statistiques, amélioration des espaces utilisateurs et intégrations complémentaires.
19. Perspectives d'évolution
Continuer à renforcer le pilotage, la donnée et l'expérience
La trajectoire naturelle consiste à enrichir encore la lecture métier : meilleurs tableaux de bord par source de demande, suivi plus fin des délais de réponse adhérent, indicateurs de conversion entre devis et commande, analyse des paiements échoués et segmentation des clients premium.
Le calculateur peut aussi continuer à gagner en finesse : nouvelles zones, nouveaux forfaits, règles saisonnières plus détaillées, meilleure gestion des indisponibilités, scénarios complexes de multi-étapes et contrôles plus explicites avant validation.
Côté exploitation, l'observabilité reste un levier important. Plus les flux Stripe, PDF, emails, affectations et exports sont lisibles, plus les équipes peuvent reprendre rapidement les cas atypiques. Cette logique rejoint nos approches de POC industrialisable : prouver un flux, mesurer sa valeur, puis renforcer progressivement ce qui mérite de devenir critique.
Pour poursuivre la réflexion, ce projet peut être rapproché de nos expertises en application métier web, cartographie et géolocalisation, intégration Stripe et authentification et sécurité API.
20. Conclusion
Un projet qui montre ce qu'une vraie application métier transport doit tenir
Bus Booking illustre une réalité simple : dans le transport, la valeur d'une application ne vient pas seulement de la prise de demande. Elle vient de la capacité à garder la même cohérence entre le trajet, le prix, le devis, la commande, le paiement, l'adhérent, les documents et la facturation.
Dawap a construit un socle capable de porter cette cohérence : calculateur paramétrable, intégrations de cartographie, paiement Stripe avec empreinte bancaire, back-office multi-profils, affectation adhérent, relances, PDF, factures, avoirs, exports et statistiques. L'ensemble donne aux équipes une lecture plus fiable du run et réduit la dépendance aux reprises manuelles.
Ce projet montre aussi pourquoi un développement standard atteint vite ses limites dès que les règles métier deviennent spécifiques. Pour transformer une chaîne de réservation en outil durable, il faut relier produit, métier, architecture, API, paiement et exploitation. C'est précisément le terrain de notre expertise en développement d'application métier et en intégration API.