Files
recipe-app/NEXT_STEPS.md
T

68 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Nästa steg
> Förslag på vad vi kan ta tag i nästa gång vi öppnar projektet.
> Se [README.md](README.md) för funktionsöversikt och [TEKNISK_BESKRIVNING.md](TEKNISK_BESKRIVNING.md) för teknisk detaljerinformation.
---
## Prioriterade förbättringar
### 1. Receptredigering fungerar fullt ut
Recept kan nu sparas men det finns inte stöd för att redigera ett befintligt recept (inklusive ingredienser). Kontrollera och testa `PATCH /api/recipes/:id` och frontend-vyn under `app/recipes/[id]/`.
### 2. Baslager kopplat mot inventariet
Just nu är baslager och inventariet separata. En naturlig nästa steg är att visa en indikator i baslagerlistan för vilka produkter som faktiskt finns i inventariet just nu — och med hur mycket.
### 3. Produktkategorier — definiera en fast lista
Kategorier skrivs in fritt i admin i dag. Det vore bättre med en dropdownlista med fördefinierade kategorier (t.ex. "Mejeri", "Kött & Fisk", "Torrvaror", osv.) för att hålla konsistens i datan och förbättra grupperingen i baslager-vyn.
### 4. Bild på recept
`imageUrl`-kolumnen finns i databasen (migrerad). Backend och frontend saknar stöd för att visa eller ladda upp receptbilder.
### 5. Filtrering och sortering av receptlistan
Receptlistan visas i dag utan möjlighet att filtrera eller sortera. Lägg till stöd för att filtrera på kategori/tagg och sortera på t.ex. namn eller senast tillagd. Kan implementeras i frontend (klientside) eller som query-parametrar till backend.
### 6. Layout och presentation av receptlistan
Receptlistan (`app/recipes/RecipeGrid.tsx`) är en enkel lista. Förbättra presentationen med t.ex. ett kortrutnät med bild, kortnamn och eventuellt tillagningstid — liknande ett receptkort i stil med en matblogg.
### 7. Matplanering
Lägg till en enkel veckomenylista: välj ett recept per dag, se en samlad ingredienslista och jämför mot inventariet. Kräver en ny `MealPlan`-modell i Prisma.
### 8. Portionsjustering av recept
Recept lagras utan portionsangivelse. Lägg till ett `servings`-fält (heltal, t.ex. 4) på `Recipe`-modellen och låt användaren ange önskat antal portioner i receptvyn. Alla ingrediensmängder räknas då om proportionellt (t.ex. recept för 4 → 6 pers: × 1,5). Implementationen berör:
- **Databas:** `servings Int?``Recipe` i Prisma + migration
- **Backend:** `servings` exponeras i `RecipeDto` och kan sättas vid create/update
- **Frontend (`app/recipes/[id]/`):** räknare för portioner (+ / ) bredvid ingredienslistan — beräkningen sker rent i klientkomponenten utan extra API-anrop
- **Receptskapande (`app/recipes/create/` och `write/`):** lägg till ett fält för grundportioner
- **Matplaneringen (`app/matplan/`):** inköpslistan bör ta hänsyn till önskat portionsantal per dag
---
## Teknisk skuld och städning
### A. CanonicalNameForm och NameForm — ta bort gamla filer
`frontend/app/admin/products/NameForm.tsx` och `CanonicalNameForm.tsx` ersattes av `EditProductForm.tsx`. Kontrollera om de gamla filerna fortfarande importeras och radera dem om inte.
### B. Seed-data i versionshantering
`data/matvaror_sverige.csv` och `data/seed_products.sql` ligger lokalt men är inte committade. Bestäm om de ska in i repot (för reproducerbarhet) eller hållas utanför.
### C. Enhetstester ✅
Jest + ts-jest är uppsatt. Tester finns för:
- `normalize-name.ts` — 10 tester
- `base.parser.ts` (`parseIngredientLine`) — 12 tester
- `recipes.service.ts` (`normalizeUnit`, `convertUnit`) — 17 tester
Kör med `npm test` i `backend/`.
### D. Validering av DTO:er i admin-actions
Frontend-server-actions saknar validering på inkommande fält (tom sträng, för lång sträng, osv.). Lägg till enkel `trim()` + max-längd-kontroll i `frontend/app/admin/products/actions.ts`.
---
## Produktdatabasen
193 svenska produkter är inseedad. Nästa naturliga steg:
- Lägg till fler saknade produkter som dyker upp vid receptimport
- Gå igenom produkter utan `canonicalName` i admin och fyll i dem
- Kontrollera att `category` är ifyllt för alla produkter (för bättre gruppering i baslager)