// 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
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
| Layer | Technos |
|---|---|
| Frontend | Next.js, React, TypeScript, Tailwind CSS |
| Backend | Next.js API routes, Supabase (Postgres + Auth) |
| Queue | BullMQ + Redis |
| IA | DeepSeek API (reasoner pour build, chat pour ask) |
| Workers | Node.js HTTP servers (3 services Docker indépendants) |
| Preview | Expo + ngrok (tunnels live) |
| Auth & paiement | GitHub OAuth, Supabase Auth, Stripe |
| Infra | Docker 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.
