Backend :
- Migration 007 : list_type VARCHAR(20) sur shopping.lists (weekly/project),
url/description/image_url sur shopping.list_items
- Modèle ShoppingList : champ list_type
- Modèle ListItem : champs url, description, image_url
- Schémas : list_type sur Create/Response, nouveaux champs sur ItemCreate/Update/Response
- _unique_week_label() : évite les doublons S22 2026 → S22 2026 (2)
- finish_shopping : carry-over uniquement pour list_type='weekly'
Frontend :
- api/shopping.ts : list_type, champs enrichis item, createProjectList()
- ProjectItemCard.tsx : carte avec image, description, URL, boutique, cochage
- ShoppingPage :
· Séparation weekly / project dans la sélection de liste active
· Section "Listes projet" sur l'écran vide avec navigation
· Badge PROJET dans l'en-tête
· Bouton "Clôturer la semaine" et badge "semaine dépassée" masqués sur projet
· Bouton "+ Ajouter" (mobile + laptop) sur les listes projet
· Vue grille ProjectItemCard pour les listes projet
· Modale création liste projet (nom + boutique)
· Modale ajout/édition item projet (nom, description, URL, image URL)
v0.5.14
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>