UC-STU-003: Daily Nutrition Goals
1. Metadata
| Property | Value |
|---|---|
| ID | UC-STU-003 |
| Actor | Student |
| Trigger | Student opens the app dashboard |
| Pre-conditions | Student is authenticated; baseline profile (age, weight) is set |
| Post-conditions | Goal progress is updated and persisted for the day |
| Priority | P0 |
2. Description
The Daily Nutrition Goals feature provides students with a personalised daily health scorecard — tracking calorie intake, hydration, and an overall Nutrition Score — to build consistent healthy habits through positive reinforcement.
3. Goals Tracked
| Goal | Metric | Default Target |
|---|---|---|
| Nutrition Score | Composite (0–100%) based on logged meals + video completion | 80% |
| Calorie Goal | Estimated daily intake based on age/BMI profile | Personalised (WHO reference) |
| Water Intake | Cups / glasses logged per day | 8 cups |
4. Success Scenario
- Student opens the app — dashboard shows today's goals with progress rings.
- Student logs a meal from the food picker.
- System calculates calorie contribution and updates progress.
- Student marks water intake — counter increments.
- Student completes a video lesson — Nutrition Score increases by the module's weight.
- At day-end, system persists the daily log and contributes to the weekly trend.
5. Acceptance Criteria
- [ ] Goal rings display real-time progress without page reload.
- [ ] Calorie defaults must be personalized to the student's age and weight (via their screening profile).
- [ ] Water intake must support manual increment (no manual entry of ml).
- [ ] Daily logs must persist across sessions (offline-first, sync on reconnect).
- [ ] Score must be visible on the home screen at all times.
6. Logic Flow
graph LR
A[Student Opens App] --> B[Load Daily Goals]
B --> C{Any logs today?}
C -->|Yes| D[Resume from last checkpoint]
C -->|No| E[Start fresh at 0%]
D --> F[Display Goal Rings]
E --> F
F --> G[Student logs meal / water / video]
G --> H[Recalculate Nutrition Score]
H --> I[Update Progress Ring]
I --> J[Persist to DB - offline queue if needed]