Aller au contenu
~/benhattab
Retour aux projets
En productionPlateforme2026 — présent

Kumbis

Consultations vidéo en direct, du créneau au paiement

Plateforme de consultation où des clients réservent des sessions vidéo ou audio en direct avec des experts. Trois rôles — client, expert, administrateur — pilotent toute la navigation et les permissions, avec authentification par OTP SMS et facturation en FCFA.

3
rôles produit
PWA
installable
Rôle

Architecte & développeur — API, PWA client/expert, back-office

Stack
Laravel 13PostgreSQLSanctum v4Next.jsTypeScriptAgoraserwist (PWA)Zustandreact-queryPHPUnit 12
Liens
Le problème

Une consultation payante en direct concentre presque tous les problèmes difficiles d'une application au même endroit : il faut vendre un créneau, encaisser, faire se rejoindre deux personnes dans un appel qui doit fonctionner sur une connexion mobile sénégalaise, gérer le no-show, et payer l'expert ensuite. Chaque étape peut échouer indépendamment, et l'utilisateur ne pardonne aucune d'elles.

L'approche

L'appel repose sur Agora, avec les jetons de session émis côté backend et jamais côté client. C'est la seule façon d'empêcher quelqu'un de rejoindre une consultation qu'il n'a pas payée : le droit d'entrer dans le canal est délivré par le serveur, après vérification du paiement et de l'horaire.

L'authentification se fait par OTP SMS plutôt que par mot de passe. Sur ce marché, le numéro de téléphone est l'identité réelle — les adresses e-mail sont secondaires et souvent partagées. Cela supprime aussi tout le cycle de réinitialisation de mot de passe.

Le client est une PWA plutôt qu'une application native. L'installation depuis le navigateur évite la friction du store et le coût en données mobiles d'un téléchargement, ce qui compte quand une consultation se décide dans l'heure.

Architecture
  1. 01

    API

    Laravel 13 sous Sanctum v4, source de vérité unique : réservations, paiements, émission des jetons Agora, OTP et endpoints d'administration.

    Laravel 13 · PHP 8.3

  2. 02

    Temps réel audio/vidéo

    Agora, avec jetons de canal émis exclusivement par le backend après vérification du paiement.

    Agora

  3. 03

    Identité

    OTP par SMS via mtarget, avec une commande artisan dédiée pour tester un envoi réel en production.

    mtarget · OTP

  4. 04

    Application client & expert

    Next.js App Router en PWA (serwist), avec Zustand pour l'état local et react-query pour le cache serveur.

    Next.js · serwist

  5. 05

    Back-office

    Dashboard d'administration séparé, capable de tourner sur données simulées pour développer sans dépendre de l'API.

    Next.js · SWR

Arbitrages

Les jetons d'appel sont émis par le serveur, jamais par le client

C'est la frontière de sécurité de tout le produit. Si le frontend pouvait générer un jeton Agora, n'importe qui pourrait entrer dans n'importe quelle consultation. Le backend vérifie le paiement, le créneau et l'identité avant d'émettre — et le jeton est limité au canal concerné.

Points clés
  • Réservation, paiement, appel en direct et versement à l'expert dans un seul flux
  • Jetons Agora émis côté serveur après vérification du paiement et du créneau
  • Authentification par OTP SMS, adaptée à un marché où le téléphone est l'identité
  • Application installable (PWA) plutôt que native, pour éviter la friction du store
  • Trois rôles — client, expert, admin — pilotant navigation et permissions partout