En ligne halvyn.app

Halvyn

L’app couple qui transforme les conversations en jeu.

Compatibilité 87 % illustration

En clair

L’app couple interactive qui transforme les conversations en jeu.

~159K lignes de code, 102 tables DB, 380 endpoints, 17 services Docker en prod.

Points forts

La page d’accueil de Halvyn sur un téléphone : un quiz à deux choix, et son résultat, « C’est un match »Les fonctionnalités de Halvyn sur un téléphone : le quiz A/B en temps réel, les Love Coins, la comparaison des réponses
Captures réelles de Halvyn
  1. Quiz A/B temps réel

    Questions interactives entre partenaires

  2. Économie gamifiée

    Love Coins, streaks & missions

  3. 8 mini-jeux couple

    Des jeux pour renforcer la complicité

  4. Chat temps réel

    Messages texte & notes vocales

  5. Journal duo & calendrier

    Souvenirs partagés et événements

  6. Insights IA

    Analyse de compatibilité par l’IA

  7. Premium Stripe

    Abonnement et paiements sécurisés

  8. Multi-plateforme

    Web + iOS + Android, 9 langues

En chiffres

  • ~159K Lignes TS
  • 102 Tables DB
  • 380 Endpoints
  • 17 Services prod
  • 9 Langues

Le récit

Pourquoi j’ai construit ça

Avec ma chérie, il y avait toute une couche de petites choses du quotidien (préférences, souvenirs, réflexes) qu’on apprend l’un de l’autre au fil des mois, parfois des années. Je n’avais pas envie d’attendre. Halvyn est née de cette impatience : transformer la découverte mutuelle en jeu pour créer plus de complicité, plus vite. Un espace où chaque quiz, chaque mini-jeu et chaque conversation ajoute une brique à la connaissance qu’on a l’un de l’autre.

Décisions techniques structurantes

Dual-backend progressif

Un Express legacy qui proxie /v1 vers un backend V1 en clean architecture (modules / repositories / services / presenters). Le monolithe glisse vers une API moderne route par route, sans big-bang ni downtime.

Monorepo React 18 + Capacitor

Un seul codebase client qui tourne natif sur iOS, Android et Web avec plus de 95 % de code partagé : un design system unifié, trois plateformes livrées.

Realtime couples + sync offline

WebSocket avec rooms user / couple / session côté serveur, et mutation queue IndexedDB v3 (LWW) côté client. Les deux partenaires jouent simultanément et les mutations offline (moods, bucket-list) rejouent déterministement à la reconnexion.

Edge Cloudflare multi-Workers

Six Workers devant l’origine (rate-limiter, showcase-cache, media-cdn, cron dispatch, og-renderer, seo-localizer) qui absorbent les bursts et le trafic public avant qu’il n’atteigne l’API.

Le challenge non-trivial

Synchroniser une session de quiz temps réel à deux

Chaque partenaire répond indépendamment à une question A/B, la révélation ne se fait que quand les deux ont répondu, on calcule le match, on distribue les Love Coins. Et tout ça doit survivre à une déconnexion mobile en plein round, une double-réponse, un partenaire qui quitte l’app, ou un Worker qui tombe.

Idempotent, avec reprise d’état propre, et les événements missions / badges / streaks qui se déclenchent au bon moment sans double-comptage. Une state machine WebSocket distribuée avec persistance Postgres et reconcile offline, pas juste du pub/sub.

Leçon retenue

Si je refaisais, je démarrerais directement sur la clean architecture V1 dès le premier commit au lieu de traîner un Express legacy en parallèle pendant des mois : le proxy /v1 a coûté plus cher en complexité deploy et en mental-load qu’une réécriture franche l’aurait coûté.

Fiche technique

Où ça tourne Docker Compose · PostgreSQL 16 · Redis Pub/Sub · Cloudflare R2 · OpenAI · Stripe

Les technologies de Halvyn, par domaine
Frontend React 18 · Vite · TailwindCSS · Radix UI · Framer Motion
Backend Express · TypeScript · Drizzle ORM · PostgreSQL 16
Real-time WebSocket · Redis Pub/Sub · BullMQ
Mobile Capacitor 8 · iOS · Android
Infra Docker Compose · GitHub Actions · Cloudflare R2 · Prometheus
Services OpenAI · Stripe · Firebase · PostHog · Sentry

L’app couple qui transforme les conversations en jeu.