Roland Djenwa
← Retour aux projets
Cadeau · Expérience interactiveEn cours · 2026 – Present

Miimo

Un cadeau qui se découvre : messages, photos et récompenses débloquées étape par étape, sans compte ni application pour celui qui reçoit.

Miimo permet d'offrir un cadeau sous forme d'expérience à découvrir. Le créateur écrit un message d'ouverture, compose jusqu'à vingt étapes (textes, photos, révélations, indices, questions, comptes à rebours, lieux), puis répartit une somme d'argent en récompenses, soit étape par étape, soit toutes d'un coup à la fin. Il peut rester anonyme (« Un admirateur secret »), inviter des proches à écrire eux-mêmes des étapes (Miimo collectif), et envoyer le cadeau tout de suite ou à une date programmée, par exemple pour un anniversaire à l'aube. Le destinataire n'installe rien et ne crée aucun compte : il reçoit un lien sur WhatsApp (ou par SMS en repli, avec un code court), confirme son numéro avec un code, puis avance dans l'ordre, chaque étape ouvrant la suivante et débloquant sa récompense. Le site s'affiche en français ou en anglais selon le navigateur du destinataire. Les frais de l'opérateur sont à la charge du créateur, qui voit le total à valider au moment de payer : le destinataire reçoit exactement le montant prévu.

Des prestataires partenaires proposent aussi des packs, un cadeau physique ou un service, que le créateur ajoute à son parcours. Le prestataire accepte la demande et garantit son prix, le client paie le tout en une fois sur Miimo, et l'argent du prestataire est mis de côté jusqu'à la remise, confirmée par un code que le destinataire lui donne. Le prestataire retire ensuite son argent sur demande, et les annulations sont remboursées selon qui les demande. Le produit vise le Cameroun d'abord.

L'API NestJS suit une architecture hexagonale : un contexte par domaine (cadeau, parcours, récompenses, paiement, grand livre, messagerie, médias, accès destinataire, prestataires et packs, administration), un domaine qui ignore le framework, et des ports explicites pour chaque service externe. Le flux commence par le paiement du créateur en Mobile Money. Le partenaire de paiement conserve les fonds, Miimo ne tenant aucun portefeuille. À la confirmation, l'API relit le statut chez le partenaire plutôt que de croire le callback, écrit une entrée de financement dans un grand livre immuable et idempotent, et fait passer le cadeau en attente d'envoi. Une tâche planifiée chaque minute envoie les liens dus et retente les échecs. Côté destinataire, une session limitée à un seul cadeau suit la vérification du code, une limite de codes protège le crédit SMS, et le serveur ne livre jamais les étapes à venir. Terminer une étape écrit d'abord le déblocage dans le grand livre, puis fait avancer la progression, sans jamais perdre ni doubler une récompense. L'argent des prestataires vit dans un registre séparé de celui des destinataires. L'espace du créateur et la page du destinataire sont en Next.js, tout comme le tableau de bord d'administration, qui trace chaque action sensible dans un journal d'audit.

Un cadeau d'argent qui ressemble à un virement n'est plus une surprise : la contrainte qui définit Miimo est de garder l'émotion devant et l'argent en récompense, avec un serveur qui ne révèle jamais l'étape suivante à l'avance.

Défis techniques

  • Ne jamais perdre ni doubler une récompense : déblocage écrit dans un grand livre idempotent avant l'avancement, et étape terminée une seule fois même en cas de requêtes simultanées.
  • Un accès sans compte mais sécurisé : lien, numéro associé et code de vérification, session limitée à un seul cadeau, limites de codes pour protéger le crédit SMS.
  • Garder la surprise côté serveur : les étapes à venir et les montants futurs ne quittent jamais l'API tant qu'ils ne sont pas débloqués.
  • Un paiement confirmé sans croire le callback : relecture du statut chez le partenaire, rejouable sans doublon, et envoi programmé repris automatiquement en cas d'échec.
  • Faire payer les frais au créateur sans que le destinataire reçoive moins : montant calculé en entiers avec arrondi vers le haut, taux réglables depuis l'administration et recopiés sur chaque paiement.
  • Tenir l'argent des prestataires à part : registre séparé de celui des destinataires, somme mise de côté au paiement et libérée à la remise confirmée par un code chiffré (cinq essais, puis blocage), annulations remboursées sans jamais toucher à l'argent du destinataire.

Rôle

Créateur & Développeur — projet personnel

Stack

Next.jsNestJSTypeScriptPostgreSQLDocker
Side ProjectGiftingMobile Money