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.
Translation pending
值得買、值得看、值得收藏的選物清單。
Translation pending
CommerceTypeScript · VueGitHub @applepigOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
DW嚴選推坑專區
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
DW嚴選公開站使用 Nuxt SSG、Nuxt server routes 與 @nuxt/image。商品資料放在 content/products/*.json,公開首頁只顯示 status = "published" 的商品。 分工:測試與檢查跑在 host,dev server 跑在 Docker 容器。 啟動與管理 dev server(Docker 容器透過 Traefik 自動路由到 https://${APP_URL}/,預設 dwselect.toybox.local;環境設定放在未提交的 .env,參考 .env.example,APP_URL 為必填): pnpm dev 會委派給 ./dev.sh dev,host 端自動啟動 Docker dev container 並追 log;容器內才執行真正的 Nuxt dev server,避免 host 與容器共用 Vite cache 造成 chunk hash 衝突。 執行測試與檢查(host,vitest.config.ts 已載入 .env,不需手動帶 APP_URL= 前綴): 公開內容 API 與圖片由 Nuxt server routes 與 @nuxt/image 即時提供,dev 不需手動重建 artifacts:Read the full README ↗
DW嚴選公開站使用 Nuxt SSG、Nuxt server routes 與 @nuxt/image。商品資料放在 content/products/*.json,公開首頁只顯示 status = "published" 的商品。
分工:測試與檢查跑在 host,dev server 跑在 Docker 容器。
安裝 host 依賴(跑測試、lint、typecheck、build artifacts 用):
pnpm install
啟動與管理 dev server(Docker 容器透過 Traefik 自動路由到 https://${APP_URL}/,預設 dwselect.toybox.local;環境設定放在未提交的 .env,參考 .env.example,APP_URL 為必填):
./dev.sh start # 啟動容器(NUXT_MODE=dev 跑含 HMR 的 dev server)
./dev.sh install # package.json 變更後同步容器內依賴
./dev.sh logs # 看 Nuxt log
./dev.sh status # 看容器狀態
pnpm dev 會委派給 ./dev.sh dev,host 端自動啟動 Docker dev container 並追 log;容器內才執行真正的 Nuxt dev server,避免 host 與容器共用 Vite cache 造成 chunk hash 衝突。
執行測試與檢查(host,vitest.config.ts 已載入 .env,不需手動帶 APP_URL= 前綴):
pnpm test
pnpm lint
pnpm typecheck
公開內容 API 與圖片由 Nuxt server routes 與 @nuxt/image 即時提供,dev 不需手動重建 artifacts:
GET /api/content.json:Nuxt server route,從 content/ 即時產生 published products/guides/links/taxonomy/navigation payload。GET /search-index.json:Nuxt server route,產生 client MiniSearch 需要的 payload。@nuxt/image(<NuxtImg format="webp"> + IPX,source dir 指向 content/)。dev 即時最佳化來源圖片,不需先跑 build:content-images。本機日常不需要直接跑 pnpm generate:dev mode 走 HMR;build mode 只在 Docker app service 啟動時由 container PID 1 執行一次 generate,接著進入 preview。若要本機啟動 build preview,請以 NUXT_MODE=build ./dev.sh restart 重建 service(./dev.sh restart 在有設定 NUXT_MODE 時會 --force-recreate 並套用該 mode;未設定時則為輕量 docker compose restart,不套用新的 NUXT_MODE)。CI 需要直接產 static artifact 時,會明確設定 DWSELECT_ALLOW_HOST_GENERATE=1 再跑 pnpm generate。
容器 entrypoint 以 root 起步時,會把 bind-mount 的 .nuxt/.output/node_modules chown 給 container 內的 node 使用者(uid 1000)後再降權。這隱含假設 host 操作者的 uid 為 1000;若你的 host 或 CI 以非 1000 uid 跑 build mode,工作樹的 owner 會被改成 1000,host 端清除這些目錄時可能需要 sudo。
build mode 會產生 discovery 檔(sitemap/rss/robots/llms)、檢查 published content 的本地圖片來源是否存在,接著 prerender 頁面與 /api/content.json、/search-index.json 到 .output/public,輸出頁面實際使用的 optimized images 到 .output/public/_ipx。production 不需 server runtime。build:content-images、build:search-index、build:public-artifacts 降為 legacy CLI,已不是 dev/generate 的必要步驟。
public/api/content.json、public/search-index.json、public/images/** 改由上述流程產生,已不再進 Git;正式 static output 以 pnpm generate 的 .output/public 為準。
Google Sheets TSV 只作為 legacy migration input 或參考來源,不應在公開站 client/runtime fetch。
原 Google Sheets TSV importer(scripts/legacy/migrate-google-sheet-products.ts)已移除——它會產生含 CJK 的 slug,與 content id 強制 ASCII kebab(ADR-11)的 schema 不相容;cutover 早已完成,公開內容以 Git-backed content/products/*.json、content/guides/*.json、content/links/*.json 與 taxonomy files 為 SSOT。
如需追溯 cutover 流程,可參考一次性 content domain migration script:
node scripts/legacy/migrate-content-domain-taxonomy.ts
產生靜態輸出:
pnpm generate
輸出位置是 .output/public。
正式站部署由 GitHub Actions direct upload 到 Cloudflare Pages。push 到 master 會先執行 pnpm test、pnpm lint、pnpm typecheck 與 pnpm generate,全部通過後才部署;pull request 只跑驗證,不會部署。
dwselect.output/publichttps://dwselect.applepig.net/CLOUDFLARE_ACCOUNT_ID、CLOUDFLARE_API_TOKEN首次外部設定時,需要在 Cloudflare Pages 設定 custom domain dwselect.applepig.net。若 applepig.net 不在同一個 Cloudflare 帳號的 DNS,請在該 DNS zone 新增 CNAME,指向 dwselect.pages.dev。
不要把 Cloudflare Account ID、API token 或其他 token value 寫進 repo;token 只應存放在 GitHub Actions secrets 或本機未提交的環境設定中。