How rickmelendez/kleenbelly works
KleenBelly is a Flutter calorie-tracking app backed by FastAPI microservices. The main user workflow is to search or create foods, log meals and activity, then view nutrition summaries; profile management and AI-assisted logging/coaching are additional capabilities. The gateway authenticates and proxies requests, while services own their domain logic and persist through Supabase. Mobile implementation files and some gateway/service internals are absent from the supplied tree or excerpts, so their detailed wiring is not inferred.
Main entry points: main.py API gateway · use_cases AI use cases · nutrition_routes.py Nutrition routes · user_routes.py Profile routes
Components 21
Mobile client
- Flutter app
mobile/kleenbelly_app
API edge
- API gateway
backend/api-gateway/main.py - Auth middleware
backend/shared/middleware/auth_middleware.py
Domain services
- Profile routes
backend/user-service/src/presentation/routes/user_routes.py - Profile use cases
backend/user-service/src/application/use_cases - User repository
backend/user-service/src/infrastructure/repositories/supabase_user_repository.py - Food routes
backend/food-service/src/presentation/routes/food_routes.py - Food use cases
backend/food-service/src/application/use_cases - Food repository
backend/food-service/src/infrastructure/repositories/supabase_food_repository.py - Open Food Facts
backend/food-service/src/infrastructure/open_food_facts_client.py - Nutrition routes
backend/nutrition-service/src/presentation/routes/nutrition_routes.py - Nutrition use cases
backend/nutrition-service/src/application/use_cases - Meal repository
backend/nutrition-service/src/infrastructure/repositories/supabase_meal_repository.py - AI routes
backend/ai-service/src/presentation/routes/ai_routes.py - AI use cases
backend/ai-service/src/application/use_cases
Persistence
- Supabase
backend/shared/database/supabase_client.py - Supabase Auth
AI integrations
- Nutrition tools
backend/ai-service/src/infrastructure/nutrition_tools.py - Claude API
backend/ai-service/src/infrastructure/claude_client.py - Speech APIs
backend/ai-service/src/infrastructure/fish_audio_client.py
Other components
- App user
Connections 25
- App user → Flutter app: uses
- Flutter app → API gateway: sends HTTP
- API gateway → Auth middleware: validates requests
- API gateway → Profile routes: proxies profile
- API gateway → Food routes: proxies food
- API gateway → Nutrition routes: proxies nutrition
- API gateway → AI routes: proxies AI
- Profile routes → Profile use cases: invokes
- Profile routes → User repository: deletes account
- Profile use cases → User repository: reads/writes
- Food routes → Food use cases: invokes
- Food use cases → Food repository: searches/stores
- Food repository → Supabase: reads/writes
- Food repository → Open Food Facts: looks up foods
- Food routes → Auth middleware: uses user identity
- Nutrition routes → Nutrition use cases: invokes
- Nutrition routes → Meal repository: reads/writes
- Nutrition use cases → Meal repository: reads/writes
- Meal repository → Supabase: reads/writes
- AI routes → AI use cases: invokes
- AI use cases → Claude API: requests completions
- AI use cases → Speech APIs: transcribes audio
- AI use cases → Nutrition tools: uses agent tools
- Nutrition tools → Nutrition routes: calls nutrition API
- Auth middleware → Supabase Auth: validates JWT