Feature inventory: implemented, planned, and explicitly out of scope. Last updated: 2026-07-04
- Collect age, biological sex, height, weight, activity level, goal
- Mifflin-St Jeor BMR calculation
- Activity level multipliers (sedentary 1.2 → very active 1.725)
- Goal adjustments (maintain 1.0, lose 0.90, gain 1.10)
- Round final target to nearest 10 kcal
- Full onboarding-style profile edit flow (reuses ProfileSetup → GoalSetup → CalorieResult)
- Calorie disclaimer on result screen and profile
- Profile data persisted via SwiftData
- Create daily meal plan with 4 default slots: Breakfast, Lunch, Snack, Dinner
- Add food items manually (name, calories, optional note)
- Food search via FatSecret + USDA + Custom API providers
- Delete food items
- Meal total calories computed automatically
- Daily total calories computed automatically
- Validation: food name required, calories must be whole number ≥ 0
- Meal plans persisted via SwiftData
- Meal slots sorted chronologically (sortedMeals — SwiftData relationship ordering fix)
- Hero card with remaining estimate, progress %, aurora gradient background
- Planned calories vs remaining calories summary
- Calorie progress visualization
- Status message with neutral language
- Meal timeline with emoji tiles and calorie totals
- Next best action strip with meal type picker
- Empty state: "No meal plan for today — Create one"
- Week navigation with date range label
- Day cards with meal slot summary and calorie totals
- Past/future date support (read-only for past dates)
- Plan and add food for any date
- Calorie trend visualization
- Observations summary
- Protein, carbs, fat breakdown on Today dashboard
- 4-tab bottom bar: Today / Plan / Insights / Profile
- Onboarding flow: Welcome → Profile Setup → Goal Setup → Calorie Result
- Meal Detail screen with food item list
- Add Food Item sheet (manual entry + search)
- Profile Edit flow (full onboarding-style, pre-filled)
- Settings screen (theme + language)
- Meal type picker sheet from action strip
- Modern planning cockpit aesthetic — soft shadows, rounded surfaces
- Dynamic accent color
#4BB8FA - Full dark mode support via
UIColor { tc in ... }dynamic tokens - Gradient hero card with animated aurora blobs
- Ruler-based input for onboarding (age, height, weight)
- Energy balance bar on calorie result
- Colored meal icon tiles with type-specific tints
- Pulse button styles (primary, secondary, icon, stepper)
- PulseTopbar component
- Opaque nav bar (iOS 26 Liquid Glass safe)
- Light / Dark / System theme toggle in Settings
- ThemeManager ObservableObject
- Live theme switching (no restart)
-
.preferredColorScheme()applied at root
- String Catalogs (
.xcstrings) — Indonesian + English - Runtime language switching via Settings
- L10n type-safe lookup with bundle caching
- LocaleManager ObservableObject
- Localized dates (DateFormatter follows selected language)
- Localized model display names (activity, goal, meal types)
- SwiftData
@Modelclasses for all data - PersistenceService protocol abstraction
- MigrationService (legacy JSON → SwiftData migration)
- Reset all data action
- Data survives app restarts
- First launch (no profile) → onboarding
- Returning user (profile exists) → Today dashboard
- No meal plan today → empty state with CTA
- Meal plan exists, no food items → meal cards show "0 items, 0 kcal"
- Meal plan with food → calorie totals display
- Under target → neutral status message
- At target → neutral status message
- Over target → neutral language ("X kcal over your estimated target")
- Empty meal → "No food added yet"
- Past dates → read-only meal plans
- Dark mode → all screens adapt
- Unit tests — CalorieCalculator, MealPlanService, AppState
- Food item editing — currently delete + re-add; add inline edit
- Proper error handling — replace
try?withdo/catch+ user-visible errors - Accessibility — VoiceOver labels, dynamic type support, reduced motion
- App icon — replace solid coral placeholder with proper icon
- Copy yesterday's meal plan
- Favorite food items (quick-add from history)
- Swipe-to-delete on meal cards and food items
- Haptic feedback on button presses and deletions
- iPad layout (max content width 680px)
- Undo delete (toast: "Item removed. Undo?")
- Weight tracking over time
- Export meal plan (PDF, text)
- Reminder notifications
- Multiple profiles
These are intentionally excluded from the MVP per the PRD:
- ❌ Login / account system
- ❌ Cloud sync / backend
- ❌ Barcode scanning
- ❌ Food image recognition
- ❌ AI meal generation
- ❌ Social features / sharing
- ❌ Subscription / payments
- ❌ Exercise tracking
- ❌ Water tracking
- ❌ Recipe builder
- ❌ Shopping list
- ❌ Medical / nutrition diagnosis
| Category | Implemented | Planned | Out of Scope |
|---|---|---|---|
| Profile & Onboarding | 8 | 0 | 0 |
| Calorie Calculation | 5 | 0 | 0 |
| Meal Planning | 9 | 2 | 0 |
| Today Dashboard | 7 | 0 | 0 |
| Weekly Plan | 4 | 0 | 0 |
| Insights | 2 | 0 | 0 |
| Macro Tracking | 1 | 0 | 0 |
| Navigation | 7 | 0 | 0 |
| Design System | 11 | 0 | 0 |
| Theming | 4 | 0 | 0 |
| Localization | 6 | 0 | 0 |
| Data Persistence | 5 | 0 | 0 |
| Testing | 0 | 1 | 0 |
| Accessibility | 0 | 1 | 0 |
| Advanced Features | 0 | 6 | 12 |
| Total | 69 | 10 | 12 |