3.3 KiB
3.3 KiB
Teknisk Beskrivning - Flutter Frontend
Detta dokument beskriver vad som ar byggt, arkitekturval och teknisk kontext for Flutter-frontenden. Malgrupp: utvecklare och AI-assistent i denna chat.
Relaterade dokument:
- next_steps_flutter.md
- flutter/README.md
- teknisk_beskrivning.md (for backend-kontekst)
Syfte
- Isolerad Flutter-baserad frontend i separat Docker-service.
- Web forst, men med arkitektur som kan ateranvandas for Android/iOS.
- Stegvis migrering av funktioner fran befintlig Next.js-frontend.
Vad som ar gjort
- Ny compose override: compose.flutter.yml.
- Ny Flutter-service:
recipe-flutter. - Service ansluten till natverk:
recipe-internal(backend access)proxy(external Caddy reachability)
- Flutter-container serverar web build via intern Caddy.
- Exponering via extern Caddy med site
test.gynther.se->recipe-flutter:5000. - API anrop gar same-origin via
/apioch proxas internt tillrecipe-api:8080.
Arkitektur
Lager
- Presentation: skarmar och widgets i
flutter/lib/features/*/presentation. - State/Application: Riverpod providers/notifiers i
flutter/lib/features/*/data. - Data/API:
ApiClientiflutter/lib/core/api. - Platform abstraction: token storage interface i
flutter/lib/core/platform.
Routing
- GoRouter i flutter/lib/core/router/app_router.dart.
- Nuvarande routes:
/login/recipes/profile
Auth
- Login endpoint:
POST /api/auth/login. - Backend kontrakt anvander
username+password. - Token-falt i svar:
accessToken. - Token lagras via
ITokenStorage(web implementation med SharedPreferences).
Recipes
- Recipes endpoint:
GET /api/recipes. - Flutter model ar hardad for backend-falt (
namefallback tilltitle) och null-safe parsing.
Drift och deploy
Build/run
- Build argument i compose:
API_BASE_URL=/api. - Build command:
docker compose -f compose.yml -f compose.flutter.yml build recipe-flutter
- Run command:
docker compose -f compose.yml -f compose.flutter.yml up -d --no-deps recipe-flutter
Viktiga verifieringar
- Compose merge valid:
docker compose -f compose.yml -f compose.flutter.yml config
- Container reachable from external Caddy:
docker exec caddy wget -S -O- http://recipe-flutter:5000
- Public endpoint:
curl -I https://test.gynther.se
Viktiga beslut
compose.ymllamnas orord; Flutter ligger i separat override-fil.- Flutter-web anvander same-origin API (
/api) for att undvika mixed-content. - Intern Caddy i Flutter-container hanterar static hosting +
/apiproxy. - Feature migration sker stegvis enligt next_steps_flutter.md.
Kanda fallgropar
- Om
recipe-flutterinte ar iproxynatverket blir det 502 fran extern Caddy. - Om browser visar gammal JS kan gamla API-URL:er leva kvar i cache/service worker.
- Login med email fungerar inte om backend forvantar username.
Nasta tekniska steg
Fortsatt migrering enligt prioritering i next_steps_flutter.md:
- Auth parity (session behavior refinements).
- Recipes parity (list -> detail -> create/edit).
- Inventory and meal plan pages.
- Profile/admin parity.