docs(01-02): complete static data migration plan summary
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user