尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Thai-language household inventory mobile app. Implementation of design/Home Inventory.dc.html (Claude Design canvas doc) as a Vite + React + TypeScript app, backed by a Google Sheet via Vercel serverless functions. Full-bleed on phones and installable (Add to Home Screen → standalone, no URL bar via manifest.webmanifest + apple-mobile-web-app-capable); on wide screens it renders inside a scaled iPhone frame (src/IOSFrame.tsx).查看完整 README ↗
Thai-language household inventory mobile app. Implementation of
design/Home Inventory.dc.html (Claude Design canvas doc) as a
Vite + React + TypeScript app, backed by a Google Sheet via Vercel
serverless functions.
Live: https://maebaan-home-inventory.vercel.app
Full-bleed on phones and installable (Add to Home Screen → standalone, no URL
bar via manifest.webmanifest + apple-mobile-web-app-capable); on wide
screens it renders inside a scaled iPhone frame (src/IOSFrame.tsx).
npm install
npx vercel dev # http://localhost:5273 — app + /api together (needs env, below)
npm run dev # plain Vite — /api unavailable, app runs on seed data (ตัวอย่าง pill)
npm run build # type-check + production bundle -> dist/
npm test # vitest — 59 tests (domain logic, mappers, mutate handler)
api/state.ts GET → { items, locations, history } from the Sheetapi/mutate.ts POST → { type, owner, ...payload } → applies applyMutation, writes the Sheet, returns the fresh snapshotapi/init.ts POST → idempotent: creates the 3 tabs + headers + seed from src/data.ts if emptygoogle-auth-library JWT from env GOOGLE_SERVICE_ACCOUNT_JSON; sheet id from env SHEET_ID. Server-only.items/locations tabs rewritten in full per mutation, history append-only (newest-first on read, Asia/Bangkok timestamps)./api only after a successful GET /api/state (hydrated); a boot-time failure = local-only demo session on seed data.| var | value |
|---|---|
SHEET_ID | the id from the Sheet URL |
GOOGLE_SERVICE_ACCOUNT_JSON | full contents of the service-account JSON key |
After the first deploy, POST /api/init once to seed the Sheet.
docs/superpowers/specs/2026-09-06-sheets-backend-vercel-design.md (spec),
docs/superpowers/plans/2026-09-06-sheets-backend-vercel.md (implementation plan).
A clay / neumorphic single-screen phone UI with a bottom nav and 10 screens:
| Screen | Purpose |
|---|---|
| หน้าแรก (home) | ready-% headline, stat tiles, pending count, quick actions, alert cards, LINE daily summary |
| รายการรอบันทึก (pending) | photos waiting to be filed (from app / LINE Official) → ADD / MOVE / USE |
| กล้อง (cam) | capture step 1 of every record; choose event type; send now or to pending |
| เก็บของ (add) | ADD — multi-row; name, kind, EXP (days or date) for food, qty, location search |
| ย้ายของ (move) | MOVE — pick an existing item, qty, destination location |
| ใช้ของ (use) | USE — search stock, decrement, low/out warnings |
| ของในบ้าน (inv) | browse by location or item, live qty / EXP badges |
| ประวัติ (hist) | read-only audit trail, filter by item / date range / location |
| รายการซื้อ (shop) | auto shopping list: out / low / bought, aggregated by name |
| ตั้งค่า (set) | clay tone (lilac / peach / mint), storage places CRUD, per-item min/target, notifications |
State is in-memory and seeded from the design doc (src/data.ts); "today" is
pinned to 2026-09-06 so the demo alerts stay stable.
design/Home Inventory.dc.html source design doc (canvas templating)
design/home-inventory-mockup.jsx earlier rough React mockup (reference only)
src/data.ts seed data (locations, items, pending, history, tones)
src/logic.ts pure domain logic: days(), autoCode(), shopRows(), applyAdd/Move/Use()
src/logic.test.ts unit tests for the above
src/css.ts CSS-string -> React style-object parser (lets design styles paste verbatim)
src/ui.ts style-string factories (chip, codeBadge, pill, shot, ...)
src/icons.tsx inline SVGs from the design
src/IOSFrame.tsx 440x956 iPhone shell, scales to fit (replaces the doc's ios-frame.jsx import)
src/App.tsx state machine + view-model builder + screen components
support.js / ios-frame.jsx from the original design are the Claude Design
runtime and are not needed here — the templating (sc-if / sc-for / {{ }})
was ported to JSX and the device frame reimplemented in IOSFrame.tsx.