Fields & Floors Collectors
Search every numbered sports card on eBay by print run, autograph, rookie status and price, then save searches and get an email when a new card lists.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A private web app for the family: groceries and pantry inventory today, with
room to grow into a shared calendar, chore charts, recipes, and more.
This README is written for future-you, not just other developers — it explains
why things are set up this way, not just how to run them.
Then open http://localhost:3000. Leave that terminal window running while you
work — it's the "kitchen" that serves the pages, and it reloads automatically
whenever you save a file.
The very first time, if there's no .env file yet:檢視完整 README ↗A private web app for the family: groceries and pantry inventory today, with room to grow into a shared calendar, chore charts, recipes, and more.
This README is written for future-you, not just other developers — it explains why things are set up this way, not just how to run them.
npm install
npm run dev
Then open http://localhost:3000. Leave that terminal window running while you work — it's the "kitchen" that serves the pages, and it reloads automatically whenever you save a file.
The very first time, if there's no .env file yet:
cp .env.example .env
This just tells the app where its database file lives. It's excluded from git (see "Why some files aren't saved to git" below) so every clone of the project needs its own copy — copying the example is that copy.
| Folder | What it is |
|---|---|
src/app/ | Every page you can visit. layout.tsx at the root wraps the whole app (the app chrome: the side-drawer menu, plus the logo bar on the dashboard and login) |
src/app/actions/ | The functions that change the database (add an item, check something off, etc.) |
src/components/ | Reusable pieces of screen — a row, a stepper, the nav bar |
src/lib/ | Shared plumbing: the database connection, and the list of categories/locations |
prisma/schema.prisma | The one file that describes the shape of our data |
prisma/dev.db | The actual database — a single file, not committed to git (see below) |
A rule this project follows: the list of categories and storage locations
lives in exactly one place, src/lib/constants.ts. Every dropdown, filter, and
heading reads from that list. Want a fifth storage location, or a tenth
category? Add one line there and it shows up everywhere automatically.
src/app/ into an
actual website, and lets a button click run code on the server without us
writing a separate backend.className="text-lg font-bold" instead of a separate stylesheet). Easier to
see cause and effect while learning.prisma/schema.prisma
describes the data once; Prisma generates the code we use to read and write it.prisma/dev.db) with nothing to install or log into. See "Going online"
below for why this will eventually change.Reusable knowledge, not just trivia — this is the kind of thing that saves a rewrite later:
src/lib/constants.ts is what enforces the valid list, in
TypeScript, before anything is saved.Both rules exist for the same reason: today's database is temporary, and the schema is written so switching databases later is a small, boring change instead of a rewrite.
Right now the database is a file on this laptop, and there's no login — anyone who could reach the app could see and change everything. That's fine as long as it only runs here. Two things have to happen before this goes on the internet or the kitchen tablet joins over Wi-Fi:
DATABASE_URL in .env, swap the adapter in src/lib/db.ts,
and run npx prisma migrate deploy once against the new database.npm run dev # start the app for development
npm run build # check that it builds cleanly for real use
npm run build:vercel # what Vercel runs: on a production build, apply any new
# database migrations first, then build (see CLAUDE.md)
npm run lint # check code style / catch likely mistakes
npm run db:seed # wipe and refill the database with sample data
npm run db:studio # opens a visual browser for the database in your browser
npm run db:reset # wipe the database completely and reapply the schema
A private, bearer-token API under /api/assistant/v1/ that Bryce's Home Hub
bot calls to read and update inventory, log leftovers and list the family.
Every call the API accepts is recorded — GET /api/assistant/v1/audit shows
what it did. Calls turned away at the door (wrong token, API switched off,
rate-limited) are deliberately not logged.
npm run assistant:token prints a fresh token and its
hash once and writes nothing. Put the hash in Vercel as
ASSISTANT_API_TOKEN_HASH (Production); paste the token into Home
Hub's secure input. Never commit either.ASSISTANT_API_TOKEN_HASH. With it unset every
assistant route answers 404, as if the API didn't exist.GET /api/assistant/v1/openapi.json (needs the bearer too),
generated from the same schemas the routes validate with.Git (via .gitignore) is deliberately not tracking a few things:
prisma/dev.db — this is data, not code. It changes every time you use
the app, it's personal, and every machine should keep its own copy rather
than sharing one through version control..env — will eventually hold a real database password. Secrets don't
belong in git history, which is effectively permanent and, if this repo is
ever pushed anywhere public, world-readable.node_modules/ and src/generated/prisma/ — both are entirely
regenerated from package.json and schema.prisma by npm install, so
saving them would just be dead weight.Calendar, family profiles, chore charts, recipes, meal planning, photos, habit trackers, sign-in, and putting this on the actual internet. The navigation and folder structure leave room for all of it, but none of it is stubbed out with placeholder pages — better to add each piece when it's actually being built.