Food Diary
A personal food & drink journal at /[handle]/food (shortcut /food when signed in). Separate from Finance — but prices can link to expense rows.
Meals, snacks & drinks
Everything you consume — breakfast, ramen, bubble tea, beer, wine. Alcohol is tracked here; sobriety streaks stay on Trackers.
Search, sort & views
Search by dish, place, or merchant. List view groups by year in chronological order (newest or oldest). Photo grid is 3 columns — tap a photo for an Instagram-style post (scroll through other meals).
Edit logs (owner)
Fix what, when, price, calories, place, or delete. Add or replace a photo when editing. Tap Log food for a manual entry with optional photo.
Your diaries
Home links Movies, TV, Dreams, and Food. Sidebar has Food → /[handle]/food.
Food Logged card
When Dayze Agent logs food in chat, you get a Food Logged card with thumbnail, price, and calorie estimate — diary refreshes live.
Dayze Agent + photos
Send a meal photo in chat — agent calls log_food with the dish details; photo and EXIF metadata attach automatically.
Ratings & favorite foods
These are two different ideas:
- Rating (1–5 stars) — How good was this specific meal? Tap stars on a diary row or set them when editing. Dayze Agent passes
ratingonlog_foodwhen you say "that was a 5/5" or "amazing ramen". - Favorite foods — Dishes you love and want to log again (Nasi Lemak, bacon and eggs, your usual latte spot). Saved in
user_favorite_foods, shown as chips on/food. Tap a chip to prefill Log food. Not the same as Inventory wishlist (things to buy).
Migration: migrations/20260621_user_food_rating_favorites.sql. API: /api/food/favorites.
Food diary vs shopping list
The Food Diary is a journal of what you ate or drank — with optional price, calories, place, and photos. It is not where you track ingredients you still need to buy.
If you want to cook bacon but need to buy it first, add bacon to your Inventory wishlist (category Other, tag groceries). After you buy and cook it, log Bacon and eggs here — or tell Dayze Agent "I had bacon for breakfast".
Calorie estimates
Calories show as ~650 kcal — rough estimates from the agent or heuristics, not medical nutrition. You can override any row when editing.
Photos & when you ate
Each entry can have one photo stored in dayze-storage with optional metadata (dimensions, camera, capture time from EXIF or the file's last-modified date). Upload from the diary add form or edit modal, or send a food photo to Dayze Agent — log_food links it automatically.
When a photo is attached, consumed_at is set from the photo timestamp (EXIF first, then file date) so backdated camera-roll uploads land in the right place. The diary sorts strictly by consumed_at — list and photo grid, newest or oldest.
Photo grid: list/grid toggle on /[handle]/food — 3-column squares with 1px gaps; tap to open a scrollable post view (photo + details).
Calendar timeline
Each food log mirrors to /calendar as a lightweight event (external_source=user_food_log). Syncs on log_food, manual add, edit, delete, and photo upload. Filter Food on the calendar to see meals only. See Calendar docs.
Backfill from calendar
Food-related calendar events (lunch with friends, dinner at KFC, izakaya notes, etc.) can be migrated into the diary:
npx tsx scripts/backfill-food-events-to-diary.ts --handle=goh npx tsx scripts/backfill-food-events-to-diary.ts --handle=goh --include-expenses
Idempotent via user_food_log.source_event_id. Run migration migrations/20260612_user_food_log.sql in Supabase first.
Technical
Table: user_food_log. Agent tool: log_food. Navigation: open_app_page destination food_diary. UI event: DAYZE_FOOD_LOG_UPDATED_EVENT.