A2Ω-001 · AmirContact ↗
Le Pont-Neuf de Toulouse au crépuscule, en hiver
  1. Sommaire
  2. 01Recueil du besoin→
  3. 02L'interlocuteur→
  4. 03Cahier des charges→
  5. 04Développement→
  6. 05Déploiement→
  7. 06Gouvernance→
  8. 07L'IA, outil de travail→
  9. ΩLivraison→
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.

Comment je lis le temps de stage

Web : conception, dev, déploiement ≈ 75 %Gouvernance ≈ 25 %

Avec l'IA comme outil tout du long, pas comme une mission à part.

Page du document d'Alpha to Omega : Candidature, p. 1

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.

Page du document d'Alpha to Omega : Candidature, p. 2

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.

Page du document d'Alpha to Omega : Offre, p. 3

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.

Page du document d'Alpha to Omega : Offre, p. 3

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.

Page du document d'Alpha to Omega : Candidature, p. 2

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.

La voûte en « palmier » de l'église des Jacobins, à Toulouse

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
  1. Ce que j'ai déjà construit
  2. Projet SAE Dev. App.Création UI avec SceneBuilderJava · JavaFX · 2026
  3. Projet SAECréation Base de données avec contraintesUML, SQL · 2026
  4. MnemaSuperApp IA / Automatisation IAVibeC Claude · 2026 juin - maintenant

Je maîtriseJavaSQLUMLPythonJavaSQLUMLPythonJavaSQLUMLPython

Je pratiqueHTMLLinux / terminalPHPCSSGitUnixHTMLLinux / terminalPHPCSSGitUnixHTMLLinux / terminalPHPCSSGitUnix

J'apprendsRustCECUArduinoRustCECUArduinoRustCECUArduino

« 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; } };3 4export 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}15 16// 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.

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.

« 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.

Sous-face en béton du pont Saint-Pierre, à Toulouse
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
Proton MailContactMoiLes e-mails reçusAdresse exposée volontairement, rien d’autre
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 d'écran : le zoom tronque les lignes du PDF et l'annotation chevauche le texte
Ma capture, avant correction
Corrigé

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
Panorama de la rive droite de la Garonne au Bazacle, Toulouse, en décembre

Du besoin…

…au code…

…à la production.

La Garonne au Bazacle. Photo Didier Descouens, CC BY-SA 4.0