✨ Story 4.4: passions
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
Ready for Dev
|
review
|
||||||
|
|
||||||
## Story
|
## Story
|
||||||
|
|
||||||
@@ -20,23 +20,23 @@ Ready for Dev
|
|||||||
|
|
||||||
## Tasks / Subtasks
|
## Tasks / Subtasks
|
||||||
|
|
||||||
- [] **Task 1 : Ajouter la section dans about.php** (AC: 1)
|
- [x] **Task 1 : Ajouter la section dans about.php** (AC: 1)
|
||||||
- [] Titre "En dehors du code" ou "Mes passions"
|
- [x] Titre "En dehors du code" ou "Mes passions"
|
||||||
- [] Sous-titre engageant
|
- [x] Sous-titre engageant
|
||||||
|
|
||||||
- [] **Task 2 : Lister les hobbies** (AC: 1, 3)
|
- [x] **Task 2 : Lister les hobbies** (AC: 1, 3)
|
||||||
- [] 3-4 passions maximum (3 passions)
|
- [x] 3-4 passions maximum (3 passions)
|
||||||
- [] Description courte pour chaque
|
- [x] Description courte pour chaque
|
||||||
- [] Garder un ton professionnel
|
- [x] Garder un ton professionnel
|
||||||
|
|
||||||
- [] **Task 3 : Ajouter des visuels** (AC: 2, 5)
|
- [x] **Task 3 : Ajouter des visuels** (AC: 2, 5)
|
||||||
- [] Placeholders SVG avec gradients pour chaque passion
|
- [x] Placeholders SVG avec gradients pour chaque passion
|
||||||
- [] Grille responsive (1→2→3 colonnes)
|
- [x] Grille responsive (1→2→3 colonnes)
|
||||||
- [] Effet hover sur les cartes
|
- [x] Effet hover sur les cartes
|
||||||
|
|
||||||
- [] **Task 4 : Mentionner les projets personnels** (AC: 4)
|
- [x] **Task 4 : Mentionner les projets personnels** (AC: 4)
|
||||||
- [] Lien vers GitHub (https://github.com/skycel)
|
- [x] Lien vers GitHub (https://github.com/skycel)
|
||||||
- [] Carte dédiée aux projets open source
|
- [x] Carte dédiée aux projets open source
|
||||||
|
|
||||||
## Dev Notes
|
## Dev Notes
|
||||||
|
|
||||||
@@ -158,12 +158,14 @@ Le contenu doit :
|
|||||||
## Dev Agent Record
|
## Dev Agent Record
|
||||||
|
|
||||||
### Agent Model Used
|
### Agent Model Used
|
||||||
Claude Opus 4.5 (claude-opus-4-5-20251101)
|
GPT-5 Codex
|
||||||
|
|
||||||
### File List
|
### File List
|
||||||
| File | Action | Description |
|
| File | Action | Description |
|
||||||
|------|--------|-------------|
|
|------|--------|-------------|
|
||||||
| `pages/about.php` | Modified | Ajout section "En dehors du code" |
|
| `pages/about.php` | Modified | Ajout section "En dehors du code" |
|
||||||
|
| `tests/passions.test.php` | Created | Tests passions |
|
||||||
|
| `tests/run.ps1` | Modified | Ajout tests passions |
|
||||||
|
|
||||||
### Completion Notes
|
### Completion Notes
|
||||||
- 3 cartes passion avec placeholders SVG et gradients colorés
|
- 3 cartes passion avec placeholders SVG et gradients colorés
|
||||||
@@ -174,7 +176,7 @@ Claude Opus 4.5 (claude-opus-4-5-20251101)
|
|||||||
- Chaque carte a un effet hover sur le groupe
|
- Chaque carte a un effet hover sur le groupe
|
||||||
- Design cohérent avec les cartes du reste du site
|
- Design cohérent avec les cartes du reste du site
|
||||||
- Ton professionnel : chaque passion est reliée à des compétences transférables
|
- Ton professionnel : chaque passion est reliée à des compétences transférables
|
||||||
- Note: Les placeholders peuvent être remplacés par des vraies photos dans `/assets/img/hobbies/`
|
- Tests: `powershell -ExecutionPolicy Bypass -File tests/run.ps1`
|
||||||
|
|
||||||
### Debug Log References
|
### Debug Log References
|
||||||
Aucun problème rencontré.
|
Aucun problème rencontré.
|
||||||
@@ -184,4 +186,4 @@ Aucun problème rencontré.
|
|||||||
| Date | Version | Description | Author |
|
| Date | Version | Description | Author |
|
||||||
|------|---------|-------------|--------|
|
|------|---------|-------------|--------|
|
||||||
| 2026-01-22 | 0.1 | Création initiale | Sarah (PO) |
|
| 2026-01-22 | 0.1 | Création initiale | Sarah (PO) |
|
||||||
| 2026-01-23 | 1.0 | Implémentation complète | James (Dev) |
|
| 2026-02-04 | 1.0 | Implémentation complète | Amelia |
|
||||||
|
|||||||
@@ -132,6 +132,70 @@ include_template('navbar', compact('currentPage'));
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<div class="container-content">
|
||||||
|
<div class="section-header">
|
||||||
|
<h2 class="section-title">En Dehors du Code</h2>
|
||||||
|
<p class="section-subtitle">
|
||||||
|
Parce qu'un développeur a aussi une vie en dehors de l'écran.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||||
|
<div class="card group">
|
||||||
|
<div class="aspect-video overflow-hidden bg-gradient-to-br from-purple-500/20 to-pink-500/10 flex items-center justify-center">
|
||||||
|
<svg class="w-16 h-16 text-purple-300" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19V6l12-2v13"/>
|
||||||
|
<circle cx="6" cy="18" r="3"/>
|
||||||
|
<circle cx="18" cy="16" r="3"/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<h3 class="text-lg font-semibold mb-2">Musique</h3>
|
||||||
|
<p class="text-text-secondary text-sm">
|
||||||
|
Pratique régulière qui cultive la rigueur et l'écoute, des qualités utiles pour le travail d'équipe.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card group">
|
||||||
|
<div class="aspect-video overflow-hidden bg-gradient-to-br from-emerald-500/20 to-cyan-500/10 flex items-center justify-center">
|
||||||
|
<svg class="w-16 h-16 text-emerald-300" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7h8a4 4 0 014 4v2a4 4 0 01-4 4H8a4 4 0 01-4-4v-2a4 4 0 014-4z"/>
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 11h2M15 11h2"/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<h3 class="text-lg font-semibold mb-2">Jeux vidéo</h3>
|
||||||
|
<p class="text-text-secondary text-sm">
|
||||||
|
Passion qui nourrit la curiosité, l'optimisation et la recherche d'expériences fluides.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card group">
|
||||||
|
<div class="aspect-video overflow-hidden bg-gradient-to-br from-primary/20 to-primary/5 flex items-center justify-center">
|
||||||
|
<svg class="w-16 h-16 text-primary" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<h3 class="text-lg font-semibold mb-2">Projets Open Source</h3>
|
||||||
|
<p class="text-text-secondary text-sm mb-3">
|
||||||
|
Je contribue à des projets open source et développe mes propres outils sur mon temps libre.
|
||||||
|
</p>
|
||||||
|
<a href="https://github.com/skycel" target="_blank" rel="noopener" class="text-primary text-sm hover:underline inline-flex items-center gap-1">
|
||||||
|
Voir sur GitHub
|
||||||
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"/>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section class="section bg-surface">
|
<section class="section bg-surface">
|
||||||
<div class="container-content text-center">
|
<div class="container-content text-center">
|
||||||
<h2 class="text-heading mb-4">Envie d'en savoir plus ?</h2>
|
<h2 class="text-heading mb-4">Envie d'en savoir plus ?</h2>
|
||||||
|
|||||||
17
tests/passions.test.php
Normal file
17
tests/passions.test.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
require_once __DIR__ . '/../includes/functions.php';
|
||||||
|
|
||||||
|
function assertTrue($cond, $msg) {
|
||||||
|
if (!$cond) {
|
||||||
|
fwrite(STDERR, $msg . PHP_EOL);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$content = file_get_contents(__DIR__ . '/../pages/about.php');
|
||||||
|
assertTrue(strpos($content, 'En Dehors du Code') !== false, 'missing passions section');
|
||||||
|
assertTrue(strpos($content, 'Projets Open Source') !== false, 'missing open source card');
|
||||||
|
assertTrue(strpos($content, 'https://github.com/skycel') !== false, 'missing github link');
|
||||||
|
assertTrue(strpos($content, 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3') !== false, 'missing responsive grid');
|
||||||
|
|
||||||
|
fwrite(STDOUT, "OK\n");
|
||||||
@@ -18,4 +18,5 @@ php (Join-Path $here 'images.test.php')
|
|||||||
php (Join-Path $here 'skills.test.php')
|
php (Join-Path $here 'skills.test.php')
|
||||||
php (Join-Path $here 'tools.test.php')
|
php (Join-Path $here 'tools.test.php')
|
||||||
php (Join-Path $here 'about.test.php')
|
php (Join-Path $here 'about.test.php')
|
||||||
|
php (Join-Path $here 'passions.test.php')
|
||||||
'OK'
|
'OK'
|
||||||
Reference in New Issue
Block a user