Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1ac644eb3e | |||
| b7f78fc3ff |
+29
-2
@@ -1,6 +1,6 @@
|
||||
# Flutter Frontend - User Guide
|
||||
# Flutter Frontend - Användarguide
|
||||
|
||||
This README describes how to use the Flutter frontend for Recipe App from a user and operator perspective.
|
||||
Detta dokument beskriver hur du använder Flutter-frontenden för Recipe App ur ett användar- och operatörsperspektiv.
|
||||
|
||||
## Senaste ändringar (2026-04-25)
|
||||
|
||||
@@ -18,6 +18,33 @@ This README describes how to use the Flutter frontend for Recipe App from a user
|
||||
- **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.
|
||||
|
||||
## Vad appen är
|
||||
|
||||
Flutter-webben för Recipe App är en webbklient byggd med Flutter och körs i Docker med Caddy som proxy. Den är avsedd att ersätta den befintliga Next.js-frontenden och stödja framtida mobilklienter.
|
||||
|
||||
## 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).
|
||||
|
||||
## Relaterade dokument
|
||||
- [next_steps_flutter.md](next_steps_flutter.md)
|
||||
- [teknisk_beskrivning_flutter.md](teknisk_beskrivning_flutter.md)
|
||||
|
||||
@@ -9,12 +9,11 @@
|
||||
- Sprint 2: Användare-fliken stödjer nu Premium av/på direkt från användarmenyn.
|
||||
- Kodkvalitet: Inga absoluta Windows-sökvägar.
|
||||
- Dokumentation och next_steps uppdaterade.
|
||||
# Next Steps: Flutter-migrering
|
||||
# Nästa steg: Flutter-migrering
|
||||
|
||||
Relaterade dokument:
|
||||
- [flutter/README.md](flutter/README.md)
|
||||
- [README.md](README.md)
|
||||
- [teknisk_beskrivning_flutter.md](teknisk_beskrivning_flutter.md)
|
||||
- [TEKNISK_BESKRIVNING.md](TEKNISK_BESKRIVNING.md)
|
||||
|
||||
## Mål och prioriteringar för produktion
|
||||
|
||||
@@ -30,6 +29,20 @@ Relaterade dokument:
|
||||
3. Migreringen sker i Flutter-spåret som separat klient mot befintliga API-kontrakt.
|
||||
4. Next-frontend körs parallellt tills Flutter har verifierad parity i kärnflöden.
|
||||
|
||||
## Arbetsplan
|
||||
|
||||
### Pågående arbete
|
||||
- **Kvittoimport (Fas 6b):** Påbörjad men granskningssteg och bulk-spara återstår.
|
||||
- **Bildimport:** Säkerställa att containrar är uppdaterade med senaste kod och att diagnostikloggar syns vid felsökning.
|
||||
- **Adminfunktioner:** Avancerad AI-integration och ytterligare adminfunktioner planeras men är ej migrerade.
|
||||
|
||||
### Prioriterade nästa steg
|
||||
1. Slutför kvittoimport och bulk-spara.
|
||||
2. Säkerställa robust bildimport och diagnostik.
|
||||
3. Implementera avancerad AI-integration för produktkategorisering.
|
||||
4. Utöka adminfunktioner för användarhantering och produktadministration.
|
||||
5. Förbättra UI/UX för användarflöden, inklusive onboarding och profilhantering.
|
||||
|
||||
## Beslut 2026-04-22 - User-scope för pantry och matplan
|
||||
|
||||
- Pantry och matplan ska vara per användare, inte globala.
|
||||
@@ -334,3 +347,99 @@ En feature ar klar nar allt nedan ar uppfyllt:
|
||||
- Finslipa UI och tillgänglighet i samband med de nya navigationsmöjligheterna.
|
||||
- Färdigställ kvittoimport och adminfunktioner enligt plan.
|
||||
- Lägg till snabbfilter i Produkt-admin: "Visa endast ändrade rader" för inline-kategoribyten (planerad förbättring till nästa pass).
|
||||
|
||||
# Nästa steg: Flutter-migrering
|
||||
|
||||
Relaterade dokument:
|
||||
- [README.md](README.md)
|
||||
- [teknisk_beskrivning_flutter.md](teknisk_beskrivning_flutter.md)
|
||||
|
||||
## 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`.
|
||||
3. Migreringen sker i Flutter-spåret som separat klient mot befintliga API-kontrakt.
|
||||
4. Next-frontend körs parallellt tills Flutter har verifierad parity i kärnflöden.
|
||||
|
||||
## Arbetsplan
|
||||
|
||||
### Pågående arbete
|
||||
- **Kvittoimport (Fas 6b):** Påbörjad men granskningssteg och bulk-spara återstår.
|
||||
- **Bildimport:** Säkerställa att containrar är uppdaterade med senaste kod och att diagnostikloggar syns vid felsökning.
|
||||
- **Adminfunktioner:** Avancerad AI-integration och ytterligare adminfunktioner planeras men är ej migrerade.
|
||||
|
||||
### Prioriterade nästa steg
|
||||
1. Slutför kvittoimport och bulk-spara.
|
||||
2. Säkerställa robust bildimport och diagnostik.
|
||||
3. Implementera avancerad AI-integration för produktkategorisering.
|
||||
4. Utöka adminfunktioner för användarhantering och produktadministration.
|
||||
5. Förbättra UI/UX för användarflöden, inklusive onboarding och profilhantering.
|
||||
|
||||
## Plan för Implementering av Fas 6b
|
||||
|
||||
### 1. Slutför Kvittoimport
|
||||
- **Aktiviteter:**
|
||||
- Implementera parsers för kvitton (PDF, bildbaserade kvitton).
|
||||
- Utveckla gränssnitt för att granska importerade kvitton.
|
||||
- Implementera bulk-spara-funktionalitet för kvitton.
|
||||
|
||||
- **Tekniska Detaljer:**
|
||||
- Använd `pdf-parse` och `tesseract.js` för att extrahera data från kvitton.
|
||||
- Säkerställa att API-endpoints (`/receipt-import`) hanterar filuppladdning och returnerar strukturerad data.
|
||||
|
||||
### 2. Förbättra Bildhantering
|
||||
- **Aktiviteter:**
|
||||
- Säkerställa att `downloadAndOptimizeImage` fungerar korrekt i Docker-miljön.
|
||||
- Implementera robust felhantering och diagnostikloggning för bildimport.
|
||||
|
||||
- **Tekniska Detaljer:**
|
||||
- Använd miljövariabler för att definiera sökvägar för bildlagring.
|
||||
- Säkerställa att bilder optimeras och lagras korrekt på servern.
|
||||
|
||||
### 3. Säkerställa Kompatibilitet med Linux/Ubuntu
|
||||
- **Aktiviteter:**
|
||||
- Kontrollera att alla sökvägar är relativa eller konfigurerbara via miljövariabler.
|
||||
- Säkerställa att Docker-miljön är korrekt konfigurerad för att köra på Ubuntu.
|
||||
|
||||
- **Tekniska Detaljer:**
|
||||
- Använd `path.join()` för att bygga sökvägar på ett plattformsoberoende sätt.
|
||||
- Säkerställa att `IMAGE_DEST_DIR` är korrekt konfigurerad för Linux/Ubuntu.
|
||||
|
||||
### 4. Förbättra API-Integration
|
||||
- **Aktiviteter:**
|
||||
- Säkerställa att API-endpoints har korrekt felhantering och tidsgränser.
|
||||
- Implementera robusta tidsgränser och återförsöksmekanismer för API-anrop.
|
||||
|
||||
- **Tekniska Detaljer:**
|
||||
- Använd `http.Client` med korrekta tidsgränser för API-anrop.
|
||||
- Implementera återförsöksmekanismer för tillfälliga fel.
|
||||
|
||||
## Verifiering och Testning
|
||||
|
||||
### 1. Enhets- och Integrationstester
|
||||
- **Aktiviteter:**
|
||||
- Skapa enhets- och integrationstester för nya parsers och API-endpoints.
|
||||
- Säkerställa att alla tester körs i Docker-miljön.
|
||||
|
||||
- **Tekniska Detaljer:**
|
||||
- Använd `flutter test` för att köra enhetstester.
|
||||
- Använd `jest` eller `supertest` för att testa API-endpoints.
|
||||
|
||||
### 2. Manuell Testning
|
||||
- **Aktiviteter:**
|
||||
- Manuell testning av kvittoimport och bulk-spara-funktionalitet.
|
||||
- Säkerställa att bildhantering fungerar korrekt i Docker-miljön.
|
||||
|
||||
- **Tekniska Detaljer:**
|
||||
- Använd Postman eller liknande verktyg för att testa API-endpoints.
|
||||
- Säkerställa att gränssnittet för kvittoimport fungerar som förväntat.
|
||||
|
||||
## Slutsats
|
||||
För att slutföra Fas 6b krävs implementering av parsers för kvitton, förbättringar av bildhantering, och säkerställande av kompatibilitet med Linux/Ubuntu. En robust API-integration och omfattande testning är avgörande för att säkerställa att importfunktionen fungerar som förväntat i produktion.
|
||||
@@ -21,6 +21,39 @@ Viktigt att komma ihåg vid implementering av nya funktioner och kodning är att
|
||||
- Web först, men med arkitektur som kan återanvändas för Android/iOS.
|
||||
- Stegvis migrering av funktioner från befintlig Next.js-frontend.
|
||||
|
||||
## Arkitektur
|
||||
|
||||
### Lager
|
||||
- **Presentation:** Skärmar och widgets i `flutter/lib/features/*/presentation`.
|
||||
- **State/Application:** Riverpod providers/notifiers i `flutter/lib/features/*/data`.
|
||||
- **Data/API:** `ApiClient` i `flutter/lib/core/api`.
|
||||
- **Platform abstraction:** Token storage interface i `flutter/lib/core/platform`.
|
||||
|
||||
### Routing
|
||||
- GoRouter i [flutter/lib/core/router/app_router.dart](flutter/lib/core/router/app_router.dart).
|
||||
- Nuvarande routes:
|
||||
- `/login` — loginskärm
|
||||
- `/recipes` — receptlista (ShellRoute med AppShell)
|
||||
- `/recipes/create` — nytt recept, utanför ShellRoute
|
||||
- `/recipes/:id` — receptdetalj, utanför ShellRoute
|
||||
- `/recipes/:id/edit` — redigera recept, utanför ShellRoute
|
||||
- `/profile` — profil (ShellRoute med AppShell)
|
||||
- `/recipes/create` måste vara listad före `/recipes/:id` i routelistan för att undvika konflikt.
|
||||
- Detaljsidor (detalj, skapa, redigera) ligger utanför ShellRoute för att få full-screen med automatisk back-knapp.
|
||||
|
||||
### Auth
|
||||
- Login endpoint: `POST /api/auth/login`.
|
||||
|
||||
## Övrigt
|
||||
- **Kvittoimport (Fas 6b):** Påbörjad men granskningssteg och bulk-spara återstår.
|
||||
- **Bildimport:** Säkerställa att containrar är uppdaterade med senaste kod och att diagnostikloggar syns vid felsökning.
|
||||
- **Adminfunktioner:** Avancerad AI-integration och ytterligare adminfunktioner planeras men är ej migrerade.
|
||||
|
||||
## Syfte och mål
|
||||
- Isolerad Flutter-baserad frontend i separat Docker-service.
|
||||
- Web först, men med arkitektur som kan återanvändas för Android/iOS.
|
||||
- Stegvis migrering av funktioner från befintlig Next.js-frontend.
|
||||
|
||||
## Relaterade dokument
|
||||
- [next_steps_flutter.md](next_steps_flutter.md)
|
||||
- [README.md](README.md)
|
||||
|
||||
Reference in New Issue
Block a user