Florian Etourneau — charte graphiqueLa charte en une pageCouleurs & tokensTypographie & fondationsPictogrammesIllustrationsPremiers composantsComposants du siteSur le web — avatarsSur le web — icônesLe siteScénario d’animationLa nuéeL’oiseau articulé
La charte en une page
00 — Synthèse
Logo
Florian Etourneau
Lead développeur & conception produit chez MaxDS
Florian Etourneau
Florian Etourneau
Protection & tailles
Zone de protection : un quart de la hauteur du logo, tout autour.
Tailles minimales : logo complet 24 px de haut ; en dessous, la tête seule (favicon).
À éviter
Déformer
Changer la couleur
Ombre, dégradé
Redessiner au trait
Couleurs — proportions d’usage
Sable#FBF6EFfond
Encre#1C1426texte
Améthyste#5B2A9Eaction
Nuit#2A1245sombre
Iris#C8B3FAaction (sombre)
Terre#C8612Eballon
Typographie
Des interfaces évidentes.
Bricolage Grotesque — titres serrés en 800, texte courant en 400.
maintenant — JetBrains Mono pour les repères
Ton
Évident
Des phrases courtes, des mots simples. Si ça demande une explication, on reformule.
Concret
Des outils, du code, des résultats : on montre plutôt que d’affirmer.
Collectif
L’équipe avant le héros. Le « on » et le « nous » ont leur place.
Pictogrammes
Illustration
Le même oiseau, deux accessoires : le fil et le panier. Le ballon est le seul aplat terre cuite.
Motifs
La pointeLien
La pointe du bec pour ce qui avance (liens, étiquettes, puces). Le fil pour séparer et porter les illustrations.
Couleurs & tokens
20 — Charte, couleurs
Améthyste
primaire
50#F8F5FF
16.6:1
100#EFE9FE
15.1:1
200#DFD3FF
12.7:1
300#C8B3FA
9.6:1
400#AE92EA
6.9:1
500#9571DA
4.8:1
600#7D4FC8
5.5:1
700 ●#5B2A9E
9.3:1
800#492080
11.7:1
900#320F5E
15.4:1
950#1D023D
18.6:1
Sable
neutres
50#FBF6EF
16.6:1
100#F1ECE5
15.2:1
200#DFDAD3
12.8:1
300#C5C0B9
9.9:1
400#A9A49D
7.2:1
500#8D8882
5.1:1
600#726E68
5.1:1
700#59544F
7.5:1
800#413C37
10.9:1
900#2C2823
14.6:1
950#191511
18.2:1
Terre
accent · ballon
50#FFF4F0
16.5:1
100#FEE7DE
15.0:1
200#FFCFBA
12.6:1
300#EFB095
9.6:1
400#DC8F6C
7.0:1
500 ●#C8612E
4.4:1
600#B34A0B
5.4:1
700#942F00
7.9:1
800#6F1D00
11.3:1
900#500D00
15.0:1
950#320100
18.4:1
Reflet
info
50#E4FCFE
16.7:1
100#D7F3F5
15.3:1
200#BFE3E5
13.0:1
300#9CCBCF
10.1:1
400#75B1B5
7.4:1
500#4C979D
5.3:1
600 ●#1E7F86
4.7:1
700#00636A
7.0:1
800#00484E
10.3:1
900#003136
14.1:1
950#001C20
17.7:1
Succès
feedback
50#E8FDEE
16.7:1
100#DBF5E2
15.4:1
200#C4E4CD
13.0:1
300#A3CDB0
10.1:1
400#7EB38F
7.4:1
500#599A70
5.3:1
600#2F7D4F
5.0:1
700#0D6639
7.1:1
800#004A26
10.5:1
900#003316
14.1:1
950#001E08
17.7:1
Alerte
feedback
50#FEF5EB
16.5:1
100#FFE9D0
15.1:1
200#F3D5B4
12.7:1
300#DFBA8F
9.8:1
400#C99B64
7.1:1
500#B7791F
4.9:1
600#9D5E00
5.2:1
700#804500
7.6:1
800#5F2F00
11.1:1
900#431D00
14.8:1
950#2A0D00
18.2:1
Erreur
feedback
50#FEF4F2
16.5:1
100#FFE6E2
15.0:1
200#FFCDC5
12.6:1
300#FBA99B
9.6:1
400#E98475
6.8:1
500#D65F4F
4.8:1
600#C0392B
5.4:1
700#A00F06
8.2:1
800#790000
11.6:1
900#570000
14.9:1
950#380000
18.0:1
Token
Clair
Sombre
Usage
--fe-bg
fond de page
--fe-surface
cartes, champs
--fe-surface-2
zones en retrait
--fe-border
séparateurs, contours
--fe-text
texte — /
--fe-text-muted
secondaire — /
--fe-primary
actions, liens, focus
--fe-on-primary
texte sur primaire — /
--fe-accent
ponctuation, jamais en aplat large
--fe-info
messages d’information
--fe-logo-body
dos de l’oiseau
--fe-logo-wing
aile
--fe-logo-wing-far
aile lointaine (en vol)
--fe-logo-belly
ventre, reflet de l’œil
--fe-logo-beak
bec
--fe-legs
pattes
--fe-birds
la nuée (2 oiseaux sur 3)
--fe-birds-2
la nuée (1 oiseau sur 3)
Toutes les gammes sont calculées en OKLCH avec les mêmes paliers de clarté : le 600 de chaque couleur passe AA sur blanc, le 700 est le ton de marque (améthyste #5B2A9E). Les composants ne consomment que les tokens sémantiques de droite — le mode sombre ne change que leur valeur.
Palettes d’illustration
plumage · --fe-plumage-*
legs
#3A2F45
female
#6E5140
female-wing
#3F2D22
cream
#F4ECDF
speckle
#8A6E6A
eldest
#492080
middle
#6A45A8
La famille sur le fil, identique en clair et en sombre. Réservée aux oiseaux, jamais à l’interface.
afficheur · --fe-scoreboard-* · exception
bg
#1C1426
cell
#0C0712
led
#FF8A3D
led-alert
#FF4B3A
label
#B9ABC9
text
#F7F4EF
Le tableau Bodet est un objet réel : il garde ses couleurs de LED. C’est la seule exception à la palette, nulle part ailleurs.
Typographie & fondations
21 — Charte, fondations
Bricolage Grotesque + JetBrains Mono
échelle ×1,25 · base 16 · interligne 1,55 texte, 1,5 lead, 1,2 titres, 0,98 display · approche −0,045em (display) à −0,01em (h3)
display · 72/800
Florian Etourneau
h1 · 48/800
Des interfaces évidentes
h2 · 32/700
Le quotidien des équipes
h3 · 24/700
Architecture frontend
lead · 20/400
Des interfaces métier évidentes pour l’utilisateur.
body · 16/400
Développeur et lead technique depuis plus de dix ans.
small · 14/400
Publié le [date] · 6 min de lecture
mono · 14/500
ng add @etourneau/ui
Espacements · grille de 4
4
8
12
16
24
32
48
64
96
Rayons
sm · 6
md · 10
lg · 16
pill
Élévation
0 · à plat
1 · carte
2 · survol
3 · menu
Motif — la pointe
AngularDesign systemIAVoir le projet
Puce en pointe
Même angle que le bec
Le triangle du bec devient la signature de l’interface : étiquettes, flèches, puces. Rien d’autre ne pointe.
Pictogrammes
27 — Charte, pictos
Oiseau
Ballon
Panier
Tir
Sur le fil
Famille
Code
Design system
Monorepo
Outillage
IA
Au travail
Éditeur
MaxDS
CV
Terminal
Manette
Compétition
Contact
Rennes
Télécharger
Lien externe
Suivant
Parcours
Accueil
Clair
Sombre
Menu
Valider
Construction
Grille de 24 px, zone utile de 20 px, trait de 2 px, bouts et angles arrondis.
Un seul aplat de couleur par picto — la pointe du bec, en violet. Le ballon garde sa terre cuite.
L’oiseau, le fil et la famille reprennent le vrai logo : jamais redessinés au trait.
Couleur du trait = couleur du texte. Aucun dégradé, aucune ombre.
Exception : GitHub, LinkedIn et npm gardent leur logo officiel, en une seule couleur (celle du lien), à 18 px ou à la taille du texte qu’il précède, sans effet.
Tailles & fond sombre
16 px
20 px
24 px
32 px
Illustrations28 — Charte, illustrations

Le tir

Accueil — le mini-jeu : viser, doser, lâcher

Armé

Aile levée, ballon en main — avant le tir

Le tir, en sombre

Même fichier : les tokens du logo changent de valeur

En vol

Deux images du battement — l’envol, le retour au nid, le message envoyé

La famille sur le fil

Pied de page — Florian se pose à sa place, le cadet dribble six fois

Sur le cercle

Page 404 — air ball : le tir ne touche rien

Dribble

Chargement (ballon animé)

Règles

  • Toujours le même oiseau que le logo : seule la posture change.
  • Deux accessoires : le fil et le panier. Le ballon est le seul aplat terre cuite.
  • Les couleurs passent par les tokens (--fe-logo-*, --fe-plumage-*) : un seul fichier pour le clair et le sombre.
  • Sous 700 px, les scènes se recadrent : le tir sur l’oiseau et le panier, la famille sur le fil, pour garder des oiseaux lisibles.
Premiers composants
22 — Design system, composants
Clair
Champs
État focus
Adresse incomplète
Sélection · à venir
Étiquettes
AngularSignalsDesign systemIA
Onglets · à venir
Carte projet · à venir
[Visuel du projet]
AngularDesign system
[Nom du projet]
[Une phrase : le problème, ce que tu as construit, le résultat.]
Étude de cas
Message · à venir
i
Disponible à partir de [mois]. Missions de lead frontend ou de design system.
Sombre
Champs
État focus
Adresse incomplète
Sélection
Étiquettes
AngularSignalsDesign systemIA
Carte projet
[Visuel du projet]
AngularDesign system
[Nom du projet]
[Une phrase : le problème, ce que tu as construit, le résultat.]
Étude de cas
Message
i
Disponible à partir de [mois]. Missions de lead frontend ou de design system.
Mêmes composants, seuls les tokens changent. Focus visible en anneau iris, cibles de 44 px, contrastes AA partout. Les champs servent au formulaire de contact du site. Sélection, onglets, carte projet et message sont prêts pour la suite : le site ne les utilise pas encore. Les composants du site sont sur la planche suivante.
Composants du site23 — Design system, composants du site

Clair

Repère de section + légende — mono 14/500, terre et encre douce
parcours
Un oiseau posé = deux mois passés.
Étape du récit — type mono + picto, h3 32/700, lead 20, axes ou puces pointe, étiquettes

au travail · MaxDS

Lead dev & expert Angular · BPGO

Développeur au sein de l’équipe, on avance ensemble : je propose, j’outille, je transmets.

  • Produit Je challenge les spécifications avec les métiers.
  • DX Design system, plugins et générateurs Nx sur mesure.
  • IA Des agents qui suivent nos conventions.
ReactPocketBaseOpenAI
Ligne de parcours — années mono 14, poste 16, entreprise 16/800 ; la nuée s’y pose
  • 2022 — auj.Lead dev & expert AngularBPGO
  • 2020 — 2022Lead technique · Angular & JavaG2S
Contact — appel en lead, adresse 48/800, boutons Copier et Écrire un message (secondaires 44 px) ; copié : primaire + coche

Un besoin complexe, une équipe à outiller ? Écris-moi.

florian.etourneau@gmail.com
CopierCopiéÉcrire un message
États des boutons — survol à la souris seulement (pas au doigt) : bordure primaire, fond primaire doux, texte inchangé ; appui : 96 %, retour en dépassement (courte) ; focus clavier : contour 3 px focus, décalé de 3 ; le principal fonce au survol (primary-hover)
CopierreposCopiersurvolCopierappuyéCopierfocus clavierCopiécopié
EnvoyerprincipalEnvoyersurvolEnvoyerappuyéEnvoi…envoi en cours
Formulaire de contact — replié sous l’adresse, « Écrire un message » le déplie ; champs 44 px, libellé 14/700, texte 16 ; l’erreur s’affiche sous le champ (danger, 13) ; Envoyer en primaire
NomFlorianEmailflorian@Cette adresse email ne semble pas valide.MessageBonjour, …Envoyer
Liens et puces — la pointe du bec, 700 Retour au terrain
  • Chaque CV devient une page web ou un PDF prêt à envoyer.
Chez moi — picto lieu en terre, heure et météo en mono

11 h 16 · 14 °C au nord de Rennes, où je vis avec ma femme et nos trois enfants.

Sombre

Repère de section + légende — mono 14/500, terre et encre douce
parcours
Un oiseau posé = deux mois passés.
Étape du récit — type mono + picto, h3 32/700, lead 20, axes ou puces pointe, étiquettes

au travail · MaxDS

Lead dev & expert Angular · BPGO

Développeur au sein de l’équipe, on avance ensemble : je propose, j’outille, je transmets.

  • Produit Je challenge les spécifications avec les métiers.
  • DX Design system, plugins et générateurs Nx sur mesure.
  • IA Des agents qui suivent nos conventions.
ReactPocketBaseOpenAI
Ligne de parcours — années mono 14, poste 16, entreprise 16/800 ; la nuée s’y pose
  • 2022 — auj.Lead dev & expert AngularBPGO
  • 2020 — 2022Lead technique · Angular & JavaG2S
Contact — appel en lead, adresse 48/800, boutons Copier et Écrire un message (secondaires 44 px) ; copié : primaire + coche

Un besoin complexe, une équipe à outiller ? Écris-moi.

florian.etourneau@gmail.com
CopierCopiéÉcrire un message
États des boutons — survol à la souris seulement (pas au doigt) : bordure primaire, fond primaire doux, texte inchangé ; appui : 96 %, retour en dépassement (courte) ; focus clavier : contour 3 px focus, décalé de 3 ; le principal fonce au survol (primary-hover)
CopierreposCopiersurvolCopierappuyéCopierfocus clavierCopiécopié
EnvoyerprincipalEnvoyersurvolEnvoyerappuyéEnvoi…envoi en cours
Formulaire de contact — replié sous l’adresse, « Écrire un message » le déplie ; champs 44 px, libellé 14/700, texte 16 ; l’erreur s’affiche sous le champ (danger, 13) ; Envoyer en primaire
NomFlorianEmailflorian@Cette adresse email ne semble pas valide.MessageBonjour, …Envoyer
Liens et puces — la pointe du bec, 700 Retour au terrain
  • Chaque CV devient une page web ou un PDF prêt à envoyer.
Chez moi — picto lieu en terre, heure et météo en mono

11 h 16 · 14 °C au nord de Rennes, où je vis avec ma femme et nos trois enfants.

Les composants réellement en ligne. Même règle que la planche précédente : seuls les tokens changent entre clair et sombre. Focus en contour iris de 3 px décalé de 3 px, cibles de 44 px, contrastes AA.

Avatars
15 — Profils
Sable
Nuit
Violet
96 px
48 px
32 px
24 px
Florian Etourneau
Lead développeur & conception produit chez MaxDS
Florian Etourneau
Lead développeur & conception produit chez MaxDS
Recadrage rond : l’oiseau entier tient dans le cercle, bec compris. Sable pour les fonds sombres, nuit pour les fonds clairs, violet pour ressortir dans une liste. Lisible jusqu’à 24 px.
Icônes
18 — Onglet & écran d’accueil
Florian Etourneau
Florian Etourneau
64
32
16
Etourneau
Notes
Cartes
Photos
La tête seule, sans aile ni ventre : c’est la seule découpe qui reste lisible à 16 px. En mode sombre, le fond passe en nuit et l’oiseau en iris, automatiquement.
Florian Etourneau

Lead développeur & conception produit chez MaxDS · Rennes

Des interfaces évidentes.Des équipes outillées.

Développeur et lead technique avec plus de dix ans d’expérience, je conçois des applications de bout en bout avec deux priorités : livrer des interfaces évidentes pour l’utilisateur et simplifier la vie des développeurs qui les construisent avec moi.

à toi de tirer

maintenant

au travail · MaxDS

Lead dev & expert Angular · BPGO

Développeur au sein de l’équipe, on avance ensemble : je propose, j’outille, je transmets.

  • Produit Je challenge les spécifications avec les métiers pour livrer des parcours simples.
  • DX Design system, plugins et générateurs Nx sur mesure : l’outillage qui industrialise nos applications.
  • IA Des agents qui suivent d’eux-mêmes nos conventions et notre design system.

open source

Angular Tiptap Editor

… puis MaxDS CV, Basket. La scène reste collée ; la nuée dessine l’étape au centre de l’écran.

parcours
Un oiseau posé = deux mois passés.
  • 2022 — auj.Lead dev & expert AngularBPGO
  • 2020 — 2022Lead technique · Angular & JavaG2S
  • 2018 — 2019Développeur fullstackSIB
  • 2015 — 2018Lead développeur & relais Scrum MasterOBS
  • 2014 — 2015Concepteur-développeur en alternanceSFR
contact

Un besoin complexe, une équipe à outiller ? Écris-moi.

florian.etourneau@gmail.comCopierÉcrire un message

11 h 16 · 14 °C au nord de Rennes, où je vis avec ma femme et nos trois enfants.

© 2026 Florian Etourneau

La maquette de référence, c’est le site en ligne : florian-etourneau.dev. Cette planche en reprend l’ordre, les tailles et les textes (septembre 2026).
Mise en page : contenu de 1200 px au plus, gouttière clamp(16px, 5vw, 120px) (--fe-page-*). L’en-tête reste collé en haut de l’écran, fond sable à 88 % flouté ; un filet apparaît dès qu’on défile. Chaque repère de section est au-dessus de son contenu.

Où l’animer, concrètement
31 — Scénario d’animation
01Arrivée
déclencheurAu chargementanimationLa nuée se pose sur le fil, de part et d’autre de l’oiseau. L’indice « à toi de tirer » clignote trois fois à côté du ballon.sans animationNuée posée, indice fixe
02Le tir
déclencheurGlisser le ballon (ou Entrée)animationL’oiseau lève l’aile par l’avant, ballon en main. On tire vers l’arrière pour viser et doser, puis on lâche ; il suit le ballon de la tête. Le tableau Bodet descend à la première prise : paniers, 24 secondes, tirs. Buzzer à zéro.sans animationLe jeu reste jouable
03L’envol
déclencheurDéfilement, quand la scène sort par le hautanimationIl décolle sans geste intermédiaire, à la même place et à la même taille, et plonge vers la suite de la page, en bas à droite. Les ailes battent au rythme du temps, pas du défilement ; il plane en piquant.sans animationL’oiseau reste posé
Lead dev · BPGO
Tiptap Editor
MaxDS CV
Basket
04Le récit
déclencheurDéfilement de « maintenant »animationLa scène reste collée ; la nuée dessine le picto de l’étape au centre de l’écran : puce de code, logo Tiptap, MaxDS, panier.sans animationLa forme est posée d’un coup
05Le parcours
déclencheurLa liste arrive à l’écrananimationLes oiseaux se posent sur chaque ligne : un oiseau = deux mois. Ceux sans place tournent à droite du repère, jamais sur le texte.sans animationOiseaux posés directement
06Retour au nid
déclencheurLa famille entre à l’écrananimationIl traverse la page, plane ailes levées, se redresse et se pose à sa place sur le fil, à côté de sa femme et des trois petits, puis replie l’aile. Le cadet dribble six fois ; un clic sur lui relance le dribble.sans animationLa famille au complet, sans dribble
07Adresse copiée
déclencheurClic sur CopieranimationLe bouton rebondit, le ballon trace la coche, l’adresse se surligne en primaire doux.sans animationCoche et surlignage fixes
08Message envoyé
déclencheurEnvoi réussi du formulaire de contactanimationLe formulaire se plie en enveloppe ; un oiseau arrive de la gauche, la saisit en vol et disparaît à droite en laissant une traînée de points. « Message envoyé. » prend la place du formulaire.sans animationTexte seul
09Air ball
déclencheurPage 404animationUn vrai air ball : le tir part trop long, passe au-dessus du cercle et du poteau sans rien toucher, et sort du cadre. Boucle lente, toutes les 6 s.sans animationImage fixe
Une histoire en neuf moments, du haut au bas de la page : la nuée se pose, on tire, l’oiseau quitte le fil, la nuée raconte « maintenant » et se perche sur le parcours, puis il rentre au nid retrouver la famille. Tout le reste du site reste immobile — l’animation ne sert qu’à ces neuf endroits. La nuée compte 320 oiseaux (200 sous 860 px). « Sans animation » = ce qui s’affiche quand le visiteur a demandé moins de mouvement dans son système.
mouvement — la nuée

Une nuée qui remplit les formes.

Sur le site, 320 étourneaux accompagnent la lecture. Pour chaque étape, ils se posent dans la forme : le contour serré pour la lisibilité, l’intérieur clairsemé pour la matière. Elle se lit par masse et par creux. Approche la souris : ils esquivent.

mouvement — l’oiseau articulé

Un seul oiseau, des articulations.

L’oiseau du logo, découpé en pièces : aile, tête, corps, pattes. Chaque geste fait tourner ces pièces autour de leurs pivots au lieu d’échanger deux dessins. Toute la géométrie et les calculs sont dans etourneau/starling, une entrée du paquet que le site installe. Démo jouable : starling/demo.html.

  • Un seul oiseau articulé. Pivots : épaule (96, 100), tête (119, 74), hanches (98, 150) et (110, 146). Pattes de 42 unités en deux segments, talon vers l’arrière.
  • Profil uniquement. Le papier découpé fait partie de l’identité. La tête peut se retourner, le corps reste de profil.
  • Le temps anime le corps, l’interaction la trajectoire. Le défilement ou la souris déplacent l’oiseau ; les ailes battent selon l’horloge.
  • Retenue. Une animation raconte quelque chose, uniquement aux moments du scénario. Les gestes au repos sont pour les outils.
  • Réduire les animations : les poses finales, sans transition.
sur le site · le tirLever l’ailela même aile, par l’avant, jamais derrière le corps
anticipation 100 ms · montée 550 ms, dépassement
le corps recule de 3°
repos
anticipation
227 ms
devant le ventre
dépassement
levée
sur le site · envol, nid, envoiBattre et planer4,2 battements/s · descente 42 % du cycle
le bout de l’aile suit avec 12 % de retard
plane en piquant, ailes tenues
ailes levées pour freiner · corps : 2 unités
haut
descente
30 %
bas
remontée
plané
freinage
sur le site · le tirTourner la têtedemi-tour en 130 ms, puis tenue immobile
le bec de face, un instant
inclinaison de 8 à 14°, en 250 ms
devant
pivot
bec de face
derrière
penchée
suit le ballon
sur le site · le retour au nidSe poserrelais sur une image, aile levée, penché de 18°
chute 220 ms · écrasement de 8 %
redressement avec dépassement · repli 450 ms
relais
+150 ms
+300 ms
+450 ms
+600 ms
+950 ms
le catalogue
Lever l’ailesur le site · tirRemplace l’échange aile pliée / aile levée. Le bout de l’aile arrive au même point : la visée ne change pas.
Battre et planersur le site · envol, nid, envoiBattement continu dans le temps ; plané en piqué, ailes tenues ; plané de freinage, ailes levées, à l’approche du nid. Le corps monte de 2 unités à chaque descente (0,8 pour l’oiseau de l’envoi, qui bat à 7 par seconde).
Tourner la têtesur le site · tirSuit le ballon en vol, se retourne s’il retombe derrière.
Se posersur le site · nidPlané ailes levées, redressement à −30°, relais, écrasement, repli.
Décollerpossible · outilsAccroupi 150 ms, détente 230 ms en levant l’aile, relais ailes en haut. Essayé à l’envol du site : un geste en temps arrive trop tard quand on défile vite ; le site relaie directement, à la même place et à la même taille.
Marcher, fouiller, demi-tourpossible · outils5 pas/s, pas de 14 unités ; fouille à 30°, deux fois ; demi-tour sur un saut de 320 ms.
Rester vivantpossible · outilsRespiration 1 % sur 3 s ; clignement 140 ms toutes les 2 à 6 s ; s’ébrouer 300 ms ; regard par-dessus l’épaule.
Vue de faceécartéTire l’oiseau vers le pingouin et impose un second dessin à maintenir.
pour les outils
  • Chargement : le fil devient la barre de progression, l’oiseau marche dessus et fouille du bec.
  • Attente, état vide : un oiseau au repos, qui respire, cligne et regarde par-dessus l’épaule.
  • Succès : il lève l’aile, le geste du tir.
  • Ouverture, fermeture d’un panneau : il se pose, puis décolle.

tokens : --fe-duration-flash 130ms · short 250ms · medium 450ms · long 650ms
--fe-ease-out · --fe-ease-overshoot · --fe-ease-in-out