尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A Pokémon TCG collection tracker drawn as a cosy painted desk. Your sets are binders on a shelf, the old computer on the desk runs your stats, and the cat sleeps next to your boosters. → nookdex.com · free, in French and English, on desktop and phone查看完整 README ↗
A Pokémon TCG collection tracker drawn as a cosy painted desk. Your sets are binders on a shelf, the old computer on the desk runs your stats, and the cat sleeps next to your boosters.
→ nookdex.com · free, in French and English, on desktop and phone
The site also has a blog (price analyses, upcoming sets), one page per set with its most valuable cards, and a release calendar.
| App | Next.js (App Router), React, zustand (state, saved in the browser), motion |
| Accounts and sync | Supabase (magic link and Google sign-in, one JSON save per player, asks which one to keep when two devices disagree) |
| Card data | TCGdex: cards, scans and Cardmarket prices. English prices from TCGplayer, with TCGCSV for the cards TCGdex doesn't link. |
| Data pipeline | Scripts turn the card data into static JSON (public/sets/). A daily GitHub Action refreshes prices and appends to a price history. |
| Hosting | Vercel, with e-mails sent through Brevo |
| Visuals | A painted scene, cut into layers (binders, cat, lamp…) by scripts/build-scene.mjs |
There's no card database server: every set is a static file the browser downloads when it needs it. The room is client-only. The notebook pages (about, blog, set pages, release calendar) are server-rendered for search engines.
npm install
npm run dev
Dev-only URL shortcuts: ?skip (skip the loader), ?open=<setId> (open a binder), ?os (open the computer),
?demo (fill a test collection).
npm run fetch-set # sets not downloaded yet
npm run fetch-set -- --force # refresh every binder set's prices
npm run fetch-set -- sv08 # one set (and its sub-sets)
npm run fetch-set -- --lang=en # the same in English (TCGplayer prices); --lang=ja for Japanese
npm run build-scene # cut the painted scene into layers (public/scene, src/data/scene.json)
| Path | What |
|---|---|
src/components/room/ | The painted desk, its layers and animations |
src/components/binder/ | A binder: cover, pages, card slots, the card sheet |
src/components/computer/ | NookDex OS |
src/components/shelf/ | First visit (welcome, guided tour), new-binder menu |
src/app/(desk)/ | The room, plus the notebook pages opened over it (about, blog, sets, release calendar) |
src/lib/ | Store, cloud sync, catalog, prices, search, sounds |
scripts/ | Card data, price history, scene and icon builders |
content/blog/ | Blog posts (Markdown, French and English) |
docs/ | Supabase schema, e-mail templates, blog guidelines, plans |
Card data, scans and Cardmarket prices: TCGdex. English prices: TCGplayer, via TCGdex and TCGCSV.
NookDex is a fan project. It isn't affiliated with, endorsed or sponsored by Nintendo, The Pokémon Company, Creatures, GAME FREAK, Cardmarket or TCGplayer. Pokémon and the card images are trademarks and © of their respective owners.
Made by Johan. If you like it, you can buy the cat a treat 🐈