# bradtraversy/macrozone architecture

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

- Interactive diagram: https://gitdiagram.com/bradtraversy/macrozone
- Repository: https://github.com/bradtraversy/macrozone

## Overview

MacroZone is a local-first meal and macro tracker. Users enter a meal and its nutrition values, save it, then review totals and recent or complete meal lists; they can remove meals, share or copy meal data, and configure daily reminders. The graph captures the sampled route-to-storage and reminder wiring, plus README-described sharing and recent-meal capabilities whose component internals were not sampled.

Main entry points: [`src/app/(tabs)/index.tsx`](https://github.com/bradtraversy/macrozone/blob/master/src/app/(tabs)/index.tsx) (Home screen), [`src/storage/meals.ts`](https://github.com/bradtraversy/macrozone/blob/master/src/storage/meals.ts) (Meal storage), [`src/app/(tabs)/meals.tsx`](https://github.com/bradtraversy/macrozone/blob/master/src/app/(tabs)/meals.tsx) (All meals screen), [`src/components/ReminderToggle.tsx`](https://github.com/bradtraversy/macrozone/blob/master/src/components/ReminderToggle.tsx) (Reminder toggle)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_navigation["App navigation"]
  node_tabs["Tab navigation<br/>[_layout.tsx]"]
  node_root["Root layout<br/>[_layout.tsx]"]
end

subgraph group_meals["Meal tracking"]
  node_add["Add meal screen<br/>[add-meal.tsx]"]
  node_all["All meals screen<br/>[meals.tsx]"]
  node_mealitem["Meal item<br/>[MealItem.tsx]"]
  node_recent["Recent meals<br/>[RecentMeals.tsx]"]
  node_store["Meal storage<br/>[meals.ts]"]
end

subgraph group_summary["Macro summaries"]
  node_home["Home screen<br/>[index.tsx]"]
  node_macrogrid["Macro totals<br/>[MacroGrid.tsx]"]
  node_macrocard["Macro card<br/>[MacroCard.tsx]"]
  node_copy["Copy summary<br/>[CopyButton.tsx]"]
  node_share["Share meals<br/>[ShareButton.tsx]"]
end

subgraph group_reminders["Reminders"]
  node_remindertoggle["Reminder toggle<br/>[ReminderToggle.tsx]"]
  node_notifications["Reminder scheduling<br/>[notifications.ts]"]
end

node_user(("App user"))
node_asyncstore[("AsyncStorage")]
node_clipboard["Clipboard"]
node_notificationservice["OS notifications"]

node_user -->|"opens app"| node_root
node_root -->|"mounts tabs"| node_tabs
node_user -->|"enters meal"| node_add
node_add -->|"saves meal"| node_store
node_store -->|"reads/writes"| node_asyncstore
node_user -->|"views summary"| node_home
node_home -->|"loads meals"| node_store
node_home -->|"renders totals"| node_macrogrid
node_macrogrid -->|"renders metrics"| node_macrocard
node_home -->|"renders recent list"| node_recent
node_user -->|"views meals"| node_all
node_all -->|"loads/clears meals"| node_store
node_all -->|"renders list"| node_mealitem
node_mealitem -->|"deletes meal"| node_store
node_home -->|"renders action"| node_copy
node_copy -->|"copies summary"| node_clipboard
node_home -->|"renders action"| node_share
node_home -->|"renders toggle"| node_remindertoggle
node_remindertoggle -->|"configures reminders"| node_notifications
node_remindertoggle -->|"reads/writes setting"| node_asyncstore
node_notifications -->|"schedules/cancels"| node_notificationservice

click node_tabs "https://github.com/bradtraversy/macrozone/blob/master/src/app/(tabs)/_layout.tsx"
click node_root "https://github.com/bradtraversy/macrozone/blob/master/src/app/_layout.tsx"
click node_add "https://github.com/bradtraversy/macrozone/blob/master/src/app/(tabs)/add-meal.tsx"
click node_all "https://github.com/bradtraversy/macrozone/blob/master/src/app/(tabs)/meals.tsx"
click node_mealitem "https://github.com/bradtraversy/macrozone/blob/master/src/components/MealItem.tsx"
click node_recent "https://github.com/bradtraversy/macrozone/blob/master/src/components/RecentMeals.tsx"
click node_store "https://github.com/bradtraversy/macrozone/blob/master/src/storage/meals.ts"
click node_home "https://github.com/bradtraversy/macrozone/blob/master/src/app/(tabs)/index.tsx"
click node_macrogrid "https://github.com/bradtraversy/macrozone/blob/master/src/components/MacroGrid.tsx"
click node_macrocard "https://github.com/bradtraversy/macrozone/blob/master/src/components/MacroCard.tsx"
click node_copy "https://github.com/bradtraversy/macrozone/blob/master/src/components/CopyButton.tsx"
click node_share "https://github.com/bradtraversy/macrozone/blob/master/src/components/ShareButton.tsx"
click node_remindertoggle "https://github.com/bradtraversy/macrozone/blob/master/src/components/ReminderToggle.tsx"
click node_notifications "https://github.com/bradtraversy/macrozone/blob/master/src/utils/notifications.ts"

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_tabs,node_root,node_user toneBlue
class node_add,node_all,node_mealitem,node_recent,node_store,node_asyncstore toneAmber
class node_home,node_macrogrid,node_macrocard,node_copy,node_share toneMint
class node_remindertoggle,node_notifications toneRose
class node_clipboard,node_notificationservice toneIndigo
```

## Components

### App navigation

- [Tab navigation](https://github.com/bradtraversy/macrozone/blob/master/src/app/(tabs)/_layout.tsx): `src/app/(tabs)/_layout.tsx`
- [Root layout](https://github.com/bradtraversy/macrozone/blob/master/src/app/_layout.tsx): `src/app/_layout.tsx`

### Meal tracking

- [Add meal screen](https://github.com/bradtraversy/macrozone/blob/master/src/app/(tabs)/add-meal.tsx): `src/app/(tabs)/add-meal.tsx`
- [All meals screen](https://github.com/bradtraversy/macrozone/blob/master/src/app/(tabs)/meals.tsx): `src/app/(tabs)/meals.tsx`
- [Meal item](https://github.com/bradtraversy/macrozone/blob/master/src/components/MealItem.tsx): `src/components/MealItem.tsx`
- [Recent meals](https://github.com/bradtraversy/macrozone/blob/master/src/components/RecentMeals.tsx): `src/components/RecentMeals.tsx`
- [Meal storage](https://github.com/bradtraversy/macrozone/blob/master/src/storage/meals.ts): `src/storage/meals.ts`

### Macro summaries

- [Home screen](https://github.com/bradtraversy/macrozone/blob/master/src/app/(tabs)/index.tsx): `src/app/(tabs)/index.tsx`
- [Macro totals](https://github.com/bradtraversy/macrozone/blob/master/src/components/MacroGrid.tsx): `src/components/MacroGrid.tsx`
- [Macro card](https://github.com/bradtraversy/macrozone/blob/master/src/components/MacroCard.tsx): `src/components/MacroCard.tsx`
- [Copy summary](https://github.com/bradtraversy/macrozone/blob/master/src/components/CopyButton.tsx): `src/components/CopyButton.tsx`
- [Share meals](https://github.com/bradtraversy/macrozone/blob/master/src/components/ShareButton.tsx): `src/components/ShareButton.tsx`

### Reminders

- [Reminder toggle](https://github.com/bradtraversy/macrozone/blob/master/src/components/ReminderToggle.tsx): `src/components/ReminderToggle.tsx`
- [Reminder scheduling](https://github.com/bradtraversy/macrozone/blob/master/src/utils/notifications.ts): `src/utils/notifications.ts`

### Other components

- **App user**
- **AsyncStorage**
- **Clipboard**
- **OS notifications**

## Connections

- App user → Root layout: opens app
- Root layout → Tab navigation: mounts tabs
- App user → Add meal screen: enters meal
- Add meal screen → Meal storage: saves meal
- Meal storage → AsyncStorage: reads/writes
- App user → Home screen: views summary
- Home screen → Meal storage: loads meals
- Home screen → Macro totals: renders totals
- Macro totals → Macro card: renders metrics
- Home screen → Recent meals: renders recent list
- App user → All meals screen: views meals
- All meals screen → Meal storage: loads/clears meals
- All meals screen → Meal item: renders list
- Meal item → Meal storage: deletes meal
- Home screen → Copy summary: renders action
- Copy summary → Clipboard: copies summary
- Home screen → Share meals: renders action
- Home screen → Reminder toggle: renders toggle
- Reminder toggle → Reminder scheduling: configures reminders
- Reminder toggle → AsyncStorage: reads/writes setting
- Reminder scheduling → OS notifications: schedules/cancels
