Sommaire

L'essentiel

  • Une place de marché de logements meublés : réservation à la nuit, en longue durée ou en LokaPass (forfait de 4 heures).
  • Paiement par carte (Stripe) et mobile money (Wave), devises et moyens de paiement configurés par pays.
  • Versements aux hôtes retenus pendant une fenêtre de litige adaptée à la durée du séjour, et bloqués en cas d'incident.
  • Confiance codée dans les règles : vérification d'identité, relogement, points de pénalité, score de confiance, avis.
  • Site PHP rendu côté serveur et apps iOS / Android Expo branchés sur la même API.

MyLoka est une plateforme de location de logements meublés en Côte d'Ivoire : hôtels, résidences, appartements. Un voyageur y trouve un logement, réserve à la nuit, pour quelques heures ou pour un long séjour, et paie en ligne. Un hôte y publie ses annonces, gère son calendrier, répond aux voyageurs et suit ses revenus. J'ai mené le développement fullstack du projet : le site web, les applications iOS et Android, l'API commune et le back-office.

Un produit, deux publics

MyLoka sert deux utilisateurs aux attentes opposées. Le voyageur veut trouver vite, comprendre le prix et payer sans risque. L'hôte veut remplir son logement, être payé à temps et se protéger des abus. Tout le produit est construit autour de cet équilibre.

  • Côté voyageur : recherche par ville avec filtres (prix, chambres, plus de 70 équipements), fiche logement avec galerie, carte et avis, réservation, paiement, messagerie avec l'hôte, favoris, historique des séjours.
  • Côté hôte : création d'annonce guidée avec brouillon, calendrier des disponibilités, demandes de réservation à accepter ou refuser, tableau de bord (revenus, vues, conversion), messagerie, demandes de virement.
  • Côté équipe : un back-office d'administration et des tâches planifiées qui font tourner la plateforme sans intervention.
Fiche logement MyLoka : galerie photos, hôte vérifié et encart de réservation
Fiche logement : galerie, hôte vérifié, réservation à la nuit ou en LokaPass

Le parcours de réservation

  1. Le voyageur cherche un logement dans une ville et affine avec les filtres. Les résultats se chargent par lots au fil du défilement.
  2. Il choisit sa formule : à la nuit, en longue durée, ou en LokaPass, un forfait horaire de 4 heures pensé pour les besoins de courte durée.
  3. Il sélectionne ses dates dans le calendrier. L'API vérifie la disponibilité en tenant compte des dates réservées, des dates bloquées par l'hôte et des jours de préparation entre deux séjours.
  4. La page « Confirmer et payer » affiche le récapitulatif, la politique d'annulation et le détail du prix, puis le paiement.
  5. L'hôte reçoit la demande, l'accepte ou la refuse, et les deux parties peuvent échanger dans la messagerie.

Chaque annonce choisit une politique d'annulation : flexible, modérée ou stricte, avec des seuils à 7 jours et à 24 heures avant l'arrivée. Le LokaPass a sa propre règle, avec un remboursement intégral jusqu'à 2 heures avant le créneau. Ces règles sont centralisées dans un seul fichier de configuration, partagé par le site et l'application.

Écran Explorer de l'app MyLoka : logements par catégorie et prix par nuitRéservations en attente dans l'app hôte MyLokaConversation entre un hôte et une voyageuse dans l'app MyLoka
L'application : explorer, gérer les réservations en attente, échanger avec un voyageur

Les paiements, le cœur difficile

En Afrique de l'Ouest, la carte bancaire ne suffit pas. MyLoka accepte la carte via le Payment Element de Stripe et le mobile money via Wave, avec une passerelle Moneroo en complément. Une configuration par pays fixe la devise (franc CFA XOF ou XAF, shilling ougandais) et les moyens de paiement ouverts. L'affichage des prix peut aussi se faire en euros ou en dollars, avec des taux de change mis en cache pour 24 heures et une valeur de secours si le service de taux ne répond pas.

Le paiement n'est que le début. L'argent doit ensuite arriver chez l'hôte, mais pas trop tôt :

  • Fenêtre de litige : après l'arrivée, le voyageur dispose d'un délai pour signaler un problème. Il est de 3 heures pour une nuit, 6 heures jusqu'à 3 nuits, 12 heures jusqu'à 7 nuits, 24 heures au-delà.
  • Prudence pour les nouveaux hôtes : 6 heures de retenue supplémentaires tant qu'ils n'ont pas 3 réservations.
  • Versement bloqué automatiquement si un incident ou un litige bancaire est ouvert sur la réservation.
  • Virements Wave : l'hôte voit son solde disponible, ses montants en attente et demande son virement depuis son espace.

Les webhooks de Stripe et de Wave sont vérifiés par signature avant tout traitement. Les litiges bancaires Stripe sont enregistrés une seule fois, même si la notification arrive plusieurs fois. C'est ce genre de détail qui évite de payer deux fois un hôte ou de perdre la trace d'un remboursement.

La confiance, codée dans les règles

Une place de marché de logements vit de la confiance. Plusieurs mécanismes la protègent, tous présents dans le code :

  • Vérification d'identité avec Didit, suivie par webhook et par une tâche de contrôle régulière.
  • Photos d'arrivée et déclaration d'incident avec photos, réponse de l'autre partie et passage en médiation.
  • Relogement : si un hôte annule, la plateforme propose jusqu'à 3 logements de la même ville dont le prix reste entre 70 % et 130 % du séjour initial, avec un code promo de 10 % valable 30 jours.
  • Points de pénalité pour les hôtes qui annulent (avertissement, amende, rétrogradation, suspension, exclusion), avec exemption pour les cas de force majeure.
  • Événements de force majeure déclarés par pays ou par ville, qui identifient les réservations touchées.
  • Score de confiance recalculé par une tâche planifiée pour les hôtes et les voyageurs (volume de réservations, taux d'annulation, avertissements).
  • Avis avec note, répartition des étoiles, jusqu'à 3 photos et réponse de l'hôte.
Espace revenus de l'hôte MyLoka : solde disponible, montants en attente et demande de virement Wave
Revenus hôte : solde disponible, montants en attente et demande de virement Wave

Un classement équitable des annonces

Trier par note ne suffit pas : les mêmes logements resteraient toujours en tête et les nouveaux n'auraient aucune chance. L'ordre des résultats combine donc plusieurs signaux :

  • la note moyenne et le nombre d'avis ;
  • la qualité de l'annonce : nombre de photos, d'équipements, description, taux de réponse de l'hôte ;
  • le taux de clic par rapport aux vues ;
  • un coup de pouce aux annonces récentes, dégressif sur 14 jours ;
  • un rééquilibrage selon les affichages des 7 derniers jours, pour que la visibilité tourne ;
  • une légère part d'aléatoire, et un bonus pour les annonces mises en avant (boost payant).

Deux interfaces, une seule API

Le site est écrit en PHP avec Tailwind CSS et rendu côté serveur, pour le référencement : balises Open Graph, données structurées schema.org et plans de site dynamiques. Les applications iOS et Android sont construites avec Expo et React Native. Les deux consomment la même API PHP et la même base MySQL, si bien qu'une règle métier n'existe qu'à un seul endroit.

Quelques choix concrets côté application :

  • connexion par code reçu par email, par Google ou par Apple, avec un jeton valable 30 jours ;
  • paiement natif avec le SDK Stripe, cartes avec react-native-maps ;
  • notifications push via le service d'Expo, et emails qui respectent les préférences de chaque utilisateur (les messages et réservations restent toujours notifiés) ;
  • messagerie rafraîchie toutes les 10 secondes, sur le site comme dans l'application ;
  • interface en français et en anglais ;
  • mises à jour à distance (OTA) et remontée d'erreurs avec Sentry.

Côté serveur, une limite de requêtes protège les points sensibles : envoi de SMS, codes de connexion, connexion sociale, paiement. Les images envoyées sont converties en WebP et redimensionnées selon leur usage (avatar, annonce, avis, document). Le parrainage reverse au parrain une part des réservations de ses filleuls pendant 6 mois, avec un blocage de l'auto-parrainage. Les hôtes peuvent aussi exporter leurs réservations au format iCal pour les reporter dans leur agenda.

Tableau de bord hôte MyLoka : alertes, revenus, réservations, vues, conversion et graphiques sur 30 jours
Tableau de bord hôte : alertes, revenus, réservations, vues, conversion et graphiques sur 30 jours

Ce qui tourne en arrière-plan

Une plateforme de réservation ne s'arrête jamais. Un script planifié regroupe toutes les tâches de fond, lançables ensemble ou une par une : nettoyage des codes de connexion expirés, clôture des séjours terminés, fin des mises en avant expirées, libération des versements, calcul des scores de confiance, contrôle des cas de force majeure, suivi des vérifications d'identité, relances d'inscription, contrôle d'intégrité des annonces et résumé quotidien.

Ce que ce projet montre

MyLoka réunit presque toutes les difficultés d'une place de marché : deux publics, de l'argent qui circule entre eux, des moyens de paiement locaux, des litiges, de la confiance à construire et deux interfaces à maintenir alignées. Le projet est en ligne sur myloka.co et ses applications sont disponibles sur l'App Store et Google Play. L'architecture est prête à accueillir de nouveaux pays : devises, moyens de paiement et règles sont déjà paramétrés par pays.

Vous avez un projet de réservation, de location ou de place de marché avec paiement en ligne ? Me contacter pour en parler. Vous pouvez aussi voir toutes les captures du projet.

Questions fréquentes

Peut-on accepter le mobile money sur une plateforme de réservation ?

Oui. MyLoka accepte Wave en plus de la carte bancaire via Stripe. Les notifications de paiement sont vérifiées par signature avant d'être prises en compte, et les moyens de paiement sont activés pays par pays.

Comment éviter de payer un hôte avant un éventuel litige ?

Chaque réservation a une date à partir de laquelle le versement est possible, calculée selon la durée du séjour. Une tâche planifiée libère les fonds seulement si aucun incident ni litige bancaire n'est ouvert.

Faut-il développer deux fois la logique pour le site et l'application ?

Non. Sur MyLoka, le site web et les applications iOS et Android utilisent la même API et la même base de données. Une règle métier, comme une politique d'annulation, n'est écrite qu'une fois.