Nutrition
Calories, macros, hydration and the meal planner: what a member sees and logs, and how staff edit the dishes.
For the Full Stack package
The nutrition page
/en/dashboard/nutrition shows the member's day:
- Calories eaten against the daily target, water in litres against the goal, and the day's score (excellent from 85, good from 70, fair from 50).
- The macro split of carbs, protein and fat, and the grams of each against its goal, with fiber.
- Today's meals by slot (breakfast, lunch, snack, dinner), healthy choices not eaten yet, and dishes to log in one tap.
- The week's intake against the week before, and how many days met the plan.
- A water tracker: the member sets today's glasses, from 0 to 30.
The meal planner
/en/dashboard/nutrition/meal-plannershows any day's meals on a timeline, with the calories and macros logged and the week's adherence.- A member logs their own food: a slot, a name, a description, a time and its calories and macros. They can remove their own meals.
- Every logged meal feeds the same day's figures, so the overview's donut, the nutrition page and the planner always agree.
The dishes
Dishes are the shared catalogue a member logs from. Staff with fitness.manage edit them under Content, then Dishes (/en/dashboard/content/dishes): a name and description in English and Arabic, a picture, protein, carbs and fat in grams, a default slot, and whether it is recommended or a healthy choice.
- Calories are never typed: they are worked out from the grams on every save, at 4 per gram of protein and carbs and 9 per gram of fat.
- A dish that any planned meal uses cannot be deleted (
409 dish_in_use).
The seed ships ten dishes, and gives each member 28 days of logged meals and a 2,350 kcal target.
The nutrition routes
| Method | Path | Permission | What it does |
|---|---|---|---|
GET | /api/fitness/nutrition | fitness.view | The nutrition page |
POST | /api/fitness/nutrition/meals | fitness.edit | Logs a catalogue dish into today ({ slug }) |
PATCH | /api/fitness/nutrition/hydration | fitness.edit | Sets today's glasses ({ glasses }, 0 to 30) |
GET | /api/fitness/nutrition/planner?date=YYYY-MM-DD | fitness.view | One day's planner |
POST | /api/fitness/nutrition/planner?date=YYYY-MM-DD | fitness.edit | Logs the member's own meal (slot, name, desc, time, kcal, proteinG, carbsG, fatsG, all required) |
DELETE | /api/fitness/nutrition/planner/:key?date=YYYY-MM-DD | fitness.edit | Removes one of the member's meals |
GET, POST, PATCH, DELETE | /api/fitness/manage/dishes[/:id] | fitness.manage | The dish catalogue (slot, recommended, healthy filters) |