Fields & Floors Collectors
eBay에서 번호가 매겨진 스포츠 카드들을 인쇄본·사인·신인 여부·가격으로 검색하고, 검색을 저장해 새 카드가 등록되면 이메일 알림을 받는다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기DW嚴選推坑專區
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
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: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 或本機未提交的環境設定中。