# niikhilraj/nourish-app architecture

> Architecture diagram of the GitHub repository niikhilraj/nourish-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/niikhilraj/nourish-app
- Repository: https://github.com/niikhilraj/nourish-app

## Overview

Nourish is a cross-platform Flutter nutrition app. Its user journey spans onboarding and nutrition goals, meal logging by date, nutrition summaries, barcode-based food lookup, and recipe discovery; profile and theme settings support that core journey. The tree identifies feature screens, providers, DAOs, and backend services, while the README documents the product capabilities. The sampled source is platform startup boilerplate, so feature-level call wiring is not verified; arrows are limited to documented navigation and named service relationships.

Main entry points: [`lib/router.dart`](https://github.com/niikhilraj/nourish-app/blob/master/lib/router.dart) (Navigation), [`lib/main.dart`](https://github.com/niikhilraj/nourish-app/blob/master/lib/main.dart) (Flutter app), [`lib/screens/food_info`](https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/food_info) (Barcode food lookup), [`lib/screens/onboarding`](https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/onboarding) (Onboarding)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["App experience"]
  node_app["Flutter app<br/>[main.dart]"]
  node_navigation["Navigation<br/>[router.dart]"]
  node_onboarding["Onboarding"]
  node_profile["Profile and BMR"]
  node_theme["Theme settings"]
end

subgraph group_nutrition["Nutrition tracking"]
  node_dashboard["Nutrition dashboard"]
  node_meal_log["Meal log calendar"]
  node_add_meal["Add meal"]
end

subgraph group_discovery["Food and recipes"]
  node_food_lookup["Barcode food lookup"]
  node_food_service["Food facts service"]
  node_recipe_discovery["AI recipe discovery"]
  node_saved_recipes["Saved recipes"]
end

subgraph group_data["State and data"]
  node_providers["App providers<br/>[providers.dart]"]
  node_database_service["Database service<br/>[db_service.dart]"]
  node_food_dao["Food log DAO<br/>[food_log_dao.dart]"]
  node_preferences_dao["Meal preferences DAO"]
  node_recipe_dao["Saved recipe DAO"]
  node_user_dao["User DAO<br/>[user_dao.dart]"]
end

node_user(("User"))

node_user -->|"opens"| node_app
node_app -->|"starts navigation"| node_navigation
node_navigation -->|"routes to"| node_onboarding
node_navigation -->|"routes to"| node_dashboard
node_navigation -->|"routes to"| node_meal_log
node_navigation -->|"routes to"| node_add_meal
node_navigation -->|"routes to"| node_food_lookup
node_navigation -->|"routes to"| node_recipe_discovery
node_navigation -->|"routes to"| node_saved_recipes
node_navigation -->|"routes to"| node_profile
node_food_lookup -.->|"fetches food info"| node_food_service

click node_app "https://github.com/niikhilraj/nourish-app/blob/master/lib/main.dart"
click node_navigation "https://github.com/niikhilraj/nourish-app/blob/master/lib/router.dart"
click node_onboarding "https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/onboarding"
click node_profile "https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/profile"
click node_theme "https://github.com/niikhilraj/nourish-app/blob/master/lib/providers/theme_provider.dart"
click node_dashboard "https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/home"
click node_meal_log "https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/food_log"
click node_add_meal "https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/add_meal"
click node_food_lookup "https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/food_info"
click node_food_service "https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/open_food_facts_service.dart"
click node_recipe_discovery "https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/ai_recipes"
click node_saved_recipes "https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/saved_recipes"
click node_providers "https://github.com/niikhilraj/nourish-app/blob/master/lib/providers.dart"
click node_database_service "https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/db_service.dart"
click node_food_dao "https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/daos/food_log_dao.dart"
click node_preferences_dao "https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/daos/meal_preferences_dao.dart"
click node_recipe_dao "https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/daos/saved_recipe_dao.dart"
click node_user_dao "https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/daos/user_dao.dart"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_navigation,node_onboarding,node_profile,node_theme,node_user toneBlue
class node_dashboard,node_meal_log,node_add_meal toneAmber
class node_food_lookup,node_food_service,node_recipe_discovery,node_saved_recipes toneMint
class node_providers,node_database_service,node_food_dao,node_preferences_dao,node_recipe_dao,node_user_dao toneRose
```

## Components

### App experience

- [Flutter app](https://github.com/niikhilraj/nourish-app/blob/master/lib/main.dart): `lib/main.dart`
- [Navigation](https://github.com/niikhilraj/nourish-app/blob/master/lib/router.dart): `lib/router.dart`
- [Onboarding](https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/onboarding): `lib/screens/onboarding`
- [Profile and BMR](https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/profile): `lib/screens/profile`
- [Theme settings](https://github.com/niikhilraj/nourish-app/blob/master/lib/providers/theme_provider.dart): `lib/providers/theme_provider.dart`

### Nutrition tracking

- [Nutrition dashboard](https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/home): `lib/screens/home`
- [Meal log calendar](https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/food_log): `lib/screens/food_log`
- [Add meal](https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/add_meal): `lib/screens/add_meal`

### Food and recipes

- [Barcode food lookup](https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/food_info): `lib/screens/food_info`
- [Food facts service](https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/open_food_facts_service.dart): `lib/backend/open_food_facts_service.dart`
- [AI recipe discovery](https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/ai_recipes): `lib/screens/ai_recipes`
- [Saved recipes](https://github.com/niikhilraj/nourish-app/tree/master/lib/screens/saved_recipes): `lib/screens/saved_recipes`

### State and data

- [App providers](https://github.com/niikhilraj/nourish-app/blob/master/lib/providers.dart): `lib/providers.dart`
- [Database service](https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/db_service.dart): `lib/backend/db_service.dart`
- [Food log DAO](https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/daos/food_log_dao.dart): `lib/backend/daos/food_log_dao.dart`
- [Meal preferences DAO](https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/daos/meal_preferences_dao.dart): `lib/backend/daos/meal_preferences_dao.dart`
- [Saved recipe DAO](https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/daos/saved_recipe_dao.dart): `lib/backend/daos/saved_recipe_dao.dart`
- [User DAO](https://github.com/niikhilraj/nourish-app/blob/master/lib/backend/daos/user_dao.dart): `lib/backend/daos/user_dao.dart`

### Other components

- **User**

## Connections

- User → Flutter app: opens
- Flutter app → Navigation: starts navigation
- Navigation → Onboarding: routes to
- Navigation → Nutrition dashboard: routes to
- Navigation → Meal log calendar: routes to
- Navigation → Add meal: routes to
- Navigation → Barcode food lookup: routes to
- Navigation → AI recipe discovery: routes to
- Navigation → Saved recipes: routes to
- Navigation → Profile and BMR: routes to
- Barcode food lookup → Food facts service: fetches food info
