
—
—
En attente de la réponse
Technologie dès la conception
Un outil vaut ce qu’il fait sur la page. Sur notre nouveau système, chacun des nôtres gagne sa place par une tâche : React qui compose les pages d’avance sur notre serveur, TypeScript qui vérifie chaque pièce avant sa mise en ligne, three.js qui dessine sur la puce graphique de votre appareil, WordPress là où votre équipe écrit. Cette page les montre à l’œuvre, lit en direct ce qui tourne ici et dit clairement ce qui relève des projets clients.
Les lectures sont prises en direct sur cette page, dans votre navigateur, et ne sont envoyées nulle part. Les schémas sont illustratifs là où c’est indiqué.
01 · Les outils
Nos vingt-quatre outils, chacun là où il travaille vraiment : sur cette page, lu en direct sous vos yeux ; ailleurs sur ce site ; ou dans les projets clients. Ouvrez une tuile pour voir son rôle.
01 · Où il travaille
02 · L’outil choisi
Vérifie que chaque pièce du code s’emboîte avec les autres, avant toute mise en ligne.
Comment on le sait : déclaré A vérifié cette page avant sa mise en ligne · rien n’en est parvenu jusqu’à vous.
Où le voirLe code, plus bas
TypeScript. Pour cette page. Vérifie que chaque pièce du code s’emboîte avec les autres, avant toute mise en ligne. A vérifié cette page avant sa mise en ligne · rien n’en est parvenu jusqu’à vous.
| Outil | Où il travaille | Preuve | Comment on le sait |
|---|---|---|---|
| TypeScript | Pour cette page | A vérifié cette page avant sa mise en ligne · rien n’en est parvenu jusqu’à vous. | déclaré |
| JavaScript | Pour cette page | Lecture de la page… | lu |
| HTML | Pour cette page | Lecture de la page… | lu |
| CSS | Pour cette page | Lecture de la page… | lu |
| PHP | Projets clients | Nos propres extensions WordPress sont écrites en PHP · dans les projets clients. | décrit |
| Node.js | Pour cette page | A construit le HTML de cette page avant votre visite. | déclaré |
| React | Pour cette page | React 19.3.0-canary-3f0b9e61-20260317 · du HTML venu de notre serveur, réveillé dans votre navigateur. | lu |
| Vue.js | Projets clients | Le même rôle que React, pour les équipes qui l’utilisent · dans les projets clients. | décrit |
| WordPress | Projets clients | Là où les équipes de nos clients écrivent · dans les projets clients. | décrit |
| MariaDB | Projets clients | Là où WordPress garde ce que les équipes écrivent · dans les projets clients. | décrit |
| PostgreSQL | Ailleurs sur ce site | Garde les messages de ce site, écrits par un rôle qui ne peut pas les lire · votre navigateur ne s’y connecte jamais. | déclaré |
| MongoDB | Projets clients | Pour des dossiers qui changent de forme · dans les projets clients. | décrit |
| REST API | Ailleurs sur ce site | Les formulaires de ce site répondent par elle, sur notre serveur. | déclaré |
| GraphQL | Projets clients | Demande exactement les champs qu’un écran affiche · dans les projets clients. | décrit |
| WebSockets | Projets clients | Une ligne ouverte, pour les mises à jour en direct · dans les projets clients. | décrit |
| GSAP | Pour cette page | Endormi : 0 ko jusqu’à l’approche de la section 3D et mouvement. | lu |
| Three.js | Pour cette page | Endormi : 0 ko jusqu’à l’approche de la section 3D et mouvement. | lu |
| WebGL | Pour cette page | Question posée à votre navigateur… | lu |
| Babylon.js | Projets clients | Pour des scènes 3D complètes · dans les projets clients, pas chargé ici. | décrit |
| MapLibre | Ailleurs sur ce site | Lecture de la page… | lu |
| AWS | Pour cette page | Lecture de la page… | lu |
| Turnstile | Ailleurs sur ce site | Lecture de la page… | lu |
| Umami | Pour cette page | Lecture de la page… | lu |
| Stripe | Projets clients | Dans les boutiques que nous bâtissons. | décrit |
Lu dans votre navigateur, maintenant, et envoyé nulle part. Les projets clients sont décrits, pas exécutés ici.
02 · La page
Chaque page est assemblée d’avance par React sur notre serveur : vous recevez du HTML et du CSS finis, puis le JavaScript réveille ce qu’on peut toucher. Voici une page de ce site, scripts coupés.
GET/fr/expertise/technologie · scripts : aucun
Mots prêts—motslisibles sans script
Boutons en attente—boutonsattendent le script pour répondre
Une page de ce site, sur le point d’être ouverte avec ses scripts coupés.
Une vraie page de ce site, ouverte dans votre navigateur avec ses scripts coupés. Comptée à partir de son propre balisage.
Votre navigateur demande la page à ce site, une seule fois, comme pour n’importe quelle page. Ses scripts en sont retirés, et elle s’ouvre dans un cadre que votre navigateur isole, sans permission d’en exécuter aucun. Le cadre a la taille d’une fenêtre d’ordinateur ou de téléphone. Deux choses y changent. Un film de ce site reçoit sa source du script : dans le cadre, il reste une boîte vide à sa taille. Une image que la page demande de charger plus tard attend que le cadre en approche, comme votre navigateur l’attendrait avec ses scripts ; sans eux, il chargerait toutes les images d’un coup.
Les mots sont le texte visible de la région principale de la page. Les titres sont ses intertitres. Un vrai lien porte une adresse qui n’est ni vide, ni « # », ni un script. Une image a son texte quand elle porte un attribut alt. Chaque bouton compte comme en attente : sans script, aucun ne répond. Chaque film aussi.
Le premier octet et le poids du HTML viennent du relevé Resource Timing que votre navigateur tient de cette demande : le moment où son premier octet est arrivé, et ce que pesait le HTML en transit, compressé.
Sur cette page, les mots du cadre sont comparés à ceux de la page que vous lisez, scripts actifs : le plus petit des deux sur celui de la page en direct.
Les étiquettes sont dessinées par cette page, sur des boîtes mesurées une seule fois dans le cadre, avant tout mouvement. Parcourir la page déplace la page encadrée d’un bloc, sans rien y changer ; ses propres animations sont mises en pause à la fin de l’histoire.
Une demande de plus pour le HTML de la page, faite à votre approche de cette section ou au choix d’une page, puis ses feuilles de style, ses polices et les images proches de la partie que le cadre montre. La page n’y exécute aucun script, et ne compte donc aucune visite.
| Lecture | Valeur |
|---|---|
| Mots de la région principale | — |
| Titres | — |
| Vrais liens | — |
| Images avec texte de remplacement | — |
| Boutons en attente du script | — |
| Instruments dessinés sur le serveur | — |
| Films en attente du script | — |
| Points affichés dans l’en-tête | — |
| Lune de l’en-tête | — |
| Scripts retirés | — |
| Premier octet | — |
| HTML en transit | — |
| HTML décompressé | — |
| Fenêtre du cadre | 1440 × 760 |
03 · Le code
Ce site est écrit en TypeScript ; sa construction s’arrête si les types ne concordent pas. Une somme fausse leur échappe : nos tests exécutent donc le code, taxes du Québec et français compris.
01 · Un changement
02 · Les portes
Choisissez un changement et faites-le passer.
03 · Ce qu’elles ont dit
En attente d’un changement.
Les tests et la règle du français tournent dans votre navigateur, sur le code de taxes de ce site et le français de cette page. Types : notre construction, mesurée le 18 octobre 2026.
04 · Le trajet des données
Chez la plupart de nos clients, les mots vivent dans WordPress, gardés dans MariaDB. Un site les demande par REST ou GraphQL, ou garde un WebSocket ouvert. Suivez une entrée, puis modifiez-la.
Une entrée de démonstration, suivie en quatre étapes : écrite dans WordPress, gardée par une base de données, transmise au site, affichée en carte.
Votre équipe écrit l’entrée dans WordPress.
register_post_meta( 'event', 'seats_left', [
'type' => 'integer',
'single' => true,
'show_in_rest' => [
'schema' => [ 'minimum' => 0 ],
],
] );Rien n’est encore publié
En attente de la publication
Les tables de WordPress : une ligne pour l’entrée, puis une ligne par champ.
En attente de l’entrée
—

—
—
En attente de la réponse
La carte, écrite pour React
function EventCard({ e }) {
return <article className="event">
<img src={e.cover} alt="" />
<h3>{e.title}</h3>
<time>{day(e.date)}</time>
<Seats left={e.seatsLeft} />
</article>;
}React dessine la carte ci-dessus à partir de l’entrée, en direct.
Les noms des tables de WordPress, sa route REST et la réponse de chaque système à −1 sont réels ; l’entrée, le schéma GraphQL et le canal sont dessinés. Les tailles sont comptées dans votre navigateur, à partir du texte affiché.
05 · 3D et mouvement
Three.js parle WebGL à la puce graphique de votre appareil ; GSAP règle ses mouvements comme une partition. La gemme est calculée sous vos yeux. Faites-la tourner et lisez ce qu’elle coûte.
L’entrée, en partition
jusqu’au rythme de votre écran
Chargé quand vous arrivez à moins d’un écran
three.js · GSAP
Pas chargé ici : Babylon.js, la trousse de moteur de jeu que nous utilisons pour les mondes 3D complets.
Dessiné en direct par votre appareil et compté par son moteur de rendu ; le nom de votre puce est lu ici et n’est envoyé nulle part.
Les triangles et les appels de dessin sont les compteurs du moteur de rendu de three.js, remis à zéro à chaque image. En mode partagé, les deux moitiés sont deux passes sur la même scène dans une seule image, et les deux sont comptées.
La durée d’une image est l’écart entre deux images d’animation de votre navigateur, en moyenne sur les soixante dernières, et mesurée pendant que quelque chose bouge : le dessin s’arrête une seconde après le retour au calme. Le nombre d’images par seconde ne peut dépasser celui de votre écran.
Son nom vient des renseignements de rendu de WebGL, là où votre navigateur les donne ; certains le gardent privé exprès. Il est affiché ici et n’est envoyé nulle part.
three.js et GSAP arrivent par un import dynamique quand cette section approche à moins d’un écran, pas avec la page. Leur poids est la somme des scripts que la mesure des ressources de votre navigateur (Resource Timing) enregistre pendant cet import, ou « depuis le cache » quand aucun octet n’a traversé le réseau.
Elle est tracée à partir des animations de la ligne du temps GSAP elle-même : où chacune commence, combien de temps elle dure, et sa courbe. Une cadence reconstruit la ligne du temps avec sa courbe ; Mécanique, c’est la même entrée sans aucune courbe.
Elle est générée d’une recette à graine fixe, la même à chaque visite ; rien n’est précalculé ni joué d’une vidéo. Les éclats forment un seul maillage instancié : un appel de dessin, peu importe leur nombre.
three.js dessine aussi les optiques d’images de la Serre des images de la page Design.
Le choix
Nous choisissons parmi ces vingt-quatre outils selon ce qu’un site doit accomplir : WordPress là où votre équipe écrit déjà, une base de données taillée pour vos dossiers, la 3D là où elle raconte votre histoire, un service de paiement là où vous vendez. Ce dont un projet n’a pas besoin reste hors de ses pages.
Ce que montre cette page, c’est notre nouveau système, notre façon de bâtir aujourd’hui. Les sites livrés avant lui ne l’incluent pas forcément.
Dites-nous ce que votre site doit accomplir. Nous vous dirons avec quoi nous le bâtirions, et pourquoi.