feat: update README and next steps documentation with new features, UX improvements, and production goals

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Nils-Johan Gynther
2026-04-25 10:23:18 +02:00
parent bae6fc3337
commit 5103cac112
2 changed files with 84 additions and 80 deletions
+42 -52
View File
@@ -1,78 +1,68 @@
# Senaste ändringar (2026-04-24)
# Flutter Frontend - User Guide
This README describes how to use the Flutter frontend for Recipe App from a user and operator perspective.
## Senaste ändringar (2026-04-25)
**Arkitektur- och UX-förbättringar:**
- Grid-vy för recept: Kolumnval (2/4/6/8) via ikon i AppShell, med Riverpod-provider och SharedPreferences.
- RecipesScreen är nu body-only, ingen egen Scaffold/AppBar.
- AppShell visar grid-ikon endast på /recipes.
- Buggfix: Produktväljaren i pantry/inventarie (ProductPickerField) — bottenark implementeras.
- Sprint 2: Databas > Produkter har fått en inbäddad produktadminpanel med sök, okategoriserat-filter och bulk-kategorisering.
- Sprint 2: Admin kan nu slå Premium av/på för användare direkt i Användare-fliken.
- Kodkvalitet: Inga absoluta Windows-sökvägar.
- Dokumentation och next_steps uppdaterade.
# Flutter Frontend - User Guide
This README describes how to use the Flutter frontend for Recipe App from a user and operator perspective.
Related documents:
- [next_steps_flutter.md](../next_steps_flutter.md)
- [teknisk_beskrivning_flutter.md](../teknisk_beskrivning_flutter.md)
## What this app is
This is a Flutter Web frontend for Recipe App, served in Docker and exposed through Caddy.
It is intended to behave like the existing web frontend, but built in Flutter to support future Android and iOS clients.
## Current user flows
- Login with username and password.
- Recipe list view after login.
- Profile page (base version).
- Logout from recipe/profile pages.
## Where to access it
- Test environment: `https://test.gynther.se`
## Login details
- Login expects username, not email.
- Example seeded admin user in backend bootstrap: `Nadmin`.
- Password is controlled by server environment variable (`ADMIN_NADMIN_PASSWORD`).
## Known current scope
This is an active migration track. Not all pages from the existing frontend are moved yet.
Planned migration sequence is documented in [next_steps_flutter.md](../next_steps_flutter.md).
## Troubleshooting (user level)
1. If page shows old behavior after deploy: hard refresh or open in incognito.
2. If login fails: verify username/password (not email).
3. If recipes do not load: report browser console/network errors to the dev team.
## Release expectation
This frontend is available for iterative testing. Feature parity with the current production frontend is delivered step by step.
---
## Nyheter och förbättringar (2026-04-22)
**Nyheter och förbättringar:**
- **Fas 5: Matplan parity** — Veckovy, portionsjustering per dag, inköpslista och inventariejämförelse mot användarens pantry är nu fullt migrerade och user-scopade.
- **Fas 6a: Receptimport** — Importflöde för recept (fil/URL) är nu robust, med stöd för PDF, bild och ICA-länkar. Prefill av markdown och bild-url fungerar i Flutter.
- **Bildimport** — Backend och Flutter har förbättrats med robust bildhantering, normalisering av URL:er, fallback och diagnostikloggning. Bilden sparas och kopplas till receptet vid import.
- **User-scope för pantry och matplan** — Alla baslager- och matplansdata är nu per användare (inte globala). Backend och Prisma-schema är migrerade.
- **Bildimport** — Backend och Flutter har förbättrats med robust bildhantering, normalisering av URL:er, fallback och diagnostikloggning.
- **User-scope för pantry och matplan** — Alla baslager- och matplansdata är nu per användare (inte globala).
- **UI/UX-förbättringar** — Produktval med bottenark (ProductPickerField), swipe-för-±1 på inventarielistan (SwipeableInventoryTile), och förbättrad felhantering.
- **Felsökningslogg** — Se `../IMPORT_IMAGE_DEBUG_2026-04-22.md` för detaljerad felsökningshistorik kring bildimport.
## Relaterade dokument
- [next_steps_flutter.md](next_steps_flutter.md)
- [teknisk_beskrivning_flutter.md](teknisk_beskrivning_flutter.md)
## Vad appen är
Detta är en Flutter Web frontend för Recipe App, som körs i Docker och exponeras via Caddy. Den är avsedd att bete sig som den befintliga webbfrontenden, men är byggd i Flutter för att stödja framtida Android- och iOS-klienter.
## Aktuella användarflöden
- Inloggning med användarnamn och lösenord.
- Receptlista efter inloggning.
- Profil-sida (grundversion).
- Utloggning från recept- och profil-sidor.
## Var man kommer åt appen
- Testmiljö: `https://test.gynther.se`
## Inloggningsdetaljer
- Inloggning förväntar sig användarnamn, inte e-post.
- Exempel på seedad admin-användare i backend: `Nadmin`.
- Lösenordet kontrolleras av servermiljövariabeln (`ADMIN_NADMIN_PASSWORD`).
## Kända begränsningar
- Kvittoimport (Fas 6b) är påbörjad men granskningssteg och bulk-spara återstår.
- Bildimport kräver att containrar är uppdaterade med senaste kod — kontrollera att diagnostikloggar syns vid felsökning.
- Vissa adminfunktioner och avancerad AI-integration är planerade men ej migrerade.
## Felsökning (användarnivå)
1. Om sidan visar gammalt beteende efter deployment: hård uppdatering eller öppna i inkognitoläge.
2. Om inloggning misslyckas: verifiera användarnamn/lösenord (inte e-post).
3. Om recept inte laddas: rapportera fel i webbläsarkonsolen/nätverksfelen till utvecklingsteamet.
## Förväntningar vid release
Denna frontend är tillgänglig för iterativ testning. Funktionell parity med den nuvarande produktionsfrontenden levereras stegvis.
---
## Nyheter och förbättringar (2026-04-24)
- **Navigations- och UX-förbättringar:**
- Lagt till tydliga navigationslänkar mellan recept, inventarie, baslager och matplan för att förenkla användarflödet.
- Tydliga navigationslänkar mellan recept, inventarie, baslager och matplan för att förenkla användarflödet.
- Efter att ett recept redigerats, navigeras användaren nu automatiskt till receptdetaljer.
- Efter konsumtion av inventariepost navigeras användaren automatiskt tillbaka till inventarielistan.
- Efter import av recept navigeras användaren automatiskt till receptlistan.
- Mjukare scrollning i receptdetaljvyn och förbättrad bakgrundsbildshantering.
- **Kodkvalitet:**
- Säkerställt att inga absoluta Windows-sökvägar används i koden, för att stödja bygg och drift på Linux/Ubuntu.
- **Teknisk dokumentation:**
- Dokumentation och next_steps uppdaterade med dagens förändringar.
+22 -8
View File
@@ -16,7 +16,14 @@ Relaterade dokument:
- [teknisk_beskrivning_flutter.md](teknisk_beskrivning_flutter.md)
- [TEKNISK_BESKRIVNING.md](TEKNISK_BESKRIVNING.md)
## Icke-förhandlingsbara ramar
## Mål och prioriteringar för produktion
### Övergripande mål
- **Funktionell parity:** Säkerställa att alla kärnfunktioner är stabila och fungerar som förväntat.
- **Användarupplevelse:** Förenkla onboarding och säkerställa att användare snabbt förstår appens värde.
- **Produktionsklar:** Säkerställa att appen är redo för lansering genom att adressera kritiska buggar och förbättra prestanda.
### Icke-förhandlingsbara ramar
1. Inget ska tas bort eller ändras i `recipe-api` utom explicit beslutade backend-ändringar för användarscope i pantry och matplan.
2. Inget ska tas bort eller ändras i `recipe-frontend`.
@@ -40,34 +47,41 @@ För v1 ska dessa flöden vara stabila i Flutter:
- [x] Produktadmin: lista, sök, sortera, filtrera, AI-kategorisering, merge, restore, inline kategori.
- [x] Användaradmin: lista, premium, e-post, skapa, ta bort, återställ lösenord.
## Arbetsordning för nästa sprint (2026-04-25)
## Arbetsordning för produktion
### 1. Kvittoimport (OCR, bulk-spara)
### Fas 1: Kritiska funktioner och buggfixar
- **Mål:** Säkerställa att alla kärnfunktioner är stabila och buggfria.
- **Åtgärder:**
- [ ] **Kvittoimport (OCR, bulk-spara):**
- [ ] Implementera granskningssteg för kvittoimport.
- [ ] Bulk-spara för bekräftade rader.
- [ ] Säkerställa att `file_picker: ^8.0.0` är integrerat för filval på Flutter Web.
### 2. UI/UX-förbättringar
- [ ] **Adminpaneler:**
- [ ] **UI/UX-förbättringar för adminpaneler:**
- [ ] Lägg till tydlig placeholder-text i sökfältet.
- [ ] Gör filtreringsalternativen mer visuellt tydliga.
- [ ] Lägg till bekräftelsedialog för bulk-åtgärder.
- [ ] Förbättra laddningsindikatorn för AI-kategorisering.
- [ ] **Receptvy:**
- [ ] Lägg till tydlig växlingsknapp för grid- och listvy.
- [ ] Implementera sorteringsalternativ.
- [ ] Förbättra det tomma tillståndet med en tydlig CTA.
- [ ] **Receptdetaljvy:**
- [ ] Lägg till stöd för att visa receptbilder i större format.
- [ ] Gör ingredienslistan mer läsbar.
- [ ] **Gemensamma UI-komponenter:**
- [ ] Förbättra felmeddelanden med tydliga instruktioner.
- [ ] Använd en visuellt tilltalande laddningsindikator.
- [ ] **Allmänt:**
- [ ] Säkerställa tillgänglighet med tydliga `tooltip`-texter och tillräcklig kontrast.
- [ ] Lägg till bekräftelsemeddelanden efter åtgärder.
### 3. Förbättra konverteringsvägen och onboarding
### Fas 2: Förbättra konverteringsvägen och onboarding
- **Mål:** Säkerställa att användare snabbt får värde och förstår appens fördelar.
- **Åtgärder:**
@@ -100,7 +114,7 @@ För v1 ska dessa flöden vara stabila i Flutter:
- **Möjlighet att hoppa över onboarding:**
- [ ] Lägg till en knapp som låter användare hoppa över onboarding och börja använda appen direkt.
### 4. Testa och iterera
### Fas 3: Testa och iterera
- **Mål:** Identifiera friktion och förbättra konverteringsvägen.
- **Åtgärder:**
@@ -108,7 +122,7 @@ För v1 ska dessa flöden vara stabila i Flutter:
- [ ] A/B-testa olika CTAs och onboarding-flöden för att se vad som fungerar bäst.
- [ ] Implementera analytik för att spåra var användare hoppar av och varför.
### 5. Anpassa till målgruppen
### Fas 4: Anpassa till målgruppen
- **Mål:** Se till att marknadsföring och CTAs talar direkt till målgruppen.
- **Åtgärder:**