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