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:
+42
-52
@@ -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:**
|
**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.
|
- 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.
|
- RecipesScreen är nu body-only, ingen egen Scaffold/AppBar.
|
||||||
- AppShell visar grid-ikon endast på /recipes.
|
- AppShell visar grid-ikon endast på /recipes.
|
||||||
- Buggfix: Produktväljaren i pantry/inventarie (ProductPickerField) — bottenark implementeras.
|
- 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.
|
- 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 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.
|
- **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.
|
- **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). Backend och Prisma-schema är migrerade.
|
- **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.
|
- **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
|
## Kända begränsningar
|
||||||
- Kvittoimport (Fas 6b) är påbörjad men granskningssteg och bulk-spara återstår.
|
- 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.
|
- 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.
|
- 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)
|
## Nyheter och förbättringar (2026-04-24)
|
||||||
|
|
||||||
- **Navigations- och UX-förbättringar:**
|
- **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 att ett recept redigerats, navigeras användaren nu automatiskt till receptdetaljer.
|
||||||
- Efter konsumtion av inventariepost navigeras användaren automatiskt tillbaka till inventarielistan.
|
- Efter konsumtion av inventariepost navigeras användaren automatiskt tillbaka till inventarielistan.
|
||||||
- Efter import av recept navigeras användaren automatiskt till receptlistan.
|
- Efter import av recept navigeras användaren automatiskt till receptlistan.
|
||||||
- Mjukare scrollning i receptdetaljvyn och förbättrad bakgrundsbildshantering.
|
- Mjukare scrollning i receptdetaljvyn och förbättrad bakgrundsbildshantering.
|
||||||
- **Kodkvalitet:**
|
- **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.
|
- 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.
|
|
||||||
|
|||||||
@@ -16,7 +16,14 @@ Relaterade dokument:
|
|||||||
- [teknisk_beskrivning_flutter.md](teknisk_beskrivning_flutter.md)
|
- [teknisk_beskrivning_flutter.md](teknisk_beskrivning_flutter.md)
|
||||||
- [TEKNISK_BESKRIVNING.md](TEKNISK_BESKRIVNING.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.
|
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`.
|
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] 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.
|
- [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
|
||||||
- [ ] Implementera granskningssteg för kvittoimport.
|
- **Mål:** Säkerställa att alla kärnfunktioner är stabila och buggfria.
|
||||||
- [ ] 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
|
- **Åtgärder:**
|
||||||
- [ ] **Adminpaneler:**
|
- [ ] **Kvittoimport (OCR, bulk-spara):**
|
||||||
- [ ] Lägg till tydlig placeholder-text i sökfältet.
|
- [ ] Implementera granskningssteg för kvittoimport.
|
||||||
- [ ] Gör filtreringsalternativen mer visuellt tydliga.
|
- [ ] Bulk-spara för bekräftade rader.
|
||||||
- [ ] Lägg till bekräftelsedialog för bulk-åtgärder.
|
- [ ] Säkerställa att `file_picker: ^8.0.0` är integrerat för filval på Flutter Web.
|
||||||
- [ ] 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
|
- [ ] **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.
|
- **Mål:** Säkerställa att användare snabbt får värde och förstår appens fördelar.
|
||||||
|
|
||||||
- **Åtgärder:**
|
- **Åtgärder:**
|
||||||
@@ -100,7 +114,7 @@ För v1 ska dessa flöden vara stabila i Flutter:
|
|||||||
- **Möjlighet att hoppa över onboarding:**
|
- **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.
|
- [ ] 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.
|
- **Mål:** Identifiera friktion och förbättra konverteringsvägen.
|
||||||
|
|
||||||
- **Åtgärder:**
|
- **Å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.
|
- [ ] 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.
|
- [ ] 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.
|
- **Mål:** Se till att marknadsföring och CTAs talar direkt till målgruppen.
|
||||||
|
|
||||||
- **Åtgärder:**
|
- **Åtgärder:**
|
||||||
|
|||||||
Reference in New Issue
Block a user