feat: implement Iteration 5 — home screen dashboard

Backend:
- internal/home: GET /home/summary endpoint
  - Today's meal plan from menu_plans/menu_items
  - Logged calories sum from meal_diary
  - Daily goal from user profile (default 2000)
  - Expiring products within 3 days
  - Last 3 saved recommendations (no AI call on home load)
- Wire homeHandler in server.go and main.go

Flutter:
- shared/models/home_summary.dart: HomeSummary, TodaySummary,
  TodayMealPlan, ExpiringSoon, HomeRecipe
- features/home/home_service.dart + home_provider.dart
- features/home/home_screen.dart: greeting, calorie progress bar,
  today's meals card, expiring banner, quick actions row,
  recommendations horizontal list

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
dbastrikin
2026-02-22 15:25:28 +02:00
parent d53e019d90
commit 9530dc6ff9
8 changed files with 899 additions and 4 deletions

View File

@@ -15,6 +15,7 @@ import (
"github.com/food-ai/backend/internal/database"
"github.com/food-ai/backend/internal/diary"
"github.com/food-ai/backend/internal/gemini"
"github.com/food-ai/backend/internal/home"
"github.com/food-ai/backend/internal/ingredient"
"github.com/food-ai/backend/internal/menu"
"github.com/food-ai/backend/internal/middleware"
@@ -122,6 +123,9 @@ func run() error {
diaryRepo := diary.NewRepository(pool)
diaryHandler := diary.NewHandler(diaryRepo)
// Home domain
homeHandler := home.NewHandler(pool)
// Router
router := server.NewRouter(
pool,
@@ -134,6 +138,7 @@ func run() error {
recognitionHandler,
menuHandler,
diaryHandler,
homeHandler,
authMW,
cfg.AllowedOrigins,
)