mrkeyoor.com_
Thu 01 Oct 21:37 UTC
Webevaluationupdated 01 Oct 2026

truanayangi review

Trưa Nay Ăn Gì is a lunch randomizer that turns choosing a dish into a game-style case opening. The primary README and interface are Vietnamese, and the project includes both an English README and an English UI translation. This community edition runs locally, stores preferences in browser cookies, and needs no account or backend.

Verdict

Our run installed 61 packages in 11 seconds, built in 6 seconds, and passed all 7 tests in 4 seconds, making the local setup easy to trust at commit 2e10968. Use Trưa Nay Ăn Gì when one person wants a fun, private lunch picker with Vietnamese food and custom lists. Skip it for shared planning, strict spending caps, or redistribution until the licensing position is clearer.

We ran it

Lab card: what happened when we ran truanayangiScreenshot of truanayangi (truanayangi.com)
Install✓ · 11s61 packages · 167 MB
Build✓ · 6s
Tests✓ · 4s7 passed · 0 failed of 7 (node:test)
Repo75 files~2,021 lines of source · 13.2 MB · 0 CI workflows · tests dir

Answers from our run

Does truanayangi build from source?

Dependencies installed in 11 seconds (61 packages), and the build succeeded in 6 seconds. We cloned commit 2e10968 into a clean Debian container with 3 CPUs and no project-specific setup.

Do truanayangi's tests pass?

Yes: 7 of 7 passed when we ran the project's own test command (node:test). Some failures need services or credentials a bare container does not have.

Who should not use truanayangi?

Households or teams needing synchronized lists: the README says data stays in one browser and does not sync across devices.

What are the alternatives to truanayangi?

Food Roulette, Mealie, Tandoor Recipes. Our run installed 61 packages in 11 seconds, built in 6 seconds, and passed all 7 tests in 4 seconds, making the local setup easy to trust at commit 2e10968.

Setup5/511-second install, 6-second build, and no service configuration
Docs4/5Vietnamese and English setup guides clearly separate local and hosted use
Community3/5635 stars and active September issue discussion in a new project
Maturity3/5Green local checks, but no release tags, CI, or clear license

Who it’s for

Vietnamese diners who want a playful nudge when lunch indecision has become the daily ritual.
React developers looking for a small local app with motion, audio, filters, and custom food lists.
Contributors who prefer a working English guide even though the project is Vietnamese-first.
People who want their meal choices stored only in the current browser rather than an account.

Who it’s NOT for

Households or teams needing synchronized lists: the README says data stays in one browser and does not sync across devices.
Strict budget enforcement: open issue 6 reports that a 30k setting can still return a 35k dish, and the selector targets an expected average rather than a ceiling.
Weekly or group meal planning: both are still feature requests in issues 18 and 19.
Anyone assuming GitHub Pages hosts this community build: the Pages branch only redirects to a separate production site.
Organizations that require clear redistribution rights: GitHub reports no repository license, and the attribution file warns that public source does not grant blanket rights to third-party assets.
Projects requiring visible CI and container deployment: the repository has no CI workflow or Dockerfile.

Setup reality

Our sandbox installed 61 pnpm packages for commit 2e10968 in 11 seconds, using 167 MB on disk. The build succeeded in 6 seconds. Tests finished in 4 seconds with all 7 node:test cases passing and 0 failures.

Local use needs Node.js 22.12 or newer and the pnpm version pinned in package.json. It requires no .env, login, backend, database, or external service. Development and preview servers bind to 127.0.0.1, and the app loads its bundled assets locally after installation.

The checkout held 75 files, about 2,021 source lines, and occupied 13.2 MB. It uses pnpm workspaces, has a tests directory, and has no CI workflow or Dockerfile. GitHub Pages is only a redirect, so publishing the local build requires your own hosting decision and a licensing review.

The 8.5-second case opening makes a tiny decision feel deliberate

Trưa Nay Ăn Gì answers one question: what should I eat for lunch? Instead of returning a plain random row, it sends food cards across a case-opening reel, plays tick and reveal sounds, and lands on a dish. The normal motion profile lasts 8,500 milliseconds and crosses 35 tiles. A reduced-motion profile still takes 4,500 milliseconds across 12 tiles, which keeps the result readable without copying the full animation.

The choice can be filtered by a spending target and vegetarian status. You may disable built-in dishes, add your own, switch between Vietnamese and English, mute audio, and reopen the case. The catalog covers Vietnamese staples alongside other lunch options, and a result links to Google Maps or GrabFood only after a user clicks. This is a playful decision aid, not a recommendation engine backed by restaurant availability or current menu prices.

The spending control targets an average, not a hard limit

Budget choices run from 30 to 180 thousand Vietnamese đồng. The selection code adjusts probabilities so the pool's expected price approaches the chosen target. That is mathematically different from excluding every dish above the number. Open issue 6 gives the concrete consequence: with a 30k setting, the reporter still received a 35k dish. An open pull request proposes a hard cap, but it was not merged in the code we reviewed.

The tests cover useful boundaries in the selector. They check empty and single-item pools, removed identifiers, target prices, feasible expected means, and selection from a two-item set. Those checks support the current average-target behavior. They do not turn the setting into a maximum. The interface calls it the usual lunch spend, which is more accurate than calling it a budget cap, but a cost-sensitive user could still read it that way.

What happened when we ran it

Our fresh Debian sandbox installed commit 2e10968 in 11 seconds with Node 22 and pnpm. The install added 61 packages and used 167 MB on disk. The checkout itself contained 75 files, about 2,021 source lines, and occupied 13.2 MB. No credentials or elevated privileges were present.

The production build succeeded in 6 seconds. The test step finished in 4 seconds with 7 node:test cases passed and 0 failed. Those cases exercise cookie behavior and motion profiles, while the command also checks personal-pool selection logic. We did not measure browser paint speed, network loading, sound playback, or the visual result on multiple devices, so the green suite should not be stretched into those claims.

Cookies make it private and keep it on one browser

There is no login, application backend, database client, or analytics tool in the community version. Preferences, custom foods, language, spin count, mute state, and recent choices live in cookies. The cookie helper rejects oversized values, treats malformed data as absent, and reports blocked writes instead of telling the user a choice was saved. Cookies may last up to 1 year according to the included privacy page.

That design keeps setup small, but it also fixes the product's boundary. Clearing cookies resets the data, and nothing syncs to another device. Issues 18 and 19 request weekly meal calendars and group spins; neither feature exists in the current source. A group that wants to share lists, assign meals, or plan shopping should use a meal planner with accounts rather than building synchronization around browser cookies.

GitHub Pages redirects to a different production product

The local app binds Vite to 127.0.0.1 on port 5173, with preview on port 4173. Its README explicitly says not to publish this build to the project's GitHub Pages branch. That branch contains a redirect to truanayangi.com, whose production frontend, API, and login live in private repositories. The public community edition has no access to those services and should not be described as the source of the hosted product.

For self-hosting, the compiled frontend is technically simple, but the repository provides no Dockerfile or deployment recipe. Its 0 CI workflow files are intentional according to AGENTS.md, which says not to add a CI pipeline for the MVP. More importantly, GitHub exposes no repository license. The attribution file says third-party sounds and game assets retain their owners' rights and that public visibility grants no blanket license. Review those rights before publishing a fork.

September activity is busy, but the project has no tagged release

GitHub redirected the original nagisanzenin/truanayangi path to truanayangi-com/truanayangi after a documented transfer. On October 1, the current repository showed 635 stars and 19 combined issues and pull requests. The last source push was September 10, 2026, while issue and pull-request discussion continued through September 20. There is no GitHub release record.

The open queue includes a desktop animation report, a stale geographic list, image-size work, group spinning, weekly planning, and a mute-state fix. That is healthy evidence of people trying the app, but it also describes an MVP still deciding its edges. For a personal lunch picker, our 11-second install and fully passing 7-test run make it easy to try. Keep it local until the license, open fixes, and deployment responsibility fit what you intend to do.

Alternatives

ProjectWhat it isPick it when
Food RouletteA small meal picker built around a familiar spinning-wheel interaction.pick this instead when you want a simpler food spin without Trưa Nay Ăn Gì's case-opening theme.
Mealie gh↗A self-hosted recipe manager and meal planner with accounts and an API.pick this instead when recipes, planned meals, and shared household data matter more than a random lunch reveal.
Tandoor RecipesA self-hosted recipe, meal-planning, and shopping-list application.pick this instead when lunch choice belongs inside a full cooking and grocery workflow.

What people are saying

  1. [velocity-scout] truanayangi-com/truanayangi
  2. [velocity-scout] nagisanzenin/truanayangi

Sources

  1. Trưa Nay Ăn Gì English README
  2. Trưa Nay Ăn Gì package manifest
  3. Selection and motion mechanics
  4. Cookie tests
  5. Budget behavior issue 6
  6. Community source attribution
  7. Group spin request 19

More web reviews

hit-and-run-web · RhineLabUI · ming-official-atlas · clay-safari · javranking-extension · heroui · the whole board →