diff --git a/flutter/README.md b/flutter/README.md index 52995c30..f99ebe02 100644 --- a/flutter/README.md +++ b/flutter/README.md @@ -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. diff --git a/flutter/next_steps_flutter.md b/flutter/next_steps_flutter.md index aecee368..edd7f3d6 100644 --- a/flutter/next_steps_flutter.md +++ b/flutter/next_steps_flutter.md @@ -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) -- [ ] 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. +### Fas 1: Kritiska funktioner och buggfixar +- **Mål:** Säkerställa att alla kärnfunktioner är stabila och buggfria. -### 2. UI/UX-förbättringar -- [ ] **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. +- **Å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. -### 3. Förbättra konverteringsvägen och onboarding + - [ ] **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. + +### 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:**