En octobre 2025, j'ai commence a developper Avistra — un SaaS de conception de systemes audiovisuels. Six mois plus tard, le compteur affiche 1 824 commits, 693 sessions de developpement, et une version v1.9.146 en production sur avistra.fr. Tout ca avec un seul developpeur et un copilote : Claude Code.
Voici comment j'ai structure mon workflow pour maintenir une velocite constante sans sacrifier la qualite.
Les chiffres bruts
Avant de rentrer dans le detail, posons les metriques du projet au moment de la redaction :
- 1 824 commits sur 693 sessions — soit environ 2,6 commits par session
- 5 742 tests unitaires qui passent, 0 flaky, repartis sur 237 fichiers
- 50+ tests E2E Playwright couvrant l'auth et les scenarios canvas
- 0 cycles architecturaux — dependency-cruiser verifie ca a chaque push
- 0 erreur TypeScript en production
- Score de maturite workflow : 8.8/10 (niveau EXPERT)
Ces chiffres ne sont pas la pour impressionner. Ils sont la pour montrer qu'un dev solo avec le bon outillage peut maintenir un niveau de qualite professionnel sur la duree.
Le CLAUDE.md comme constitution du projet
Le coeur de mon workflow avec Claude Code, c'est le fichier CLAUDE.md. Sur Avistra, il fait 615 lignes et fonctionne comme une constitution : il definit les regles dures que l'IA ne doit jamais enfreindre, les patterns architecturaux a suivre, et les conventions du projet.
Concretement, il contient 14 patterns documentes (P1 a P14) qui couvrent tout : du service layer obligatoire jusqu'au comportement specifique du canvas React Flow. C'est pas un fichier qu'on ecrit une fois et qu'on oublie — il evolue avec le projet. La version actuelle est la 4.2.
L'idee cle : plus le CLAUDE.md est precis, moins tu passes de temps a corriger l'IA. Un pattern bien documente, c'est des dizaines de corrections evitees par session.
693 sessions sans perdre le contexte
Le plus gros defi du dev avec IA, c'est la continuite. Une session de conversation a un contexte limite. Comment maintenir la coherence sur 693 sessions ?
Ma solution repose sur trois fichiers :
- STATUS.md — l'etat vivant du projet, mis a jour a chaque session
- LAST_SESSION.md — le contexte exact de la derniere session pour un handoff propre
- CLAUDE.md — les regles permanentes du projet
Chaque session commence par une commande /open-session qui charge tout le contexte necessaire, et se termine par /close-session qui archive et met a jour l'etat. Sur 693 sessions, je n'ai eu zero perte de contexte. L'IA reprend exactement ou elle s'etait arretee.
L'architecture Schema-First
La decision architecturale la plus structurante d'Avistra : tout part du schema de base de donnees.
Le pipeline est simple :
- Schema Supabase (PostgreSQL) = source de verite
- Contrats Zod generes depuis le schema pour la validation
- Types TypeScript auto-generes pour le typage
Ce pattern garantit que la base, la validation, et le typage sont toujours synchronises. Quand tu modifies le schema, tout le reste suit. Ca elimine une categorie entiere de bugs : les desynchronisations entre couches.
Le Service Layer : la regle la plus stricte
Regle dure numero un : aucun appel direct a Supabase depuis un composant. Tout passe par 43 services specialises dans lib/services/.
Pourquoi ? Trois raisons :
- Testabilite — injection du client Supabase = tests unitaires sans base
- Coherence — chaque operation passe par le meme pipeline (validation, logging, error handling)
- Refactoring — changer la couche data ne touche pas les composants
Apres 1 824 commits, le taux de conformite est de 100%. Pas un seul supabase.from() dans un composant.
91 scripts d'automatisation
Un projet de cette taille genere une quantite enorme de taches repetitives. Ma reponse : 91 scripts d'automatisation — 51 scripts NPM et 40 utilitaires TypeScript.
Les plus impactants :
- Quality gates pre-push — 4 validations automatiques (lint, types, architecture, securite)
- RAG codebase — 11 656 chunks indexes pour la recherche semantique dans le code
- 10 agents specialises pour des taches comme la revue de code ou l'audit de qualite
- 9 slash commands pour les operations courantes (
/run-cyclepour le TDD, etc.)
Chaque script economise quelques minutes. Multiplies par 693 sessions, l'investissement se rembourse des dizaines de fois.
Les moments ou ca a casse
Tout n'a pas ete un long fleuve tranquille. Quelques moments marquants :
Le bug Firefox du clic droit (sessions 527-528) : le menu contextuel ne fonctionnait pas dans Firefox. Ca a necessite un listener en capture-phase avec detection de coordonnees — un pattern (P13) maintenant documente dans le CLAUDE.md pour ne plus jamais tomber dessus.
La simplification du pipeline de sauvegarde canvas (session 541) : 12 couches de transformation reduites a 5. Resultat : -3 510 lignes de code et 60% de complexite en moins. Parfois, le meilleur code qu'on ecrit, c'est celui qu'on supprime.
Le spike disque de 102 Go (session 536) : le cache WSL2 avait explose. Rien a voir avec le code, tout a voir avec l'infrastructure. 24 Go recuperes en configurant correctement .wslconfig. Lecon : l'hygiene infra impacte directement la velocite de dev.
Ce que j'ai appris
Apres 5 mois et demi avec Claude Code comme copilote quotidien, voici mes convictions :
- L'IA amplifie ta rigueur — si tu as des regles claires, l'IA les suit. Si tu n'en as pas, l'IA improvise. Et l'improvisation a l'echelle de 1 800 commits, ca cree du chaos.
- La documentation est du code — le CLAUDE.md n'est pas de la doc decorative. C'est un fichier de configuration pour ton copilote. Chaque ligne impacte le code produit.
- L'automatisation est un investissement — 91 scripts, ca parait beaucoup. Mais chacun a ete cree a un moment precis ou la repetition devenait un frein. Le ROI est immediat.
- Le dev solo n'est plus "solo" — avec les bons outils, un dev seul peut maintenir une codebase de production avec 5 742 tests et zero dette technique structurelle. Le bottleneck n'est plus la capacite de production — c'est la vision produit.
Avistra est en production sur avistra.fr, version v1.9.146. Le projet continue d'evoluer, session apres session. Et le CLAUDE.md est deja a la version 4.3 — avec probablement la 5.0 qui arrivera bientot.