Darkwood Blog Blog
  • Articles
fr
  • de
  • en
Connexion
  • Blog
  • Articles

💡 J’ai créé une app IA RGPD en 1h avec Symfony

le 2 avril 2026

Aujourd’hui, beaucoup de dĂ©veloppeurs utilisent l’IA pour gĂ©nĂ©rer du code.

La question que l'on traite ici est la suivante :

👉 Comment transformer une idĂ©e en systĂšme exĂ©cutable ?

Et c’est normal.

Parce qu’on a appris à :

  • coder des features
  • Ă©crire des fonctions
  • brancher des API

Mais pas Ă  :

structurer une idĂ©e pour qu’elle puisse ĂȘtre exĂ©cutĂ©e

Chez Darkwood, on ne commence jamais par le code.

On commence par une étape beaucoup plus fondamentale :

👉 le raisonnement

Dans cet article, on va voir concrĂštement :

  1. Comment transformer une idée en unité exploitable
  2. Comment utiliser l’IA pour exĂ©cuter cette idĂ©e
  3. Comment appliquer ça dans un vrai projet : SketchUp Shape

🧠 1. Une idĂ©e n’est pas du code

Quand tu penses :

“CrĂ©er une application”

ton rĂ©flexe de dev, c’est souvent :

“ok, je vais coder une API, une base de donnĂ©es, etc.”

👉 Mauvais point de dĂ©part.

Une idĂ©e, ce n’est pas encore quelque chose que tu peux exĂ©cuter.

C’est juste :

👉 une intention floue

💡 Le bon modùle mental

Chez Darkwood, on considĂšre que :

👉 une idĂ©e = une tĂąche

Pas plus, pas moins.

Exemple

“CrĂ©er une application”

devient :

Task: create_app

Ça peut paraütre trivial.

Mais c’est un changement important :

👉 Tu ne penses plus en “projet” 👉 Tu penses en unitĂ©s exĂ©cutables

⚙ Pourquoi cette mĂ©thode fonctionne : Church, Turing, et l’idĂ©e comme unitĂ© exĂ©cutable

On pourrait croire que “prompter une IA” est un sujet rĂ©cent, presque purement pratique, liĂ© Ă  l’actualitĂ© des LLM.

En réalité, le problÚme est beaucoup plus ancien.

Quand un dĂ©veloppeur prend une idĂ©e et cherche Ă  la transformer en systĂšme exĂ©cutable, il se heurte toujours Ă  la mĂȘme question :

comment passer d’une intention abstraite Ă  une forme que la machine peut rĂ©ellement traiter ?

C’est exactement le type de question qui se trouve Ă  la racine de l’informatique thĂ©orique.

Dans un précédent article Darkwood - Create a Lambda Interpreter in PHP - nous avions déjà exploré cette frontiÚre entre :

  • l’idĂ©e d’un calcul
  • et son exĂ©cution rĂ©elle par une machine

Cet article partait du λ-calcul d’Alonzo Church, puis le reliait Ă  la machine de Turing, en rappelant un point fondamental :

le λ-calcul et la machine de Turing sont deux modÚles équivalents du calcul

Autrement dit :

  • Church donne un modĂšle conceptuel
  • Turing donne un modĂšle d’exĂ©cution

Et c’est exactement ce qui nous intĂ©resse ici.

🧠 Church : avant l’exĂ©cution, il faut une forme pensable

Alonzo Church ne part pas d’une machine. Il part d’un problùme beaucoup plus profond :

qu’est-ce qu’une fonction ?

et plus largement :

qu’est-ce qu’un calcul ?

Le λ-calcul répond à cela avec une idée radicale :

tout calcul peut ĂȘtre exprimĂ© comme abstraction et application de fonctions

Dans ce modĂšle :

  • une fonction est une transformation
  • une valeur peut ĂȘtre transmise Ă  une autre fonction
  • et l’évaluation consiste Ă  appliquer des fonctions les unes aux autres

C’est la racine thĂ©orique de beaucoup de choses que nous utilisons aujourd’hui sans y penser :

  • la programmation fonctionnelle
  • le currying
  • les closures
  • les combinators
  • les transformations pures
  • les DSL

Dans l’article sur l’interprĂ©teur lambda en PHP, cette idĂ©e Ă©tait prĂ©sentĂ©e de maniĂšre trĂšs concrĂšte : on partait d’une expression, on la tokenisait, on la parsait, on construisait un AST, puis on l’évaluait.

Autrement dit :

avant qu’un systĂšme exĂ©cute quelque chose, il faut d’abord qu’il comprenne une forme

C’est exactement le point qui nous intĂ©resse pour l’IA.

Quand tu donnes Ă  un LLM une phrase comme :

Create a house

tu ne lui donnes pas encore une exécution. Tu lui donnes une forme abstraite, une intention, une demande encore insuffisamment structurée.

Et c’est là que l’intuition de Church devient utile pour nous.

Traduction développeur

Quand on parle d’idĂ©e dans cet article, on ne parle pas d’inspiration vague ou de brainstorming.

On parle dĂ©jĂ  d’une abstraction manipulable.

Autrement dit :

une idée doit devenir une unité sur laquelle un systÚme peut raisonner

C’est pour cela que, chez Darkwood, nous faisons un premier dĂ©placement mental :

une idĂ©e n’est pas encore du code

une idée est déjà une transformation en attente

Ou, dit autrement :

une idée est une tùche potentielle

⚙ Turing : une fois la forme posĂ©e, il faut l’exĂ©cuter

Church formalise le calcul du cĂŽtĂ© de l’abstraction. Turing, lui, rĂ©pond Ă  une autre question :

à quoi ressemble une machine capable de réaliser ce calcul ?

Sa réponse est célÚbre :

  • une bande mĂ©moire
  • une tĂȘte de lecture
  • un Ă©tat courant
  • des rĂšgles de transition

La puissance du modÚle ne vient pas de sa complexité, mais au contraire de sa simplicité.

Une machine de Turing lit une case, tient compte de son état, applique une rÚgle, écrit éventuellement quelque chose, puis avance.

C’est un modĂšle extrĂȘmement simple, mais suffisant pour raisonner sur ce qu’une machine peut faire.

Ce qui nous intĂ©resse ici, ce n’est pas d’enseigner toute la thĂ©orie des automates. C’est de rĂ©cupĂ©rer une intuition trĂšs concrĂšte :

un systĂšme exĂ©cutable a besoin d’unitĂ©s lisibles

et d’un mĂ©canisme clair pour passer d’un Ă©tat Ă  l’autre

C’est lĂ  que le lien avec le travail moderne sur les idĂ©es, les tĂąches, et les agents IA devient trĂšs concret.

🔁 Ce que Church et Turing nous apprennent pour travailler avec une IA

Le point essentiel, c’est le suivant :

  • Church nous apprend Ă  penser le calcul comme transformation
  • Turing nous apprend Ă  penser le calcul comme exĂ©cution structurĂ©e

Quand on assemble les deux, on obtient une maniùre beaucoup plus saine de travailler avec l’IA.

On cesse de penser :

“je vais demander du code au modùle”

Et on commence Ă  penser :

“je vais lui donner une unitĂ© de travail structurĂ©e, qu’il pourra transformer, puis qu’un autre systĂšme pourra exĂ©cuter”

C’est exactement ce que nous faisons chez Darkwood.

đŸ§© Traduction Darkwood : une idĂ©e devient une tĂąche

À ce stade, on peut simplifier le modùle sans le trahir.

Voici la traduction qui nous sert de base :

| Concept thĂ©orique | InterprĂ©tation Darkwood | | ----------------- | ---------------------------- | | Abstraction | IdĂ©e structurĂ©e | | Fonction | Transformation | | Case mĂ©moire | TĂąche | | Bande | Liste / pile de tĂąches | | Lecture | ExĂ©cution | | Transition | Passage d’un Ă©tat Ă  un autre |

Cela nous donne une rĂšgle simple :

une idée devient une tùche

une tùche devient une unité lisible

une unitĂ© lisible peut ĂȘtre exĂ©cutĂ©e

C’est ce changement de perspective qui compte.

Parce que tant qu’une idĂ©e reste seulement dans ta tĂȘte, elle est inutilisable par le systĂšme :

  • ni ton terminal
  • ni ton IDE
  • ni ton LLM
  • ni ton orchestrateur

ne peuvent travailler dessus correctement.

Il faut donc lui donner une forme.

💡 L’idĂ©e comme unitĂ© de calcul

C’est ici que notre mĂ©thode prend tout son sens.

Quand on dit :

Créer une application

ce n’est pas encore un systùme. Ce n’est pas encore une architecture. Ce n’est pas encore un prompt exploitable.

Mais ce n’est pas non plus “rien”.

C’est dĂ©jĂ  :

une unité de calcul à expliciter

Chez Darkwood, nous la faisons passer par une étape de nomination et de réduction.

Par exemple :

Task: create_app

ou

Task: generate_sketchup_shape

À partir de là, la machine - ou le systùme d’agents - ne manipule plus seulement une phrase humaine. Elle manipule une tñche identifiable.

Et Ă  partir du moment oĂč tu peux identifier une tĂąche, tu peux :

  • la stocker
  • la relire
  • la reproduire
  • la transmettre
  • la dĂ©couper
  • la parallĂ©liser
  • l’orchestrer

C’est cela, le vrai changement.

🧠 Pourquoi c’est si utile pour un dĂ©veloppeur

Un dĂ©veloppeur a souvent tendance Ă  sauter directement Ă  l’implĂ©mentation :

  • crĂ©er un dossier
  • installer Symfony
  • brancher une API
  • Ă©crire une commande

Mais si l’idĂ©e initiale n’a pas Ă©tĂ© correctement modĂ©lisĂ©e, tout le reste devient instable.

On obtient alors ce que beaucoup vivent avec les LLM aujourd’hui :

  • des prompts flous
  • des sorties floues
  • des structures fragiles
  • des projets qui “marchent”, mais sans cohĂ©rence

La théorie de Church et Turing nous rappelle quelque chose de trÚs simple :

la qualitĂ© de l’exĂ©cution dĂ©pend de la qualitĂ© de la reprĂ©sentation initiale

Autrement dit :

si tu veux mieux prompter une IA, il faut d’abord mieux reprĂ©senter ton idĂ©e

Et c’est prĂ©cisĂ©ment ce que nous allons faire dans la suite avec SketchUp Shape :

  • partir d’une intention
  • la convertir en tĂąche
  • la structurer
  • la transformer en design
  • puis seulement en code

🧭 La rùgle à retenir

S’il fallait condenser toute cette section en une seule phrase, ce serait celle-ci :

une idĂ©e utile pour l’IA n’est pas une inspiration

c’est une abstraction suffisamment claire pour devenir une tĂąche exĂ©cutable

Et c’est lĂ  que Church et Turing cessent d’ĂȘtre de la thĂ©orie lointaine.

Ils deviennent un modÚle pratique pour le développeur moderne :

  • Church t’aide Ă  penser la forme
  • Turing t’aide Ă  penser l’exĂ©cution
  • Darkwood t’aide Ă  relier les deux

📚 Exemple concret

Tu as plusieurs idées :

- créer une app
- construire une API
- générer un modÚle 3D

👉 Tu peux les reprĂ©senter comme une stack :

Stack:
- create_app
- build_api
- generate_model

Et lĂ , tout devient plus simple :

tu peux traiter chaque tĂąche une par une

ou

en parallĂšle

⚡ 2. Ton cerveau fonctionne dĂ©jĂ  comme ça

Tu n’as pas besoin d’apprendre un nouveau systùme.

👉 Tu l’utilises dĂ©jĂ .

🧠 Cas simple : tĂąches diffĂ©rentes

Task A: répondre à un message
Task B: installer un package

👉 Aucun lien 👉 Tu peux passer de l’un à l’autre facilement

⚠ Cas compliquĂ© : tĂąches similaires

Task A: coder une API
Task B: refactor la mĂȘme API

👉 Là, ça devient dur

Pourquoi ?

  • mĂȘme contexte
  • mĂȘme variables mentales
  • mĂȘmes fichiers

👉 RĂ©sultat :

  • confusion
  • erreurs
  • fatigue

đŸ’„ Ce que ça implique

Ton cerveau :

  • a une mĂ©moire limitĂ©e
  • gĂšre mal trop de contexte
  • sature vite

👉 Donc :

tu ne peux pas gĂ©rer beaucoup de tĂąches complexes en mĂȘme temps

đŸ§© 3. Le vrai problĂšme : la reproductibilitĂ©

Une tñche n’a de valeur que si tu peux :

  • la retrouver
  • la relancer
  • la partager

👉 Sinon, elle reste dans ta tĂȘte 👉 et elle disparaĂźt

🧠 Approche Darkwood

On introduit une idée simple :

👉 une tñche = un pointeur

ConcrĂštement

  • tu Ă©cris ta tĂąche dans Joplin
  • elle a un ID
  • cet ID devient ton “pointeur”

Et ensuite :

  • dans ton terminal → tu fais rĂ©fĂ©rence Ă  cette tĂąche
  • dans ton IDE → pareil
  • dans ton IA → pareil

👉 RĂ©sultat :

tu manipules le mĂȘme objet, partout

💡 Ce que ça change

Tu ne dis plus :

“je vais bosser sur mon idĂ©e”

Tu dis :

“je vais exĂ©cuter cette tĂąche”

Et ça, c’est beaucoup plus puissant.

⚙ 4. L’IA : pas un outil magique, un systĂšme d’exĂ©cution

Aujourd’hui, beaucoup de devs utilisent l’IA comme ça :

  • “gĂ©nĂšre-moi une fonction”
  • â€œĂ©cris-moi une classe”
  • “corrige ce bug”

👉 Ça marche.

Mais tu restes dans une logique :

réactive

🧠 Approche Darkwood

On change complĂštement la perspective :

👉 l’IA devient un systĂšme d’exĂ©cution

🏗 On modĂ©lise comme une entreprise

Plutît que des “agents magiques”, on utilise une structure simple :

đŸ‘€ Toi (humain)

  • tu dĂ©finis l’intention
  • tu poses le problĂšme

🧠 Architecte IA

  • il comprend ton intention
  • il dĂ©coupe en tĂąches
  • il dĂ©cide comment organiser le systĂšme

⚙ Agents

  • ils exĂ©cutent
  • ils produisent du code
  • ils transforment les donnĂ©es

💡 RĂšgle clĂ©

👉 Le prompt = ton intention

Si ton prompt est flou :

👉 le systùme est flou

Si ton prompt est structuré :

👉 le systĂšme devient structurĂ©

đŸ”„ Exemple

❌ Mauvais prompt :

“Generate a house”

✅ Bon prompt :

“Create a structured architectural design of a house,
with walls, roof, proportions and constraints,
then generate SketchUp Ruby code from it”

👉 Là, tu donnes :

  • une direction
  • une structure
  • un objectif clair

🧠 Ce que tu dois retenir

👉 Tu n’as pas besoin d’ĂȘtre meilleur en code

👉 Tu dois devenir meilleur en :

  • structuration
  • intention
  • orchestration

Et c’est exactement ce qu’on va appliquer maintenant avec :

👉 SketchUp Shape

🚀 5. Application concrùte : SketchUp Shape

Projet : 👉 https://github.com/matyo91/sketchup-shape

🎯 Objectif

Transformer :

“Create a house”

en :

👉 script Ruby exĂ©cutable dans SketchUp

đŸ§± Pourquoi SketchUp ?

  • outil de modĂ©lisation 3D
  • API Ruby documentĂ©e : → SketchUp Ruby API
  • extensible (plugins, scripts)

🎓 Contexte

J’ai personnellement appris SketchUp avec SĂ©bastien Maison (YouTube)

👉 Ici, l’objectif n’est pas d’utiliser leur IA :

→ IA SketchUp officielle

👉 Mais de construire notre propre systùme

Parfait - on va rendre cette partie plus concrĂšte, plus ancrĂ©e terrain, plus “dev”, tout en intĂ©grant :

  • SketchUp (contexte rĂ©el)
  • SĂ©bastien Maison (preuve sociale)
  • API Ruby (levier technique)
  • IA locale (diffĂ©renciation forte)

⚙ 6. Pipeline : de l’idĂ©e au modĂšle 3D (concret)

Avant d’aller plus loin, on va prendre un cas rĂ©el.

👉 Ici, on ne parle pas d’une API abstraite 👉 On parle de gĂ©nĂ©rer un objet 3D dans SketchUp

đŸ§± Petit contexte : pourquoi SketchUp ?

SketchUp est un outil de modélisation 3D trÚs utilisé :

  • architecture
  • design
  • prototypage

Personnellement, j’ai dĂ©couvert SketchUp grĂące Ă  SĂ©bastien Maison, avec qui j’ai suivi une formation.

👉 J’y ai modĂ©lisĂ© une maison “à la main”

Et c’est lĂ  que l’idĂ©e est venue :

👉 “Et si je pouvais gĂ©nĂ©rer ça directement avec du code ?”

⚠ Pourquoi ne pas utiliser l’IA native de SketchUp ?

SketchUp propose dĂ©jĂ  de l’IA :

👉 SketchUp AI

Mais ici, ce n’est pas le sujet.

👉 Nous sommes dĂ©veloppeurs.

👉 On veut :

  • comprendre
  • contrĂŽler
  • automatiser

Donc on passe par :

👉 l’API Ruby de SketchUp

🧠 L’entrĂ©e technique

Pour ça, SketchUp expose :

  • Documentation dĂ©veloppeur
  • API Ruby

👉 Concrùtement :

tu écris du Ruby comme ça :

model = Sketchup.active_model
entities = model.entities

Et tu construis :

  • des faces
  • des volumes
  • des groupes

đŸ§© Ressources utilisĂ©es

Pour rendre l’IA plus fiable, j’ai utilisĂ© :

  • Ruby API Stubs 👉 pour donner au LLM une vision claire des objets disponibles

  • Exemples officiels 👉 pour comprendre les patterns rĂ©els

Et si tu veux aller plus loin :

👉 Extensions SketchUp → tu peux packager ton code en plugin

⚠ PrĂ©requis important

Pour exécuter du Ruby :

👉 tu dois utiliser la version desktop :

SketchUp Pro Trial

👉 La version web ne permet pas ça (ou trĂšs limitĂ©)

🔁 Pipeline Darkwood (appliquĂ©)

Maintenant qu’on a le contexte, voici le pipeline rĂ©el :

Intention
   ↓
Design (LLM #1)
   ↓
Code (LLM #2)
   ↓
SketchUp

🧠 Étape 1 : intention

Tu pars d’une idĂ©e simple :

bin/console app:generate-shape "Create a house"

👉 Rien de plus.

đŸ§± Étape 2 : design (LLM #1)

Ici, l’IA ne code pas.

👉 Elle rĂ©flĂ©chit

Elle agit comme un architecte :

{
  "type": "house",
  "structure": {
    "walls": {...},
    "roof": {...}
  }
}

👉 Elle dĂ©cide :

  • des proportions
  • des Ă©lĂ©ments
  • de la structure

⚙ Étape 3 : code (LLM #2)

Ensuite seulement :

👉 une deuxiùme IA transforme ce plan en code

model.start_operation('House', true)
...
model.commit_operation

👉 Elle agit comme un dĂ©veloppeur :

  • elle utilise l’API SketchUp
  • elle construit la gĂ©omĂ©trie

⚠ 7. Pourquoi 2 LLM (et pas 1)

C’est une des parties les plus importantes.

❌ Approche naïve

idĂ©e → code

👉 Ce que tu obtiens :

  • incohĂ©rent
  • imprĂ©visible
  • difficile Ă  corriger

✅ Approche Darkwood

idĂ©e → design → code

👉 Tu sĂ©pares :

  • 🧠 le quoi
  • ⚙ le comment

💡 C’est exactement comme dans une Ă©quipe :

  • architecte → dĂ©cide
  • dĂ©veloppeur → implĂ©mente

🧠 8. Le problĂšme rĂ©el rencontrĂ©

Quand j’ai lancĂ© :

Create a house

👉 RĂ©sultat :

  • techniquement valide
  • mais visuellement
 faux

👉 Ce n’était pas une maison

❌ Pourquoi ?

Parce que l’IA a fait ça :

“une maison = des formes”

👉 Elle a empilĂ© :

  • des cubes
  • un toit
  • sans logique

đŸ’„ Le vrai problĂšme

L’IA ne comprend pas :

  • la gravitĂ©
  • les proportions
  • l’usage rĂ©el

👉 Elle ne comprend pas :

ce qu’est une maison

🧠 Correction apportĂ©e

On a introduit une couche :

👉 design structurĂ©

Au lieu de :

{ "parts": [...] }

On force :

{
  "type": "house",
  "foundation": {...},
  "walls": {...},
  "roof": {...},
  "constraints": {
    "symmetry": true,
    "alignment": "centered"
  }
}

👉 RĂ©sultat :

  • cohĂ©rence
  • stabilitĂ©
  • rendu crĂ©dible

⚙ 10. Stack technique

đŸ§± Backend

  • Symfony 8
  • Symfony AI
  • darkwood/navi

👉 installation :

composer require darkwood/navi

🧠 IA locale (RGPD)

  • Mistral 3
  • Ollama

👉 tout tourne en local

⚖ Pourquoi c’est important

  • pas d’API externe
  • pas de fuite de donnĂ©es
  • contrĂŽle total

👉 tu construis un systùme :

RGPD compliant by design

⚙ 11. Commandes

🧠 LLM local

ollama pull ministral-3:8b
ollama serve

⚙ GĂ©nĂ©ration

bin/console app:generate-shape "Create a house"

Options utiles

-o house.rb        # sauvegarde du script
--spec design.json # sauvegarde du design
-v                 # debug complet

🧠 12. Ce que tu dois vraiment retenir

❌ Ce n’est pas :

  • “comment utiliser une IA”

✅ C’est :

👉 comment structurer une idĂ©e pour qu’une IA puisse l’exĂ©cuter

🔁 Modùle final

idée
 → tñche
 → design
 → code
 → exĂ©cution

🚀 Conclusion

Le futur du dĂ©veloppement n’est pas :

écrire plus de code

Mais :

structurer des idées et orchestrer leur exécution

👉 Chez Darkwood :

on ne cherche pas Ă  aller plus vite

on cherche Ă  ĂȘtre plus juste

Site

  • Plan du Site
  • Contact
  • Mentions lĂ©gales

Network

  • Hello
  • Blog
  • Apps
  • Photos

Social

Darkwood 2026, tous droits réservés