Synthèse

Catégorie
Formation
Période
Août 2026, en cours
Organisation
Projet personnel, support des épreuves E5, E6 et E7
Mon rôle
Cadrage du besoin et des deux usages du site, direction artistique, modélisation du contenu autour du référentiel, rédaction intégrale du contenu publié, recette et validation avant chaque fusion. Le développement a été mené en binôme avec un assistant d'IA : je spécifie, j'arbitre, je relis et je valide ; l'assistant propose et implémente.
Modalité
Travail en équipe
Équipe
Binôme d'une personne et d'un assistant d'IA. Claude Code (Anthropic) a tenu le rôle de co-équipier de développement : écriture des composants Astro, des schémas de contenu et des feuilles de style, et rédaction de la documentation technique du dépôt. Je garde la décision sur l'architecture du contenu, la totalité de ce qui est affirmé sur le site, et la vérification de ce qui est produit : rien n'est fusionné sans relecture ligne à ligne, et aucune donnée me concernant n'est écrite par l'assistant sans que je l'aie fournie.
État de la fiche
En cours

Pourquoi ? Contexte et problématique

Contexte

Le site que vous lisez est lui-même une réalisation. Il sert deux usages qui ne se confondent pas : présenter un profil professionnel à qui le consulte, et servir de support d'oral pour les épreuves E5 et E6, où chaque compétence du référentiel doit pouvoir être reliée à une réalisation et à une preuve ouvrable devant le jury. Le projet a été conduit en dehors de l'alternance, sur mon temps personnel.

Problématique

Un portfolio se périme au rythme où il se remplit : les réalisations arrivent au fil de l'alternance, les preuves se déposent après coup, et les compétences se rattachent une fois le recul pris. Comment construire un site où ajouter une réalisation ne demande de toucher à aucun composant, et où ce qui n'est pas encore renseigné se voit au lieu de disparaître ?

Objectifs

  • Relier chaque compétence du référentiel BTS SIO à ses réalisations et à ses preuves, dans les deux sens.
  • Ajouter une réalisation, une preuve ou un article de veille en déposant un seul fichier Markdown.
  • Rendre visible tout champ non renseigné plutôt que de le masquer ou de l'inventer.
  • Garantir un site intégralement lisible sans JavaScript et sans requête vers un domaine tiers.
  • Disposer d'une URL directe par réalisation, ouvrable pendant une soutenance.

Comment ? Démarche et réalisation

Architecture

Le contenu est séparé de l'interface. Les réalisations et les articles de veille sont des fichiers Markdown validés au build par un schéma Zod : un champ inconnu ou une valeur hors liste arrête la génération avec un message explicite. Une couche de requêtes unique, src/data/collections.ts, porte tout le lien compétence ↔ réalisation ↔ preuve ; les composants ne connaissent que ses fonctions. Déposer un fichier Markdown génère donc la page de la réalisation, sa fiche E6 le cas échéant, son entrée dans la bibliothèque filtrable, les filtres correspondants, les lignes des tableaux croisés E5, E6 et E7, les liens depuis chaque compétence rattachée et les entrées du registre documentaire. Le rendu est entièrement statique : dist/ se dépose sur n'importe quel hébergeur de fichiers.

Étapes de réalisation

  1. 1. Cadrage des deux usages et de la règle de contenu

    Le site devait tenir deux rôles à la fois : vitrine professionnelle et support d'oral. La règle qui en découle a été posée avant la première ligne de code : aucune information n'est inventée, et toute donnée non fournie apparaît sur le site sous la forme d'un jeton « À COMPLÉTER » visible. C'est cette règle qui a ensuite dicté l'essentiel des choix techniques.

  2. 2. Reprise de la direction artistique

    Le vocabulaire visuel provient d'un poster réalisé auparavant : fond sombre, mot-symbole sérif moitié encre moitié dégradé, astérisque de marque, capitales espacées et courbes d'accélération dédiées. Il a été conservé tel quel et transposé, ce qui a évité de repartir d'une page blanche sur la partie la moins technique du projet.

  3. 3. Modélisation du contenu autour du référentiel

    Les intitulés et composantes des compétences ont été repris du référentiel officiel du BTS SIO, sans reformulation. Les codes admis sont énumérés dans le schéma : un code inexistant arrête le build. Les types de preuves, les catégories, les domaines et les épreuves suivent la même logique de liste fermée.

  4. 4. Développement de l'interface en binôme avec l'assistant

    Chaque lot a suivi la même boucle : je décris le besoin et les contraintes, l'assistant propose une implémentation, je la relis et je demande les corrections avant de valider. Les trois îlots interactifs (menu mobile, matrice de compétences, filtres de la bibliothèque) sont écrits en JavaScript natif dans le composant concerné, sans framework front.

  5. 5. Recette avant mise en ligne

    Contrôle de types, mesures Lighthouse, revue de toutes les routes une à une et vérification du comportement sans JavaScript. La recette a précédé la publication, et non l'inverse : le site n'est pas encore déployé, l'URL de production reste à renseigner dans la configuration.

Configurations

  • Schémas de contenu : listes fermées plutôt que texte libre

    Les champs qui alimentent des filtres ou des tableaux croisés sont des énumérations : catégorie, domaines, épreuves, codes de compétence, types de preuve, état de publication. Une valeur hors liste ou un champ inconnu arrête le build. Une faute de frappe sur un code de compétence ne peut donc pas produire silencieusement une case vide dans la matrice.

  • Registre des technologies, non affiché par défaut

    Le catalogue des technologies sert de liste de choix, mais chaque entrée y est marquée non confirmée par défaut et n'apparaît nulle part sur le site tant qu'elle n'a pas été explicitement confirmée et accompagnée d'une note décrivant l'usage réel qui en a été fait. C'est le point du projet où la tentation d'aligner des logos est la plus forte.

  • Preuves déclarées avant d'être disponibles

    Une preuve possède un état : disponible ou à fournir. Une preuve annoncée mais absente reste visible sur la fiche, sur la page de compétence et dans le registre documentaire, avec la mention correspondante. Déposer le fichier dans public/documents/ et basculer l'état active le lien partout où la preuve est référencée.

Procédures

  • Ajouter une réalisation sans toucher à l'interface

    Copier le modèle commenté depuis docs/modeles/ vers src/content/realisations/, renommer le fichier (son nom devient l'URL), remplir le frontmatter puis le corps Markdown. Aucun composant n'est modifié. Le modèle documente chaque champ et ses valeurs admises, ce qui permet de rédiger une fiche sans relire le schéma.

  • Une branche et une pull request par modification

    Aucune modification n'est poussée directement sur la branche principale. Chaque ajout ouvre une branche nommée par son objet, puis une pull request relue avant fusion. L'historique donne ainsi la chronologie réelle du projet, ce qui est directement exploitable pour justifier le travail en mode projet.

Avec quoi ? Environnement technique

Environnement

  • Serveur de développement ORCA-SERV : VPS Ubuntu personnel rejoint par réseau privé maillé, où sont centralisés les dépôts et les agents de code
  • Astro 7 en sortie statique, TypeScript strict, Node 20+
  • Claude Code (Anthropic) comme assistant de développement en binôme
  • Git et GitHub, dépôt EPS-AXIANS/portfolio-bts-sio-sisr
  • Lighthouse pour les mesures de performance, d'accessibilité et de référencement

Technologies

  • Astro
  • TypeScript
  • Node.js
  • Git

Quel résultat ? Tests et validation

Tests réalisés

  • Contrôle de types et de contenu au build

    La commande de build enchaîne la vérification de types et la génération. Sortie obtenue : zéro erreur et zéro avertissement. Le même contrôle valide les fichiers Markdown contre leurs schémas, ce qui fait échouer le build sur une fiche mal renseignée plutôt que de publier une page incohérente.

  • Revue de toutes les routes, une à une

    Chaque route a été ouverte et contrôlée, seize à la date de la recette : aucune erreur en console, un seul titre de premier niveau par page, titres et descriptions uniques, aucun débordement horizontal, tous les liens internes résolus.

  • Mesures Lighthouse sur trois pages représentatives

    Accueil, page de compétences et une fiche de réalisation. Profil bureau : 100 en performance, accessibilité, bonnes pratiques et référencement. Profil mobile : 100 partout sauf la performance, mesurée entre 97 et 100 selon la charge de la machine de mesure sous bridage processeur.

  • Comportement sans JavaScript

    Navigation complète du site avec les scripts désactivés : la matrice de compétences affiche tous ses panneaux légendés et empilés, la bibliothèque toutes ses cartes. Les commandes qui seraient inertes, onglets et filtres, ne s'affichent pas du tout, plutôt que de rester visibles sans effet.

Résultats obtenus

  • Une URL directe par réalisation, ouvrable pendant une soutenance ; toutes les routes contrôlées une à une.
  • Vérification de types et de contenu : zéro erreur, zéro avertissement.
  • Lighthouse : 100 sur les quatre axes en profil bureau ; 97 à 100 en performance mobile, 100 sur les trois autres axes.
  • Aucun fichier JavaScript produit au build : les trois îlots interactifs sont intégrés au HTML des seules pages qui les utilisent.
  • Aucune requête vers un domaine tiers : deux polices auto-hébergées pour 29 Ko au total, images converties au build.
  • Ajout d'une réalisation, d'une preuve ou d'un article de veille par dépôt d'un seul fichier, sans modification de composant.
  • Documentation d'exploitation du dépôt rédigée : où modifier quoi, comment ajouter une fiche, comment déposer une preuve.

Difficultés et bilan

Difficultés rencontrées et solutions apportées

  • Le risque propre au travail avec une IA : le plausible qui passe pour du vrai

    Un assistant produit sans effort une phrase crédible sur une technologie que je n'ai jamais mise en œuvre, ou une date vraisemblable. C'est le risque principal de ce mode de travail, et il ne se corrige pas par la vigilance seule. La réponse a été structurelle : les jetons « À COMPLÉTER » restent affichés sur le site, et les technologies sont masquées tant qu'elles ne sont pas confirmées une par une. Le catalogue a d'ailleurs été livré entièrement non confirmé, puis ouvert dans un second temps aux seules briques réellement mises en œuvre, avec la note d'usage correspondante.

  • Déléguer l'écriture sans déléguer la responsabilité

    Devant un jury, c'est moi qui réponds. Une fiche que je n'aurais pas relue ligne à ligne serait indéfendable à l'oral, quelle que soit sa qualité d'écriture. La règle que je me suis fixée est simple : je relis chaque modification avant fusion, et tout ce qui me concerne (parcours, rôle, difficultés rencontrées) vient de moi, jamais de l'assistant. Le gain de temps est réel sur l'implémentation et la mise en forme ; il est nul sur le contenu, et c'est normal.

  • L'interactivité pensée après coup dégrade mal

    Une matrice de compétences en onglets et une bibliothèque à filtres sont naturelles à écrire en supposant que les scripts s'exécutent. Sans eux, on obtient une page où tout est masqué et des boutons qui ne font rien. Le parti retenu a été l'inverse : l'état sans JavaScript est l'état par défaut, tous les panneaux sont visibles, et les commandes ne sont ajoutées que lorsqu'elles peuvent fonctionner. Cette décision doit être prise en écrivant le composant, pas après.

Bilan

Ce projet est le seul du portfolio dont le portfolio lui-même est le livrable, et c'est ce qui le rend intéressant : les décisions y sont visibles dans le résultat. Ce que j'en retiens tient surtout au mode de travail. Développer en binôme avec un assistant d'IA déplace l'effort : il passe de l'écriture du code vers la spécification, la relecture et la vérification. L'effort reste le même en quantité, il change simplement de nature, et il demande de savoir précisément ce que l'on veut avant de le demander. La contrepartie est un risque que je n'aurais pas eu seul : un texte fluide et faux se repère beaucoup moins bien qu'une erreur de syntaxe, et c'est pour cela que les garde-fous sont dans le code plutôt que dans mes intentions. Le site reste à déployer : l'URL de production n'est pas encore renseignée, et une partie des fiches attend le contenu réel de l'alternance.

Quelles compétences ?

Quelles preuves ?

  • DépôtDépôt Git du portfolioDisponible

    Historique réel du projet : une branche et une pull request par modification, messages de commit documentés. Ouvrable pendant la soutenance.

    • B1.4
    Voir le dépôt
  • ConfigurationDocumentation technique du dépôtDisponible

    Principe de fonctionnement, tableau « où modifier quoi », procédures d'ajout d'une réalisation et de dépôt d'une preuve, choix techniques et résultats mesurés.

    • B1.4
    • B1.5

    Déposer le fichier dans public/documents/, puis renseigner href et status: "disponible".

  • DémonstrationSite en productionÀ fournir

    Mise à disposition effective du service. À fournir une fois le site déployé et l'URL de production renseignée.

    • B1.3
    • B1.5

    Déposer le fichier dans public/documents/, puis renseigner href et status: "disponible".

  • RapportRapports Lighthouse, bureau et mobileÀ fournir

    Performance, accessibilité, bonnes pratiques et référencement mesurés sur trois pages représentatives.

    • B1.3
    • B1.5

    Déposer le fichier dans public/documents/, puis renseigner href et status: "disponible".

  • ProcédureRecette du site, route par routeÀ fournir

    Points de contrôle passés route par route avant publication : console, titres, liens, débordements, comportement sans JavaScript.

    • B1.5

    Déposer le fichier dans public/documents/, puis renseigner href et status: "disponible".

Fiche détaillée

Pourquoi le portfolio figure parmi les réalisations

Un portfolio qui présente des projets sans jamais parler de lui-même laisse de côté la seule réalisation que le jury a sous les yeux pendant tout l’oral. Le site est un service : il a des utilisateurs, une exigence d’accessibilité, une recette, un dépôt et un historique. Le présenter comme une réalisation à part entière est plus honnête que de le laisser au statut de décor.

Ce que change le travail en binôme avec un assistant d’IA

Le développement a été mené avec Claude Code comme co-équipier. La répartition est stable d’un lot à l’autre : je décris le besoin, les contraintes et ce que je refuse ; l’assistant propose une implémentation ; je relis, je corrige, je valide. Sur l’implémentation et la mise en forme, le gain de temps est net.

Sur le contenu, il est nul, et c’est voulu. Tout ce qui m’engage (mon parcours, mon rôle dans chaque projet, les pannes que j’ai réellement levées) vient de moi. Un assistant écrit sans effort une phrase juste de ton et fausse sur le fond ; devant un jury, c’est indéfendable. La discipline est donc de vérifier le contenu avec la même exigence que le code, en sachant qu’une phrase fausse se repère beaucoup moins facilement qu’une erreur de compilation.

La règle qui tient tout : rien d’inventé

Cette règle a été posée avant la première ligne de code, et elle est appliquée par le code plutôt que par la bonne volonté. Un champ non renseigné s’affiche sous forme de jeton « À COMPLÉTER » visible sur le site. Une technologie n’apparaît nulle part tant qu’elle n’a pas été confirmée une par une, avec une note décrivant l’usage réel qui en a été fait. Une preuve annoncée mais non déposée reste affichée avec la mention « à fournir ».

Le résultat est un site qui montre ses trous. C’est inconfortable, et c’est exactement l’intérêt : un champ vide clairement signalé se remplit, alors qu’une information fabriquée se découvre pendant l’oral.

Le contenu séparé de l’interface

Ajouter une réalisation ne demande de modifier aucun composant : un fichier Markdown déposé au bon endroit génère la fiche, son entrée dans la bibliothèque filtrable, les filtres correspondants, les lignes des tableaux croisés E5, E6 et E7, les liens depuis chaque compétence rattachée et les entrées du registre des preuves.

L’intérêt dépasse la commodité de rédaction. Le lien compétence ↔ réalisation ↔ preuve est calculé à partir d’une source unique, dans les deux sens : depuis une compétence, on voit les réalisations qui l’étayent ; depuis une réalisation, les compétences qu’elle démontre. Tenir ces deux vues à la main les aurait fait diverger dès la troisième fiche.

Ce qui reste à faire

Le site n’est pas déployé : l’URL de production n’est pas encore renseignée dans la configuration, ce qui laisse en attente le sitemap, les URL canoniques et les balises de partage. Les deux réalisations professionnelles E6 attendent le contenu réel de l’alternance, et plusieurs preuves sont déclarées mais pas encore déposées : ce sont précisément les entrées que le site affiche en « à fournir ».