# Story 4.7: Révélation "Monde de Code" Status: ready-for-dev ## Story As a visiteur ayant complété le parcours, I want vivre un moment waouh de révélation finale, so that la découverte du développeur est mémorable. ## Acceptance Criteria 1. **Given** le visiteur accède à la zone Contact (après challenge ou skip) **When** la révélation se déclenche **Then** une transition immersive mène vers le "Monde de Code" 2. **And** un paysage composé de blocs de code ASCII art s'affiche (montagnes, arbres, ville en code) 3. **And** le code scroll/apparaît progressivement (animation) 4. **And** l'avatar illustré de Célian est révélé au centre du monde de code 5. **And** le narrateur (Le Bug) commente : "Tu l'as trouvé !" 6. **And** le message "Tu m'as trouvé !" s'affiche avec effet de célébration 7. **And** sur mobile, une version allégée mais émotionnellement équivalente s'affiche 8. **And** `prefers-reduced-motion` affiche une version statique 9. **And** une description alternative est disponible pour les screen readers 10. **And** un bouton permet de continuer vers le formulaire de contact ## Tasks / Subtasks - [ ] **Task 1: Créer la page révélation** (AC: #1, #10) - [ ] Créer `frontend/app/pages/revelation.vue` - [ ] Vérifier que le contact est débloqué - [ ] Structure en phases : transition → monde de code → avatar → message - [ ] **Task 2: Créer le composant CodeWorld** (AC: #2, #3) - [ ] Créer `frontend/app/components/feature/CodeWorld.vue` - [ ] ASCII art représentant un paysage (montagnes, arbres, soleil) - [ ] Animation de révélation ligne par ligne - [ ] Couleurs syntaxiques (comme du code) - [ ] **Task 3: Créer l'ASCII art du paysage** - [ ] Montagnes en caractères (`/\`, `^`, etc.) - [ ] Arbres stylisés (`{}`, `[]`) - [ ] Soleil ou étoiles - [ ] Personnage au centre - [ ] **Task 4: Révéler l'avatar de Célian** (AC: #4) - [ ] Image illustrée de Célian - [ ] Animation d'apparition (fade + scale) - [ ] Position centrale sur le monde de code - [ ] **Task 5: Message du narrateur** (AC: #5) - [ ] Le Bug s'exclame "Tu l'as trouvé !" - [ ] Utiliser NarratorBubble ou message intégré - [ ] Ton enthousiaste et célébratoire - [ ] **Task 6: Message de Célian** (AC: #6) - [ ] "Tu m'as trouvé !" avec effet typewriter - [ ] Animation de célébration autour - [ ] Signature de Célian - [ ] **Task 7: Version mobile** (AC: #7) - [ ] ASCII art simplifié ou image de remplacement - [ ] Mêmes éléments clés : avatar, message, émotion - [ ] Performance optimisée - [ ] **Task 8: Accessibilité** (AC: #8, #9) - [ ] Respecter prefers-reduced-motion (version statique) - [ ] Description alternative pour screen readers - [ ] aria-label descriptif - [ ] **Task 9: Tests et validation** - [ ] Tester l'animation complète - [ ] Vérifier la version mobile - [ ] Tester prefers-reduced-motion - [ ] Valider l'accessibilité ## Dev Notes ### ASCII Art du Monde de Code ``` * . * * . . * . ___ . * . / \ * . / ^ \ . * * / /^\ \ * . /____/ \____\ . * | | | | * . | | | | . _______| |_____| |_______ / | | | | \ { Vue }| TS |{PHP}| DB |{Nuxt} \_______________________/ || || || { } { } { } || || || ___||_____||_____||___ | YOU | | FOUND ME! 🎉 | |_____________________| ``` ### Page revelation.vue ```vue ``` ### Composant CodeWorld ```vue ``` ### Clés i18n **fr.json :** ```json { "revelation": { "transition": "Le voilà...", "foundMe": "Tu m'as trouvé !", "greeting": "Bienvenue dans mon monde de code. Je suis Célian, le développeur que tu cherchais depuis le début.", "title": "Développeur Web Fullstack", "contactMe": "Me contacter", "codeWorldAlt": "Un paysage stylisé composé de caractères de code, représentant l'univers du développeur", "srDescription": "Vous avez découvert le développeur ! Célian vous accueille dans son monde de code." } } ``` **en.json :** ```json { "revelation": { "transition": "There he is...", "foundMe": "You found me!", "greeting": "Welcome to my world of code. I'm Célian, the developer you've been looking for all along.", "title": "Fullstack Web Developer", "contactMe": "Contact me", "codeWorldAlt": "A stylized landscape made of code characters, representing the developer's universe", "srDescription": "You discovered the developer! Célian welcomes you to his world of code." } } ``` ### Dépendances **Cette story nécessite :** - Story 3.5 : Store de progression (contactUnlocked) - Story 3.2 : useReducedMotion - Story 3.3 : useNarrator (révélation) **Cette story prépare pour :** - Story 4.8 : Page contact (destination finale) ### Project Structure Notes **Fichiers à créer :** ``` frontend/app/ ├── pages/ │ └── revelation.vue # CRÉER ├── components/feature/ │ └── CodeWorld.vue # CRÉER └── public/images/ └── avatar-celian.svg # CRÉER (asset) ``` **Fichiers à modifier :** ``` frontend/i18n/fr.json # AJOUTER revelation.* frontend/i18n/en.json # AJOUTER revelation.* ``` ### References - [Source: docs/planning-artifacts/epics.md#Story-4.7] - [Source: docs/planning-artifacts/ux-design-specification.md#Revelation] - [Source: docs/brainstorming-gamification-2026-01-26.md#Revelation] ### Technical Requirements | Requirement | Value | Source | |-------------|-------|--------| | ASCII Art | Paysage stylisé | Epics | | Avatar | Image de Célian | Epics | | Message | "Tu m'as trouvé !" | Epics | | Accessibilité | prefers-reduced-motion, aria | Epics | ## Dev Agent Record ### Agent Model Used {{agent_model_name_version}} ### Debug Log References ### Completion Notes List ### Change Log | Date | Change | Author | |------|--------|--------| | 2026-02-04 | Story créée avec contexte complet | SM Agent | ### File List