docs(01-02): complete static data migration plan summary

This commit is contained in:
2026-04-08 15:00:27 +02:00
parent cfb3fce2e1
commit fa143af729
@@ -0,0 +1,74 @@
---
phase: 01-foundation
plan: 02
subsystem: data-layer
tags: [data, composables, i18n, images]
dependency_graph:
requires: [01-01]
provides: [data-projects, data-testimonials, data-faq, data-techstack, composable-useProjects]
affects: [all-pages, project-detail]
tech_stack:
added: []
patterns: [i18n-keys-for-text, public-images, nuxt-auto-imports]
key_files:
created:
- app/data/projects.ts
- app/data/testimonials.ts
- app/data/faq.ts
- app/data/techstack.ts
- app/composables/useProjects.ts
- public/images/ (74 WebP files)
modified:
- shared/types/index.ts
decisions:
- Added title/description/longDescription to Project interface (missing from Plan 01 types)
metrics:
duration: ~3min
completed: 2026-04-08
---
# Phase 01 Plan 02: Static Data Migration Summary
Migration des 4 fichiers de donnees statiques, 74 images WebP, et creation du composable useProjects() avec support i18n natif Nuxt.
## Commits
| Task | Commit | Description |
|------|--------|-------------|
| 1 | `2b97bc7` | Migrate static data files and images to Nuxt structure |
| 2 | `55019f6` | Create useProjects() composable with i18n support |
## What Was Done
### Task 1: Static Data & Images Migration
- Created 4 data files in `app/data/` importing types from `~~/shared/types`
- Copied 74 WebP images (70 root + 4 flowboard gallery) to `public/images/`
- All image paths use `/images/` instead of `@/assets/images/`
- FAQ data uses i18n keys (`questionKey`, `answerKey`, `featuresKey`) instead of direct text
- Projects data stored as `Omit<Project, 'title' | 'description' | 'longDescription'>[]` since text comes from i18n
### Task 2: useProjects() Composable
- Created Nuxt-native composable using auto-imports (`computed`, `useI18n`, `Ref`)
- Returns: `projects`, `featuredProjects`, `filterByCategory()`, `search()`, `findById()`
- i18n keys follow `projects.${id}.title` pattern
- Typecheck passes cleanly
## Deviations from Plan
### Auto-fixed Issues
**1. [Rule 3 - Blocking] Added title/description/longDescription to Project interface**
- **Found during:** Task 2
- **Issue:** Plan 01 created Project interface without title/description/longDescription fields, but useProjects() maps these from i18n
- **Fix:** Added `title: string`, `description: string`, `longDescription?: string` to Project in shared/types/index.ts
- **Files modified:** shared/types/index.ts
- **Commit:** 55019f6
## Verification
- `npx nuxi typecheck` exits cleanly (0)
- No file in app/data/ contains `@/assets/images/`
- useProjects() exports 5 members: projects, featuredProjects, filterByCategory, search, findById
- public/images/ contains 74 WebP files
## Self-Check: PASSED