aogl.cn — personal bookmarks for generative AI tools and LLM releases

← Back to home · Editorial originals

EatToday — family order board × shared what-to-eat menu

Built by me · App: http://eattoday.aogl.cn/ · family rooms

· aogl.cn original

This is a first-party build log on aogl.cn. Screenshots and brand art live under original/eattoday/ (archived 2026-08-14). EatToday(今天吃什么)is an app I developed myself (footer credit © kolang). App link: http://eattoday.aogl.cn/—a mobile web app that turns the nightly argument “what should we cook?” into a shared family menu. One person (or several) picks dishes; the cook opens today’s list and cooks from ingredients, steps, and optional video links. This page is not third-party marketing copy. It walks through my own UI captures—order tab, meal slots, recipe detail, empty-state coaching, and room join—so search engines and humans can index phrases like “family what to eat app,” “shared home cooking menu,” and “no-login household meal planner.”

EatToday brand art — tomato scrambled eggs title on warm orange gradient
1.png — brand key art: 番茄炒蛋 · EatToday · 今天吃什么.

What’s in the folder

  • 1.png — warm orange brand frame with the dish name “番茄炒蛋” and the product line EatToday · 今天吃什么.
  • icon-512.png — app icon: rounded plate mark over an orange radial gradient, lowercase “eattoday”.
  • ScreenShot_2026-08-14_113649_346.png — Order Dishes tab: breakfast selected, search, category chips, dish cards with “加入早餐”.
  • ScreenShot_2026-08-14_113658_051.png — Today tab for 敖家 · 2026-08-14 with empty breakfast coaching and “分享给家人”.
  • ScreenShot_2026-08-14_113706_119.png — Recipe detail for 土豆烧排骨 (~60 minutes) with video tutorial card and “加入早餐”.
  • 4.jpg / 17.jpg / 31.jpg / 32.jpg / 48.jpg — dish stills used as catalog photography in the archive.
  • README.txt — product brief: roles, user stories, and the decision-cost problem the app attacks.

Captures were taken in a mobile browser at http://eattoday.aogl.cn/. Pairing structured prose with descriptive alt text beats a bare outbound link: crawlers see entities (meal slots, dish names, room invite codes) in first-paint HTML—not only in pixels.

EatToday app icon — white plate mark and eattoday wordmark on orange gradient
icon-512.png — product icon used for install / branding.

Positioning: shrink the family decision cost

Most “recipe” products optimize for browsing. EatToday optimizes for a different failure mode: the house already knows how to cook, but tonight nobody wants to decide. The README states the goal bluntly—cut the cost of “what do we eat / who cooks” by chaining three moves:

  1. Order — browse or search home-style dishes and add them to breakfast / lunch / dinner.
  2. Today’s menu — generate a dated checklist the cook can trust at a glance.
  3. Share — send the room link or invite code to whoever is at the stove.

That is closer to a lightweight household ops tool than to a content farm of SEO recipes. If you only ship pretty food photos without a shared today-list, the cook still has to renegotiate every evening. If you only ship a chat group without structured meal slots, messages scroll away and nobody knows whether breakfast was claimed. EatToday keeps both sides on two top tabs: 点菜 (Order) and 今天吃 (Today).

Roles the UI actually serves

  • Orderer — wants fast browse, add-to-today, and a share path.
  • Cook — wants today’s list, ingredients/steps/video, and progress states (doing / done).
  • Admin — maintains categories, dishes, ingredients, steps, and outbound video links.

Those roles come from README.txt, not from invented marketing personas. The product deliberately allows nickname-only participation without a heavy registration wall: create or join a family room, then start ordering. That choice trades enterprise SSO for the reality of grandparents and kids who will abandon any form that asks for email first.

Order Dishes: search, categories, meal slots

On the Order tab, three meal pills sit under the header: 早餐 / 午餐 / 晚餐. The selected meal changes the CTA on every card (for example “加入早餐”). A search field suggests “搜菜名,比如番茄炒蛋”—tomato scrambled eggs is both the brand dish and the search placeholder, which keeps the product voice consistent. Category chips include 全部, 家常炒菜, 汤羹, 蒸煮炖, 主食面点, 凉菜小吃, and 下饭硬菜. The grid paginates (“加载更多(已显 24/80)” in one capture), so the catalog can grow without dumping eighty cards into first paint.

EatToday Order tab — breakfast meal pill, search, categories, potato ribs and eggplant cards
ScreenShot_…_113649_346.png — Order Dishes with breakfast selected.

Visible dish names in the archive include 土豆烧排骨, 鱼香茄子, 蒜蓉烤排骨, 红烧鸡翅根, 啤酒鸭, 虎皮青椒, 凉拌海带丝, 皮蛋豆腐, and many more. Repeating those entities in HTML is intentional SEO: long-tail queries for specific home dishes can land on a page that also documents the planner, not a thin keyword list.

Recipe detail: time, video, then add to a meal

Opening 土豆烧排骨 shows a detail header “菜谱详情”, a hero still, a duration chip (“大约 60 分钟”), a video tutorial card with play overlay, and a full-width orange button that mirrors the active meal slot (“加入早餐”). The cook path is explicit: learn enough to execute, then commit the dish into today’s board. Video links are treated as optional teaching aids, not as the product’s core value—core value is the shared menu contract.

EatToday recipe detail — stewed spare ribs with potatoes, ~60 minutes, video tutorial, add to breakfast
ScreenShot_…_113706_119.png — recipe detail for 土豆烧排骨.
Archived EatToday dish photograph — plated chicken with peppers in a black bowl
4.jpg — catalog still from the original/eattoday/ archive.

Today’s menu: empty states that teach the loop

The Today tab in the sample shows 敖家 · 2026-08-14 with a red “分享给家人” action. Breakfast / lunch / dinner counters read 0. The empty card is not a blank void—it coaches: “选几道家常菜,做饭的人一眼就知道做什么,” then offers “去点早餐的菜.” Good empty states are product documentation embedded in UI. For AdSense and human reviewers, that matters: the screenshot proves a designed workflow, not a scraped recipe dump.

EatToday Today tab — Ao family dated menu empty breakfast with share-to-family link
ScreenShot_…_113658_051.png — Today menu empty state and share affordance.

When dishes exist, the cook should see a dated checklist per meal and be able to mark progress (doing / done) as described in the user stories. That status loop closes the coordination problem: orderers stop pinging “is it ready?” and cooks stop guessing which chat message was the final menu.

Family rooms: create, invite, join without heavy accounts

If no room exists, the app routes to a room screen: “还没有家庭房间,” with 创建房间 and 输入邀请码加入. Join accepts a nickname (default flavor text “吃货”) and an invite code or pasted share link. This is the multiplayer boundary that separates EatToday from a personal notes app. WordPet on wordpet.aogl.cn solves a learning habit for one student; EatToday solves a household coordination habit for several people around one stove.

Running the product on a sibling origin (eattoday.aogl.cn) next to the editorial static site keeps cookies and auth scopes clean: essays and SEO live on aogl.cn with first-screen HTML; the interactive planner stays on its own host. Prefer the http:// entry the product currently serves for live demos; do not invent HTTPS guarantees in copy if the edge is paused.

User stories I refuse to water down

  1. As a family member, I can create or join a room with a nickname and start ordering without a long signup.
  2. As an orderer, I can find dishes by category or search, inspect ingredients/steps, and add them to today’s meal slot.
  3. As an orderer, I can copy a room link or invite code for the cook.
  4. As a cook, I can open cooking mode, see today’s list, and mark doing / done.
  5. As an admin, I can publish or unpublish recipes and edit tutorials / video URLs.

Writing the article while the UI is still fresh forces honesty: quote labels exactly (点菜, 今天吃, 加入午餐, 分享给家人), avoid promising roadmap screens that are not captured, and keep medical/nutrition claims out of scope. This is a decision and coordination tool, not dietary advice.

Workflow notes shipping EatToday beside aogl.cn

Archiving screenshots into original/eattoday/ with timestamped filenames preserves capture provenance for reviewers. Hero generation still goes through npm run generate-article-covers so Open Graph gets a 1200×675 WebP without stock photography. Chinese body copy serves regional “今天吃什么” intent; English body copy serves international queries around family meal planning and shared menus. Short locales (ja/ko/fr/ru/ar) stay brief on purpose—the thick bilingual pair carries AdSense review weight.

Compared with ranking-table archives on this site (which stay noindex), EatToday belongs in the indexable primary bucket: original product, original screenshots, first-person production notes. That is the same content class as WordPet—author-built software documented with UI evidence.

Accessibility and SEO checklist

  • Alt text names visible UI entities (meal pills, dish titles, buttons)—never “image 1.”
  • Body text repeats EatToday, 今天吃什么, app URL http://eattoday.aogl.cn/, 点菜, 今天吃, 家庭房间, 邀请码, 土豆烧排骨, 番茄炒蛋.
  • Outbound product links use rel="noopener noreferrer"; full narrative ships in first-paint HTML.
  • Empty-state copy is quoted so crawlers understand the intended loop even when a demo room has zero dishes.

Boundaries

These screens document EatToday, an app I built (© kolang)—a personal demo and UI archive. Dish counts, room names, and video play counts change per deployment and capture time. Nothing here claims restaurant partnerships or medical nutrition guidance. Kids using share links should do so with a guardian when accounts or invites are involved.

Related searches

Open EatToday App All originals Home originals