Warider : marketplace de balades à moto
Mon propre produit : une marketplace au Maroc pour réserver des balades et des circuits à moto en ville avec des riders locaux vérifiés.

Aperçu
Warider met en relation des voyageurs avec des riders locaux vérifiés dans les villes marocaines. Le voyageur choisit une ville, une durée de 1 à 4 heures, ses centres d'intérêt, une heure de départ et un point de rencontre ; Warider fixe le prix et envoie la demande aux riders proches. Les riders publient aussi leurs propres circuits, et une console d'exploitation gère les villes, les validations et les règlements. Je l'ai construit en monorepo pnpm et Turborepo avec une application web Next.js, une API NestJS sur Supabase (Postgres + PostGIS) et une application mobile Expo.
Le problème
Trouver un rider de confiance pour une courte balade ou une visite de la ville passe par des contacts informels, des prix flous et aucune vérification du permis, de l'assurance ou de la moto. Une marketplace équitable doit aussi diffuser les demandes vite, sans que deux riders acceptent la même course.
Ce que j'ai construit
J'ai développé un flux de demande instantanée qui envoie chaque demande par vagues aux riders vérifiés les plus proches : le premier qui accepte est réservé pour le voyageur pendant 5 minutes grâce à une opération atomique en base, puis les deux parties confirment, échangent par messagerie et se retrouvent, et le rider est payé en espèces. Les riders passent par une inscription et une vérification (identité, permis, assurance, moto, casque passager), créent des circuits avec des arrêts ordonnés et un itinéraire calculé pour deux-roues, et règlent la commission Warider. Les villes sont des données : chaque zone de service est un polygone PostGIS avec sa grille de prix et ses réglages de dispatch. Cartes, itinéraires, traduction, stockage et notifications push passent par des abstractions de fournisseurs (Google Maps, Geoapify, repli sur Photon/OSRM, Cloudflare R2 et Workers AI, FCM), et le temps réel passe par une outbox transactionnelle.
Résultats
- Plus de 70 fichiers de tests automatisés (Vitest) et des tests pgTAP sur le RLS, les zones PostGIS et la contrainte anti double réservation
- La CI exécute typecheck, lint, tests unitaires, tests base de données et tests d'intégration API sur un Supabase local, puis construit les images Docker
- Conteneurs web et API déployés sur une VM derrière Cloudflare (tunnel, Turnstile, médias sur R2)
- Interface en anglais, français et arabe avec mise en page de droite à gauche
- 14 ADR (architecture decision records) qui documentent les choix de conception
Points clés
- Dispatch par vagues avec réservation atomique de 5 minutes pour le premier rider qui accepte
- Éditeur de circuits : arrêts ordonnés, itinéraire deux-roues, photos et disponibilités hebdomadaires
- Vérification des riders, encaissement en espèces et règlement de la commission
- Console d'exploitation : validation des riders, modération des circuits, demandes en direct, rapports et journal d'audit non modifiable
- Abstractions de fournisseurs avec repli automatique pour les lieux, les itinéraires et la traduction
- Règles métier et contrats Zod partagés entre l'API, le web et le mobile


