Ssteven_copy
case_study · 01 / 06·Startup · projet entrepreneurial·beta

Klorv.

Plateforme SaaS qui transforme un prompt utilisateur en application mobile fonctionnelle, scannable en live via Expo. Pipeline IA distribué sur trois workers Docker, freemium avec paywall Stripe, déployé sur Hetzner.

30
Archétypes de jeux supportés
3
Workers Docker spécialisés
~$0.01
Coût IA par génération
61
Fichiers de tests
Next.jsReactTypeScriptTailwind CSSSupabaseBullMQRedisDocker SwarmDeepSeek APIExpongrokStripeGitHub OAuthHetzner

// 01 · le-contexte

Le contexte

Créer une app mobile reste long, cher et technique pour qui n'est pas dev. Même pour un dev confirmé, sortir un MVP fonctionnel prend des semaines.

Avec mon associé, on s'est posé une question simple : et si on pouvait décrire son idée en langage naturel et recevoir une app qui tourne ? Pas un mockup, pas un prototype. Une vraie app que tu scannes avec ton téléphone.

C'est la promesse de Klorv. Le pari technique : transformer un prompt utilisateur en code généré, validé, packagé, jouable en preview Expo — en quelques minutes, pour environ un centime de coût IA.

// 02 · la-solution

La solution

J'ai conçu et développé l'intégralité du pipeline IA et de l'infrastructure. L'architecture repose sur un monorepo multi-services avec une application web Next.js qui sert d'interface chat + éditeur, et trois workers Docker spécialisés qui se passent les jobs via Redis (BullMQ).

Le pipeline en 5 étapes

// code
1. L'utilisateur tape un prompt dans l'éditeur
   → POST /api/ai/sessions/[id]/messages → 202 immédiat
   → Job BullMQ enqueué dans Redis

2. AI Queue Worker claim le job
   → Charge les fichiers projet depuis Supabase
   → Détermine le mode (ask / plan / build)
   → POST au Claw Worker

3. Claw Worker exécute l'agent
   → Agent loop DeepSeek (reasoner pour build, chat pour ask)
   → L'agent lit/écrit/liste les fichiers via tool use
   → Retourne changedFiles[]

4. AI Queue Worker valide et applique
   → Whitelist chemins, fichiers protégés
   → Snapshot la version actuelle
   → Apply les patches via RPC transactionnelle

5. Expo Preview Worker détecte le changement
   → Scaffolde un projet Expo
   → Lance expo start + tunnel ngrok
   → Publie l'URL → preview jouable dans l'iframe éditeur

Les 3 workers Docker

AI Queue Worker — Le chef d'orchestre. Consommateur BullMQ qui claim atomiquement les ai_runs, orchestre tout le pipeline (scaffold → claw → validation → apply patches → snapshot), gère les quotas utilisateur et le cost guard.

Claw Worker — L'exécuteur LLM. Serveur HTTP sur :8787 qui isole complètement l'appel au modèle. Zéro accès direct à la base : il reçoit files[], retourne changedFiles[], authentification par bearer token. C'est ce qui permet de scaler indépendamment l'inférence du reste.

Expo Preview Worker — Le runner mobile. Polling des expo_previews en attente, gère un seul tunnel actif à la fois (expo start + ngrok), nettoie les workspaces, tue les processus orphelins, applique un backoff exponentiel sur les erreurs.

Le design system Klorv

J'ai conçu 30 archétypes de jeux dans le ARCHETYPE_REGISTRY du package orchestrateur (runner, platformer, match3, idle-clicker, roguelike-dungeon, bullet-hell, crossword, sandbox-painting, card-deckbuilder, rhythm-tap, etc.). Chaque archétype définit un squelette de gameplay et un thème visuel cohérent.

L'utilisateur prompt en langage libre, mais le système contraint la génération à un archétype identifié — ce qui garantit la cohérence du code généré et la qualité du résultat.

// 03 · les-dfis-techniques

Les défis techniques

Garantir la fiabilité du pipeline. Un LLM peut tout casser. La gestion des erreurs n'est pas une option, c'est le cœur du système. J'ai mis en place un timeout de 10 minutes max par build et un timeout repair de 3 minutes si l'agent tente de corriger une erreur. Les jobs qui dépassent sont tués proprement et le coût IA reste prévisible (~$0.01 par run en moyenne sur DeepSeek).

Isoler les responsabilités. Si le Claw Worker plante, le reste continue. Si le Expo Preview Worker bug, les builds continuent à se générer. Cette séparation stricte des préoccupations est ce qui rend la plateforme robuste — pas le code de chaque worker individuellement.

Le freemium et les quotas. Le free tier autorise 5 builds/jour côté UI et 20 builds/jour côté API, avec un cap mensuel. Au-dessus, paywall Stripe avec 3 plans (pro, max, enterprise). Le cost-guard calcule le coût IA en temps réel pendant la génération et coupe si le quota est dépassé. Pas de mauvaise surprise pour l'utilisateur, pas de mauvaise surprise pour nous côté facture DeepSeek.

61 fichiers de tests. Le pipeline étant distribué sur plusieurs workers, c'est la couverture de test qui garantit qu'une modif sur un worker ne casse pas les autres.

// 04 · statut

Statut

Plateforme lancée publiquement avec freemium et paywall Stripe (3 plans : pro, max, enterprise). Auth via GitHub OAuth + Supabase. Déploiement Docker Swarm sur Hetzner, CI/CD GitHub Actions.

// 05 · stack-technique

Stack technique

LayerTechnos
FrontendNext.js, React, TypeScript, Tailwind CSS
BackendNext.js API routes, Supabase (Postgres + Auth)
QueueBullMQ + Redis
IADeepSeek API (reasoner pour build, chat pour ask)
WorkersNode.js HTTP servers (3 services Docker indépendants)
PreviewExpo + ngrok (tunnels live)
Auth & paiementGitHub OAuth, Supabase Auth, Stripe
InfraDocker Swarm sur Hetzner, GitHub Actions CI/CD

// 06 · ce-que-je-retiens

Ce que je retiens

Klorv m'a forcé à repenser ce que veut dire "intégrer un LLM en production". Le vrai défi n'est jamais le prompt. C'est l'architecture autour : queues, timeouts, isolation des services, cost guards, quotas, snapshots, rollbacks.

Une démo IA, n'importe qui peut la faire. Un système IA fiable en production, c'est un autre métier — et c'est exactement ce que je transpose aujourd'hui sur les missions freelance d'intégration LLM.