Toulouse, le Pont-Neuf. Là où le stage aurait lieu. Photo Antoine Montulé, CC BY-SA 4.0
Dossier
A2Ω-001
Client
Alpha to Omega
Prestataire
Amir, BUT Info
Statut
en ligne
Vous avez demandé un site. Voici un projet.
Je m'appelle Amir, je suis en BUT Informatique et je candidate au stage Développement web, IA & gouvernance numérique. Plutôt que de vous décrire les missions, je les ai appliquées à ma candidature : du recueil du besoin à la mise en production.
« Nous voulons voir comment vous transformez un objectif ouvert en un résultat clair et fonctionnel. »
Alpha to Omega, dossier de candidature, p. 1
Tout a commencé par trois pages.
Je les ai lues comme un brief client.
« Participer au recueil et à la reformulation des besoins d'un client ou d'une équipe. »
L'offre, p. 2
Avant d'écrire une ligne, j'ai relu vos deux documents comme un brief client : ce que vous demandez, ce que vous évaluez, et ce que vous ne dites pas mais qui compte. Voici ce que j'en ai retenu, surligné sur vos propres pages.
Avec l'IA comme outil tout du long, pas comme une mission à part.
Lecture du brief01 / 05
01 · Candidature, p. 1
« nous voulons voir comment vous transformez un objectif ouvert en un résultat clair et fonctionnel. »
Ma lecturele vrai sujet ↓Pas un portfolio parfait : une démarche lisible, du besoin au livrable. D'où ce site en forme de dossier de projet.
02 · Candidature, p. 2
« votre capacité à distinguer votre travail de ce qui a été proposé ou généré par les outils utilisés. »
Ma lectureà prouver, pas à direLa traçabilité compte autant que le résultat. Chaque étape dit qui a fait quoi : phase 07.
03 · Offre, p. 3
« Le travail sur les sites ne s'arrête pas au développement. »
Ma lectureaprès le git pushDéploiement, DNS, logs et sauvegardes font partie du produit. La phase 05 le montre en direct.
04 · Offre, p. 3
« apprendre à poser les bonnes questions, structurer l’existant et préparer des décisions qui seront ensuite validées. »
Ma lecturequestions > réponsesLa gouvernance, c'est de l'inventaire et de la clarté, pas un avis juridique. Je l'ai appliquée à ce site : phase 06.
05 · Candidature, p. 2
« vous savez passer d'un projet local à une application accessible sur Internet. »
Ma lectureune URL, pas un zipLe livrable, ce n’est pas un dossier sur mon disque : c’est une URL. Elle est vérifiée en direct au cahier des charges.
Toulouse, centre-ville.
Les Jacobins, le « palmier ». Le stage se déroule dans le centre-ville de Toulouse. Photo Diego Delso, CC BY-SA 4.0
« De A à Z, un seul interlocuteur responsable du résultat. »
Dossier de candidature, p. 1
Je m'appelle Amir, je suis en BUT Informatique. Ce qui me plaît dans le web, c'est la chaîne entière : partir d'un besoin flou, le reformuler, construire, mettre en ligne, et voir quelqu'un s'en servir.
Ce qui me marque ces derniers temps, c'est l'évolution de l'IA et la tournure que celle-ci prend
Formation
IUT de Blagnac — 2ème année, parcours A
Basé à
Toulouse
Disponibilité
Disponible pour 2 à 6 mois
Ce que j'ai déjà construit
Projet SAE Dev. App.Création UI avec SceneBuilderJava · JavaFX · 2026
Projet SAECréation Base de données avec contraintesUML, SQL · 2026
MnemaSuperApp IA / Automatisation IAVibeC Claude · 2026 juin - maintenant
Je maîtriseJava✦SQL✦UML✦Python✦Java✦SQL✦UML✦Python✦Java✦SQL✦UML✦Python✦
Je pratiqueHTML✦Linux / terminal✦PHP✦CSS✦Git✦Unix✦HTML✦Linux / terminal✦PHP✦CSS✦Git✦Unix✦HTML✦Linux / terminal✦PHP✦CSS✦Git✦Unix✦
« Participer à la structuration d'un cahier des charges ou d'une feuille de route. »
L'offre, p. 2
Vos exigences, plus celles que je me suis fixées. Chaque ligne renvoie à sa preuve, et trois d'entre elles sont vérifiées par votre navigateur au moment où vous lisez.
« Développer des pages, composants et fonctionnalités ; travailler sur des sites développés sur mesure avec Astro. »
L'offre, p. 2
Ce site est écrit en Astro, votre stack. Plutôt qu'une liste de technos, voici un vrai fichier du projet, importé tel quel au moment du build : si je le modifie, cette page change aussi.
src/audit.ts27 lignes · importé au build
1// Audit en direct : ce que cette page dépose ou appelle chez le visiteur.2const safe = (f: () => number) => { try { return f(); } catch { return 0; } };34export function audit() {5 const nav = performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming | undefined;6 const res = performance.getEntriesByType('resource') as PerformanceResourceTiming[];7 return {8 cookies: document.cookie ? document.cookie.split(';').length : 0,9 thirdParty: res.filter((r) => new URL(r.name).origin !== location.origin).length,10 storage: safe(() => localStorage.length + sessionStorage.length),11 kilobytes: Math.round([nav, ...res].reduce((s, r) => s + (r?.encodedBodySize ?? 0), 0) / 1024),12 ms: Math.round(nav?.domContentLoadedEventEnd ?? 0),13 };14}1516// Où la page est servie : Cloudflare expose /cdn-cgi/trace sur chaque site qu'il héberge.17// La réponse contient aussi l'IP du visiteur : on ne la garde pas.18export async function edge() {19 try {20 const res = await fetch('/cdn-cgi/trace', { cache: 'no-store' });21 if (!res.ok) return null;22 const t = Object.fromEntries((await res.text()).trim().split('\n').map((l) => l.split('=')));23 return { colo: t.colo, http: t.http, tls: t.tls, loc: t.loc };24 } catch {25 return null; // en local : pas de Cloudflare26 }27}
Ce que fait ce code
Il liste ce que la page a chargé (API Performance), compte cookies et stockage, et interroge /cdn-cgi/trace, que Cloudflare expose sur chaque site qu'il sert.
Ce que l'IA a proposé
La structure des deux fonctions et l’idée d’utiliser /cdn-cgi/trace.
Ce que j'ai vérifié
Vérifié que l'IP renvoyée par Cloudflare n'est jamais affichée.
Astro 7, rendu statique. Du HTML servi tel quel. Le seul JavaScript envoyé sert au mouvement et aux mesures en direct.
Un fichier de contenu. Tous les textes sont dans src/data.ts : on peut les relire et les corriger sans toucher au code.
CSS natif d'abord. La jauge du rail à gauche est une animation scroll-timeline, sans une ligne de JS. Les marges de chaque phase restent collées au texte grâce à position: sticky.
GSAP et Lenis pour le reste du mouvement, désactivés si l'appareil demande moins d'animations.
A2Ω001 · LFBO Toulouse-Blagnac
ALT — ft
SPD — kt
HDG —°
DIST — m
Entre le développement et la mise en production
À Toulouse, tout finit par décoller.
Même un site.
Avion modélisé en code avec Three.js, sans modèle 3D téléchargé.
« Préparer et réaliser des déploiements […] travailler avec Cloudflare […] examiner des logs. »
L'offre, p. 3
Un déploiement se prouve en production. Ce panneau n'est pas une capture : il interroge Cloudflare maintenant, pour vous.
Cité de l'espace, Toulouse. Photo kallerna, CC BY-SA 4.0
Servi depuis
…
Protocole
…
Chiffrement
…
Poids transféré
… Ko
Prêt en
… ms
Source : /cdn-cgi/trace + API Performance du navigateur. Votre adresse IP est dans la réponse de Cloudflare : elle n'est ni affichée ni conservée.
zsh — PortfolioSite
$ npm run build[build] output: "static"[vite] ✓ built in 538ms├─ /index.html (+11ms)[build] 1 page(s) built in 711ms[build] Complete!$ npx wrangler pages deploy dist --project-name amir-a2o# la preuve de cette commande, c'est la page que vous lisez :→ en ligne
« Recenser les applications et services utilisés par une organisation […] documenter les données et dépendances principales. »
L'offre, p. 3
Je n'ai pas encore d'organisation à auditer. J'ai donc cartographié la plus petite que j'avais sous la main : ce site. Qui détient quoi, quelles données passent où, et quelle action en découle.
Une structure visible est une structure qu'on peut entretenir.Sous le pont Saint-Pierre, Toulouse. Photo Didier Descouens, CC BY-SA 4.0
ServiceRôleResponsableDonnéesAction
Cloudflare PagesHébergement, CDN, HTTPSMoi (compte perso)Logs techniques (IP) chez CloudflareActiver la 2FA, aucun jeton API dans le dépôt
npm : Astro, GSAP, Lenis, FontsourceDépendances de buildÉditeurs tiersAucune au runtime : tout est servi depuis mon domainenpm audit : 0 vulnérabilité à l’installation
Wikimedia CommonsPhotographies de ToulouseAuteurs tiers (crédités)Aucune : images copiées et servies depuis mon domaineLicences CC BY-SA respectées : auteur, licence, lien en pied de page
Claude Code (Anthropic)Assistance IA au développementMoi (compte perso)Partagé : l’offre (publique), mes références visuellesAucune donnée d’un tiers transmise ; tout le code relu
Ce que cette page a déposé ou appelé chez vous, compté à l'instant par votre navigateur :
…
cookies
…
requêtes vers un tiers
…
entrées de stockage local
« Formuler un problème, utiliser efficacement ces outils, contrôler leurs résultats et reprendre le travail manuellement lorsque nécessaire. »
L'offre, p. 3
Outils utilisés : Claude Code (Claude Opus 5.5). L'IA produit vite ; mon travail, c'est de juger. Voici le registre de toutes les fois où ce qu'elle a produit n'allait pas : qui l'a repéré, ce qui a changé, et pourquoi.
Registre des reprises · A2Ω-001
06/ 06
4 repérées par moi, 2 par l'IA en vérifiant son propre travail.
− proposé+ retenu
Reprise 01 · repérée par moi
Une V1 de template
Structure : hero, à propos, compétences, projets, contact
Structure : les phases de votre offre, du besoin à la livraison
Le site énumérait au lieu de démontrer. Je l’ai jugé générique : tout a été repensé.
Rejeté
Reprise 02 · repérée par moi
Six phases, un seul gabarit
Même mise en page de la phase 02 à la phase 07
Une mise en scène par phase : rangées cinétiques, section sombre, écran 3D, scan, registre
Le déroulé était monotone. Chaque phase a maintenant sa propre forme.
Refait
Reprise 03 · repérée par l'IA, en vérifiant
Une citation inexacte
« savoir passer d’un projet local à une application… »
« vous savez passer d’un projet local à une application… »
Repéré en extrayant les coordonnées du PDF : le texte cité ne correspondait pas mot pour mot.
Corrigé
Reprise 04 · repérée par l'IA, en vérifiant
Des traînées qui traversent l’écran
Traînées de condensation dessinées jusque dans la caméra
smoothstep(60., 220., distance(vW, cameraPosition)) : effacées près de l’objectif
Deux cônes gris géants au passage de l’avion, vus sur une capture de contrôle.
Corrigé
Reprise 05 · repérée par moi
Un zoom qui coupe le texte
Zoom 1,3 à 2,6 × sur la citation, notes manuscrites posées sur le texte
Zoom 1,08 × centré sur la page, repère tracé dans la marge blanche
Les lignes étaient tronquées et l’écriture bleue chevauchait le PDF. Capture à l’appui.
Ma capture, avant correctionCorrigé
Reprise 06 · repérée par moi
Trop de spectacle
Virages inclinés à 55°, nuages d’altitude qui défilent, trois flashs
Inclinaison ≤ 15°, ciel dégagé, étoiles rares, fleur sans flash
Plus élégant, et plus confortable : un effet doit servir le propos.
Adouci
Du besoin…
…au code…
…à la production.
La Garonne au Bazacle. Photo Didier Descouens, CC BY-SA 4.0