# Story 1.7: Page résumé express et mode pressé Status: ready-for-dev ## Story As a visiteur pressé ou recruteur, I want une vue condensée de toutes les informations essentielles, so that je peux évaluer le développeur en 30 secondes. ## Acceptance Criteria 1. **Given** le visiteur accède à `/resume` (FR) ou `/en/resume` (EN) directement ou via "Mode express" **When** la page se charge **Then** le contenu affiché comprend : nom, titre, photo/avatar, accroche (5s) 2. **And** les compétences clés avec stack technique sont visibles (10s) 3. **And** 3-4 projets highlights avec liens sont affichés (10s) 4. **And** un CTA de contact direct est visible (5s) 5. **And** un bouton discret "Voir l'aventure" invite à l'expérience complète 6. **And** la page est fonctionnelle en FR et EN 7. **And** les données sont chargées depuis l'API (projets, skills) 8. **And** les meta tags SEO sont optimisés pour cette page 9. **And** le layout `minimal.vue` est utilisé ## Tasks / Subtasks - [ ] **Task 1: Structure de la page résumé** (AC: #1, #9) - [ ] Implémenter `frontend/app/pages/resume.vue` - [ ] Utiliser le layout minimal : `definePageMeta({ layout: 'minimal' })` - [ ] Structure en sections verticales : Hero → Skills → Projets → Contact - [ ] Design épuré, scannable en 30 secondes - [ ] **Task 2: Section Hero (5s)** (AC: #1) - [ ] Photo/avatar de Célian (image optimisée via nuxt/image) - [ ] Nom : "Célian" (ou nom complet) - [ ] Titre : "Développeur Full-Stack" - [ ] Accroche courte : 1-2 phrases percutantes traduites - [ ] Liens sociaux : GitHub, LinkedIn (icônes cliquables) - [ ] **Task 3: Section Compétences (10s)** (AC: #2, #7) - [ ] Titre de section : "Stack technique" - [ ] Afficher les compétences principales par catégorie (Frontend, Backend, Tools) - [ ] Format compact : badges ou liste avec icônes - [ ] Charger depuis l'API `/api/skills` (filtrer les principales) - [ ] Limiter à 8-12 compétences max pour la lisibilité - [ ] **Task 4: Section Projets highlights (10s)** (AC: #3, #7) - [ ] Titre de section : "Projets récents" - [ ] Afficher 3-4 projets featured - [ ] Format compact : titre + 1 ligne description + lien - [ ] Charger depuis l'API `/api/projects?featured=true` - [ ] Liens vers les détails (ouvre dans nouvel onglet ou garde sur resume) - [ ] **Task 5: Section Contact (5s)** (AC: #4) - [ ] CTA principal : "Me contacter" (lien vers `/contact` ou email direct) - [ ] Email visible (cliquable mailto:) - [ ] Optionnel : téléphone si souhaité - [ ] Style accent pour le CTA principal - [ ] **Task 6: Bouton "Voir l'aventure"** (AC: #5) - [ ] Position discrète mais visible (en bas ou en sidebar) - [ ] Texte : "Envie d'explorer ? Découvrir l'aventure complète" - [ ] Lien vers `/` (landing page) - [ ] Style secondaire, pas en compétition avec le CTA contact - [ ] **Task 7: Chargement des données API** (AC: #7) - [ ] Utiliser `useFetch` ou `useAsyncData` pour charger skills et projets - [ ] Gérer les états loading et error - [ ] Cache côté client pour éviter les appels répétés - [ ] SSR : données chargées côté serveur pour SEO - [ ] **Task 8: Traductions bilingue** (AC: #6) - [ ] Ajouter toutes les traductions dans `i18n/fr.json` et `i18n/en.json` - [ ] Section titles, accroche, CTA labels - [ ] Le contenu API est déjà traduit (Story 1.3) - [ ] **Task 9: Meta tags SEO optimisés** (AC: #8) - [ ] Utiliser `useSeo()` avec meta spécifiques - [ ] Title : "Célian - Développeur Full-Stack | CV Express" - [ ] Description : optimisée pour les recruteurs - [ ] Open Graph image : image de preview professionnelle - [ ] Structured data (JSON-LD) pour Person/Developer (optionnel) - [ ] **Task 10: Responsive et accessibilité** (AC: #1) - [ ] Mobile : sections empilées verticalement - [ ] Desktop : layout plus aéré, possible 2 colonnes pour skills/projets - [ ] Contraste suffisant (WCAG AA) - [ ] Navigation clavier fluide - [ ] Skip link vers le contenu principal - [ ] **Task 11: Validation finale** (AC: tous) - [ ] Page accessible via `/resume` (FR) et `/en/resume` (EN) - [ ] Chargement < 2s (données légères) - [ ] Toutes les sections visibles sans scroll excessif sur desktop - [ ] CTA contact fonctionnel - [ ] Lien vers aventure fonctionne - [ ] Layout minimal utilisé (pas de header complet) - [ ] SEO : vérifier meta tags dans le code source ## Dev Notes ### Structure de la page résumé ``` ┌─────────────────────────────────────────────────────────────────┐ │ PAGE RÉSUMÉ EXPRESS │ │ (Layout minimal) │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────┐ │ │ │ Photo │ Célian │ │ │ │ Développeur Full-Stack │ │ └─────────┘ "Passionné par les expériences web innovantes" │ │ [GitHub] [LinkedIn] │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ STACK TECHNIQUE │ │ ┌────────────────────────────────────────────────────────────┐│ │ │ Frontend: Vue.js • Nuxt • TypeScript • TailwindCSS ││ │ │ Backend: Laravel • PHP • Node.js • MariaDB ││ │ │ Tools: Git • Docker • CI/CD ││ │ └────────────────────────────────────────────────────────────┘│ │ │ ├─────────────────────────────────────────────────────────────────┤ │ PROJETS RÉCENTS │ │ ┌────────────────────────────────────────────────────────────┐│ │ │ • Skycel Portfolio - Portfolio gamifié interactif [→] ││ │ │ • Projet E-commerce - Boutique en ligne moderne [→] ││ │ │ • Dashboard Analytics - Interface de visualisation [→] ││ │ └────────────────────────────────────────────────────────────┘│ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────────────────┐ │ │ │ ME CONTACTER │ │ │ └──────────────────────────┘ │ │ │ │ contact@skycel.fr │ │ │ │ "Envie d'explorer ? Voir l'aventure complète →" │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### Implémentation de la page ```vue Célian {{ $t('resume.title') }} {{ $t('resume.tagline') }} GitHub LinkedIn {{ $t('resume.skills_title') }} {{ $t('common.loading') }} {{ category.name }}: {{ skill.name }} • {{ $t('resume.projects_title') }} {{ $t('common.loading') }} • {{ project.title }} {{ project.short_description }} {{ $t('resume.cta_contact') }} contact@skycel.fr {{ $t('resume.adventure_link') }} → ``` ### Traductions à ajouter ```json // frontend/i18n/fr.json { "resume": { "title": "Développeur Full-Stack", "tagline": "Passionné par les expériences web innovantes et immersives", "skills_title": "Stack technique", "projects_title": "Projets récents", "cta_contact": "Me contacter", "adventure_link": "Envie d'explorer ? Découvrir l'aventure complète", "meta_title": "Célian - Développeur Full-Stack | CV Express", "meta_description": "Développeur Full-Stack spécialisé en Vue.js, Nuxt, Laravel. Découvrez mon profil et mes projets en 30 secondes." } } ``` ```json // frontend/i18n/en.json { "resume": { "title": "Full-Stack Developer", "tagline": "Passionate about innovative and immersive web experiences", "skills_title": "Tech Stack", "projects_title": "Recent Projects", "cta_contact": "Contact Me", "adventure_link": "Want to explore? Discover the full adventure", "meta_title": "Célian - Full-Stack Developer | Quick Resume", "meta_description": "Full-Stack Developer specialized in Vue.js, Nuxt, Laravel. Discover my profile and projects in 30 seconds." } } ``` ### Dépendances **Cette story DÉPEND de :** - Story 1.3 : API bilingue, useApi composable - Story 1.4 : Layout minimal.vue, useSeo composable - Story 1.2 : API projects et skills fonctionnels **Cette story PRÉPARE pour :** - URL directe pour candidatures (usage recruteurs) - Alternative à l'expérience gamifiée ### Project Structure Notes **Fichiers à créer/modifier :** ``` frontend/app/ ├── pages/ │ └── resume.vue # CRÉER ├── public/ │ └── images/ │ └── avatar.jpg # AJOUTER (photo Célian) └── i18n/ ├── fr.json # MODIFIER (ajouter resume.*) └── en.json # MODIFIER (ajouter resume.*) ``` ### Performance - **Budget temps** : Chargement < 2s - **Données légères** : Skills (8-12 items), Projets (3-4 items) - **SSR** : Données chargées côté serveur pour SEO optimal - **Images** : Avatar optimisé via nuxt/image (WebP, dimensions fixes) ### References - [Source: docs/planning-artifacts/epics.md#Story-1.7] - [Source: docs/planning-artifacts/ux-design-specification.md#Page-Resume] - [Source: docs/prd-gamification.md#FR1] ### Technical Requirements | Requirement | Value | Source | |-------------|-------|--------| | Layout | minimal.vue | Architecture | | Temps lecture | ~30 secondes | UX Design | | Projets affichés | 3-4 featured | UX Design | | Skills affichés | 8-12 max | UX Design | | SSR | Required | NFR5 | ## Dev Agent Record ### Agent Model Used {{agent_model_name_version}} ### Debug Log References ### Completion Notes List ### Change Log | Date | Change | Author | |------|--------|--------| | 2026-02-03 | Story créée avec contexte complet | SM Agent | ### File List
{{ $t('resume.title') }}
{{ $t('resume.tagline') }}
contact@skycel.fr