Passer au contenu principal

Étude de cas · Automobile · E-commerce

ZipIt — marketplace de pièces auto et CRM vendeurs

Publié le · Mis à jour le · Par YuSMP Group Engineering

Comment nous avons livré une marketplace de pièces auto biface en production — applications acheteur Flutter sur iOS et Android, une surface acheteur web et un CRM vendeurs multi-tenant — construite sur Symfony avec recherche VIN Laximo, inventaire par site sur de nombreuses agences, remise de livraison intégrée et une posture d'audit prête qui résiste aux exigences RGPD et CCPA pour les acheteurs et vendeurs aux États-Unis et dans l'Union européenne.

SecteurAutomobile · E-commerce
Année du projet2024
EngagementPrix fixe + support
ZipIt — marketplace de pièces auto avec recherche VIN, inventaire multi-sites, e-commerce automobile US et UE

Le brief — une expérience d'approvisionnement fragmentée qui nécessitait une seule plateforme

Un opérateur de location de voitures peinait à sourcer des pièces de rechange auprès de fournisseurs dispersés et déconnectés. Chaque achat nécessitait de chercher parmi plusieurs vendeurs, de vérifier les prix par téléphone et de réconcilier des livraisons qui arrivaient d'adresses différentes à des jours différents. L'équipe avait besoin d'une couche d'approvisionnement unique — une marketplace orientée acheteur qui consolidait les catalogues de pièces de plusieurs vendeurs, avec recherche par VIN afin qu'un mécanicien puisse trouver des pièces compatibles sans feuilleter des microfiches papier, et un CRM orienté vendeur donnant aux détaillants de pièces une raison crédible de migrer leur inventaire hors des tableurs. La plateforme devait également résister aux attentes des acheteurs et vendeurs aux États-Unis et dans l'Union européenne : RGPD pour les utilisateurs européens, CCPA pour les utilisateurs californiens, et des enregistrements prêts pour l'audit pour les opérateurs desservant des flottes dans plusieurs juridictions. Nous avons construit la plateforme comme une application acheteur Flutter sur iOS et Android, une surface acheteur web React et un CRM vendeurs multi-tenant sur un backend Symfony partagé, avec recherche VIN Laximo et remise de livraison intégrée. Le résultat est une marketplace en production qui boucle la boucle de la recherche VIN à la livraison de pièces, et est positionnée pour une exploitation conforme aux États-Unis et dans l'UE.

Points clés du projet

Flutter acheteur iOS & Android Surface acheteur web React CRM vendeurs multi-tenant Backend Symfony + PostgreSQL Recherche VIN Laximo Inventaire par site Remise de livraison intégrée Analytique côté vendeur · US & UE

En chiffres

Un instantané de ce que la construction ZipIt a livré sur les applications acheteur Flutter, une surface web React et un CRM vendeurs Symfony multi-tenant.

4surfaces — Flutter iOS, Flutter Android, acheteur web React, CRM vendeur web React
VINrecherche connectée à un catalogue automobile de type Laximo avec réconciliation côté serveur
Nagences par vendeur comme tenants de premier niveau dans le modèle de données — ajouts par configuration uniquement
100%des commandes écrites dans un journal d'audit immuable pour la réconciliation acheteur et vendeur
2stores d'applications en production — Apple App Store et Google Play sur les storefronts US et UE
14–22 sem.fenêtre de livraison typique pour un MVP comparable de marketplace de pièces auto biface
Catalogue ZipIt — pièces système de refroidissement Opel Astra K, 12 résultats avec notes vendeurs et Ajouter au panier

Pourquoi Flutter plutôt qu'iOS + Android natifs ou un wrapper storefront Magento

La décision de plateforme domine la vitesse d'itération d'une marketplace biface. Nous avons choisi Flutter côté acheteur plutôt qu'une paire iOS + Android native et plutôt qu'un wrapper de storefront Magento car les compromis s'alignent proprement avec ce qu'une marketplace de pièces auto a réellement besoin. Magento est une plateforme e-commerce solide pour les catalogues mono-vendeur mais paye un lourd tribut lorsqu'on essaie de le rendre multi-tenant, et une stack « Magento + wrapper mobile » ajoute une couche WebView que les acheteurs et le réviseur de l'App Store peuvent tous deux repérer immédiatement. iOS + Android natifs apporterait une valeur fractionnelle pour un produit formulaires et catalogues, au double du coût d'ingénierie d'une base de code Flutter.

La construction s'appuie sur les patterns de documentation officielle Flutter pour la gestion d'état et les canaux de plateforme, le framework Symfony sur le backend et la sécurité au niveau des lignes PostgreSQL pour l'isolation des tenants dans le CRM vendeurs multi-tenant — des primitives ouvertes et citables qui nous donnent une marketplace multiplateforme maintenable sans verrouiller l'opérateur dans un SaaS fournisseur.

Flutter vs iOS + Android natifs vs Magento + wrapper mobile — en un coup d'œil
Dimension Flutter (ZipIt) iOS + Android natifs Magento + wrapper mobile
Adéquation CRM multi-tenantBackend agnostique ; Symfony multi-tenant natifMême backend ; adéquation identiqueMulti-tenant Magento est une extension fragile
Latence recherche VINHTTP Dart + adaptateur Laximo mis en cache RedisHTTP natif ; même latence backendPlugin Magento ou aller-retour WebView — visiblement plus lent
Ergonomie intégration livraisonClient Dart unique ; partagé avec le webDeux clients à maintenir en parallèleExtensions Magento, mises à jour fragiles
Analytique côté vendeurTableaux de bord rendus par Symfony côté backendMême backend ; posture identiqueModule Magento Business Intelligence — coûteux
Vitesse d'itérationUne base de code Dart, rechargement à chaud UXDeux bases de code, QA doubléRisque de compatibilité des extensions par release
Adéquation révision App StorePremier ordre — l'app acheteur est un binaire natifPremier ordreSouvent signalé comme « wrapper web »
Contrôle de résidence des donnéesInfrastructure appartenant à l'opérateur dans les régions US ou UEPosture identiqueCarte de régions Magento Commerce Cloud uniquement

Références : Documentation Flutter, Documentation framework Symfony, Référence sécurité niveau lignes PostgreSQL.

Catégories de pièces ZipIt — sélection de premier niveau Pièces d'origine, Pièces aftermarket, Entretien, Pneus

CRM vendeurs — Symfony multi-tenant, inventaire par site et vérification des contreparties

Le CRM vendeurs est une application React monopage soutenue par un backend Symfony multi-tenant. Chaque vendeur est un tenant de premier niveau ; chaque agence — magasin physique, entrepôt régional — est une entité enfant dans ce tenant. La sécurité au niveau des lignes PostgreSQL applique l'isolation des tenants afin qu'un vendeur dans un tenant ne puisse pas lire l'inventaire d'un autre, et l'index de recherche orienté acheteur est tenant-aware afin qu'un acheteur voie un ensemble de résultats unifié sans jamais voir la frontière tenant sous-jacente. La réception de marchandises, l'inventaire par site, les prix, la vérification des contreparties et les flux de travail de commande vivent tous par agence et se consolident dans un tableau de bord à l'échelle du tenant afin qu'un vendeur gérant des magasins dans plusieurs villes dispose d'une vue cohérente.

La vérification des contreparties donne à l'opérateur une posture défendable sur qui peut vendre sur la marketplace. Le CRM ingère des documents commerciaux lors de l'intégration des vendeurs, les fait passer par une file d'attente de vérification (authenticité des documents, analyse d'expiration, confiance OCR) avec une étape de révision humaine, et écrit un dossier d'audit immuable par vendeur. Les enregistrements sont conservés selon les exigences de réglementation commerciale locale — différentes en Californie, aux Pays-Bas et au Royaume-Uni — et chiffrés au repos avec rotation des clés. La surface vendeur de bout en bout est livrée dans le cadre de notre pratique de développement de logiciels sur mesure.

Accueil app ZipIt — recherche par marque et modèle, point d'entrée recherche VIN et Voir le catalogue

Application acheteur — Flutter, recherche VIN et flux de commande inter-sites

Le client acheteur est construit en Flutter avec une seule base de code Dart servant iOS et Android. L'authentification sans mot de passe maintient la friction d'inscription faible — un acheteur saisit un numéro de téléphone ou un e-mail, reçoit un code à usage unique et accède au catalogue en quelques secondes. La recherche VIN est le point d'entrée de premier ordre : l'acheteur saisit un VIN ou sélectionne une marque et un modèle, et l'application appelle le service d'adaptateur VIN, qui appelle le catalogue de type Laximo et réconcilie les résultats avec l'inventaire côté vendeur dans tous les tenants. Le résultat est une liste unifiée de pièces avec disponibilité inter-sites, prix par vendeur et ajout au panier en un geste qui respecte l'isolation des tenants dans les coulisses.

Le flux de commande boucle la boucle. Un acheteur révise le panier, choisit une option de livraison parmi les fournisseurs de livraison intégrés et confirme — la commande est écrite dans le journal d'audit immuable, le CRM vendeur prend en charge la commande dans les agences concernées et l'acheteur reçoit une notification push quand chaque agence expédie. Les opérateurs intercontinentaux peuvent router un acheteur en Californie vers un vendeur américain et un acheteur en Allemagne vers un vendeur néerlandais sans que l'acheteur n'ait jamais à choisir une région ; le modèle de données s'en charge. La même équipe d'ingénierie livre l'application acheteur et le CRM vendeur en cadence dans le cadre de notre pratique de développement d'applications mobiles.

Détail pièce ZipIt — levier de vitesse pour transmission automatique, prix 6020₸ avec note vendeur, options Retrait et Livraison

Livraison intégrée, analytique vendeur et posture d'audit prête

L'intégration de livraison transforme une commande mono-vendeur en une exécution multi-tronçon sans obliger l'acheteur à y penser. Chaque agence remet au fournisseur de livraison qu'elle préfère via une mince couche d'adaptateur ; le backend suit chaque tronçon via le moteur de flux de travail de commande et écrit les mises à jour de statut dans le journal d'audit immuable. Les acheteurs voient une timeline de suivi unique qui agrège le statut par tronçon, et les vendeurs voient une vue d'exécution par agence dans le CRM. L'analytique vendeur vit dans le même backend Symfony et apparaît dans le CRM sous forme de tableaux de bord en temps quasi réel — unités vendues par agence, temps d'exécution moyen, termes de recherche les plus populaires par région et statut de vérification des contreparties dans les agences du tenant.

La posture de gestion des données s'aligne avec les obligations du RGPD pour les acheteurs et vendeurs dans l'Union européenne et les obligations CCPA / CPRA pour les utilisateurs en Californie et aux États-Unis au sens large. Les données acheteur, les données vendeur et le journal d'audit des commandes peuvent tous être fixés dans les régions US ou UE pour les futurs engagements de résidence des données, et le modèle multi-tenant maintient l'isolation des tenants appliquée au niveau de la base de données plutôt qu'au niveau de la couche applicative.

Posture de conformité : Aligné RGPD · Prêt ISO 27001 · SOC 2 Type II en cours · Compatible HIPAA · CCPA reconnu.

Méthodologie de livraison

Une construction en cinq phases qui a emmené ZipIt d'une expérience d'approvisionnement fragmentée à une marketplace biface en production sur iOS, Android, web et un CRM vendeurs multi-tenant.

Phase 1

Découverte & exigences

Cartographie du parcours acheteur (référence approvisionnement par téléphone), enquête sur les flux de travail vendeur, modèle de données multi-tenant, révision de confidentialité commerciale US et UE, évaluation du fournisseur de catalogue VIN.

Phase 2

Architecture & modèle de données

Backend Symfony multi-tenant, sécurité au niveau des lignes PostgreSQL, index de recherche tenant-aware, service d'adaptateur VIN, spécification de l'adaptateur fournisseur de livraison, journal d'audit de commandes immuable.

Phase 3

Constructions de plateformes

Application acheteur Flutter pour iOS et Android, surface acheteur web React, CRM vendeur React, recherche VIN de bout en bout, panier et flux de commande, tableaux de bord vendeur.

Phase 4

Durcissement d'audit prêt

Pipeline de vérification des contreparties, données chiffrées au repos, test d'isolation des tenants, QA d'intégration de livraison, test de charge multi-tenant à la taille de catalogue projetée, chorégraphie de révision du store.

Phase 5

Lancement & télémétrie

Soumission App Store + Google Play sur les storefronts US et UE, déploiement par tenant, chorégraphie d'intégration des vendeurs, runbooks de permanence pour les adaptateurs VIN et de livraison.

Analytique côté vendeur, transfert opérateur et migration de tenants

L'analytique côté vendeur de ZipIt transforme le CRM en quelque chose qu'un vendeur gardera ouvert toute la journée, pas seulement un endroit pour télécharger l'inventaire une fois par semaine. Les tableaux de bord Symfony agrègent les unités vendues par agence, le temps d'exécution moyen par fournisseur de livraison, les termes de recherche les plus populaires par région et le statut de vérification des contreparties dans les agences du tenant. Les mêmes données soutiennent un export par tenant afin qu'un vendeur gérant des magasins aux Pays-Bas et en Allemagne puisse réconcilier avec son flux de travail comptable existant sans payer un module Magento Business Intelligence. La migration de tenants a été intégrée dès le premier jour — un nouveau vendeur peut s'intégrer, importer l'inventaire depuis un téléchargement structuré, être vérifié et être en direct sur la marketplace en quelques heures plutôt qu'en semaines, et un vendeur existant peut déplacer des agences entre tenants si sa structure d'entreprise change sans perdre le journal d'audit par agence. Les opérateurs inter-tenants peuvent délimiter leur vue par région, ce qui est la façon dont une seule équipe back-office couvre les opérations aux États-Unis et dans l'UE pendant les quarts calmes sans perdre la frontière de conformité par tenant.

Lancement aux États-Unis et dans l'Union européenne

La plateforme ZipIt a été architecturée pour les opérateurs de marketplace automobile desservant des acheteurs et vendeurs aux États-Unis et dans l'Union européenne. La construction en langue anglaise sert les utilisateurs en Californie, New York, Texas, Floride et Washington aux États-Unis, et les utilisateurs aux Pays-Bas, en Allemagne, France, Irlande et Suède dans l'UE, sans base de code séparée par région. Les flux de consentement sont region-aware au niveau de la couche client : les utilisateurs dans l'UE et l'EEE reçoivent un écran de consentement granulaire de style RGPD avec des cases à cocher séparées pour les canaux marketing et l'analytique produit optionnelle ; les utilisateurs en Californie reçoivent une divulgation CCPA « Ne pas vendre ou partager mes informations personnelles » dans le même flux. Les pratiques de gestion des données sont alignées avec le RGPD pour les utilisateurs européens et avec le patchwork de confidentialité des États américains — CCPA / CPRA (Californie), VCDPA (Virginie), CPA (Colorado), CTDPA (Connecticut), UCPA (Utah), TDPSA (Texas) et Oregon CPA. Les enregistrements de vérification des contreparties vendeur sont conservés selon les exigences de réglementation commerciale locale, et les enregistrements de commandes prêts pour l'audit font de la conformité régionale un exercice de divulgation honnête plutôt qu'un problème de ségrégation des données par juridiction.

Le déploiement backend fonctionne sur des régions UE et US en parallèle — Pays-Bas, Allemagne, France, Suède et Irlande pour la couverture UE ; US Est et US Ouest pour l'Amérique du Nord — avec des services Symfony et des instances PostgreSQL provisionnées de manière identique via Terraform. Le stockage des tenants et le journal d'audit des commandes peuvent être fixés dans les régions US ou UE pour les futurs engagements de résidence des données, et les adaptateurs VIN et de livraison sont sans état afin de pouvoir être mis à l'échelle indépendamment par région. La classification d'âge App Store et la classification de contenu Google Play ont été calibrées pour une application marketplace, et la politique de confidentialité intégrée a été rédigée pour documenter exactement l'architecture ci-dessus, citant directement les obligations RGPD et les obligations CCPA de Californie. L'équipe d'ingénierie derrière la construction travaille une journée CET avec un chevauchement US Est (9h–13h ET) pour les points quotidiens, la chorégraphie de révision du store et la réponse de permanence sur les flux d'intégration de vendeurs intercontinentaux.

Stack technologique et feuille de route

Flutter Dart React PHP Symfony PostgreSQL Sécurité niveau lignes Redis Catalogue VIN Laximo API REST Auth sans mot de passe Adaptateurs de livraison Moteur de flux de travail commande APNs Firebase Cloud Messaging Docker Terraform Prometheus Grafana

La feuille de route active de développement de logiciels sur mesure pour ZipIt inclut un niveau B2B avec domaine personnalisé et SSO pour les acheteurs de flotte d'entreprise, une intégration plus profonde avec les systèmes de comptabilité et ERP US et UE, un harnais de vérification continue interne pour les invariants d'isolation des tenants et un deuxième adaptateur de catalogue VIN pour la redondance entre les régions. Les plans d'infrastructure incluent un sharding supplémentaire par tenant pour le débit multi-tenant projeté et une future évaluation indépendante de disponibilité intégrée à la feuille de route cloud & DevOps.

Construire une marketplace biface comme celle-ci — parlez-nous

Si vous planifiez une marketplace de pièces auto, une plateforme de commerce B2B multi-tenant ou tout produit biface où le CRM côté vendeur doit résister à une révision d'un régulateur pour des audiences aux États-Unis et dans l'UE, nous avons livré cette stack de bout en bout et pouvons réduire significativement le délai de construction. L'équipe d'ingénierie derrière elle se trouve dans YuSMP Group. Nous travaillons à prix fixe pour les MVP bien spécifiés et sur des équipes de développement dédiées pour la livraison continue, avec une journée CET et une fenêtre garantie de chevauchement US Est (9h–13h ET) pour les points quotidiens, les démos et la réponse aux incidents.

Réserver un appel de découverte Voir les services de développement mobile

Foire aux questions

Quel est le coût de construction d'une marketplace de pièces auto biface avec un CRM vendeurs ?

Un MVP ciblé couvrant une application acheteur Flutter sur iOS et Android, une surface acheteur web et un CRM vendeurs multi-tenant avec réception de marchandises et inventaire par site coûte généralement entre 180 k€ et 340 k€. L'ajout d'une recherche de pièces par VIN via une intégration de catalogue de type Laximo, la remise de livraison intégrée, l'analytique côté vendeur, la vérification des contreparties et la posture d'audit prête pour les opérateurs US et UE porte une plateforme complète à 360 k€–700 k€. Les principaux facteurs de coût sont l'intégration du catalogue VIN, le modèle de données multi-tenant et l'analytique côté vendeur que le CRM doit maintenir en temps quasi réel.

Pourquoi Flutter pour une marketplace de pièces auto biface plutôt qu'iOS et Android natifs ?

Les applications acheteur de pièces auto sont des produits formulaires et catalogues avec une intégration de plateforme relativement peu profonde, exactement là où Flutter est le plus fort. Une seule base de code Dart livre les applications acheteur iOS et Android en un seul passage d'ingénierie, des tokens de design partagés avec la surface acheteur web et une itération plus rapide sur l'interface du catalogue que deux équipes natives. iOS et Android natifs ajouteraient du coût sans apporter de valeur proportionnelle pour la recherche VIN, le panier et le flux de commande. Nous réservons les constructions natives pour les cas où la localisation continue, la fiabilité des push notifications ou l'intégration au niveau du noyau dominent le cahier des charges.

Comment fonctionne un CRM multi-tenant pour les vendeurs de pièces auto avec de nombreux sites ?

Un CRM multi-tenant traite chaque vendeur comme un tenant de premier niveau et chaque agence comme une entité enfant dans ce tenant. L'inventaire, les réceptions de marchandises, les prix et les flux de travail de commande vivent par agence mais se consolident dans un tableau de bord à l'échelle du tenant, de sorte qu'un vendeur gérant des magasins dans plusieurs villes dispose d'une vue cohérente. Symfony supporte le stockage du tenant ; le filtrage par ligne PostgreSQL applique l'isolation des tenants, et l'application acheteur lit la disponibilité inter-sites via un index de recherche tenant-aware afin qu'un acheteur ne voie jamais une pièce d'un vendeur avec lequel il ne peut pas transiger.

Comment la recherche de pièces par VIN est-elle connectée au catalogue de la marketplace ?

La recherche VIN est implémentée comme un service d'adaptateur dédié qui appelle un catalogue automobile de type Laximo et réconcilie les résultats avec l'inventaire côté vendeur. L'adaptateur traduit un VIN en une liste structurée de références de pièces, les diffuse vers l'index d'inventaire des vendeurs et retourne un ensemble de résultats unifié avec la disponibilité inter-sites et les prix par vendeur. L'adaptateur met en cache les recherches VIN fréquentes dans Redis avec des TTL dimensionnés selon la cadence de mise à jour du catalogue, et écrit chaque recherche dans un journal d'audit afin que l'opérateur puisse attribuer le trafic de recherche par acheteur pour l'analytique US et UE.

Combien de temps faut-il pour livrer une marketplace de pièces auto avec un CRM vendeurs ?

Une application acheteur Flutter sur iOS et Android, une surface acheteur web et un CRM vendeurs Symfony multi-tenant avec réception de marchandises et inventaire par site prend généralement 14 à 22 semaines pour le MVP. L'ajout de la recherche de pièces par VIN via un catalogue de type Laximo, la remise de livraison intégrée, l'analytique vendeur, la vérification des contreparties et la posture d'audit prête pour les opérateurs US et UE ajoute 8 à 14 semaines. L'intégration du catalogue VIN est fréquemment le facteur limitant car les API de catalogue réels retournent des références de pièces incohérentes nécessitant une réconciliation côté serveur.

Partager ce cas

LinkedIn X

Planifiez une construction similaire

Réserver un appel de découverte

Demander une proposition

Partagez quelques détails et un consultant senior vous répondra dans un délai d'un jour ouvré.

Vous préférez parler directement ? ☎ Appeler le +374 44 871 811 ✉ sales@yusmpgroup.com