World Vibe Web
The distributed app store for vibe-coded projects. Browse, discover, and install open-source apps from across GitHub.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Nền tảng web P2P cho người chơi TCG ở Nhật (Pokémon / One Piece) trao đổi thẻ trực tiếp, không thu phí. Mục tiêu cốt lõi: thu thập giá đóng (closing price) đáng tin cậy qua cơ chế give-to-get — muốn xem dữ liệu giá thị trường thì phải đóng góp ít nhất 1 giao dịch đã xác nhận. Core loop MVP: List thẻ → Chat → Xác nhận giao dịch → Lưu giá (nhãn confirmed / self-reported).檢視完整 README ↗
Nền tảng web P2P cho người chơi TCG ở Nhật (Pokémon / One Piece) trao đổi thẻ trực tiếp, không thu phí. Mục tiêu cốt lõi: thu thập giá đóng (closing price) đáng tin cậy qua cơ chế give-to-get — muốn xem dữ liệu giá thị trường thì phải đóng góp ít nhất 1 giao dịch đã xác nhận.
Core loop MVP: List thẻ → Chat → Xác nhận giao dịch → Lưu giá (nhãn confirmed / self-reported).
DATABASE_URLYêu cầu: Node.js 20+.
cd deal
npm install
npx prisma migrate dev # tạo db + generate client + seed tự động
npm run dev # → http://localhost:3000
Tài khoản demo (seed sẵn): [email protected] / password123
(4 tài khoản khác: taro|hanako|kenji|[email protected], cùng mật khẩu.)
Lệnh khác:
npm test # unit tests (vitest)
npm run build # production build + typecheck
npm run db:seed # chạy lại seed (idempotent)
deal/
├── CLAUDE.md ← bản đồ dự án: làm gì đọc file nào
├── docs/ ← tài liệu theo chủ đề; docs/api/ = API contract (nguồn chân lý)
├── prisma/
│ ├── schema.prisma ← 8 bảng (users, cards, listings, conversations,
│ │ messages, trades, price_records, sessions)
│ └── seed.ts ← 5 users, 38 thẻ, 10 listing, 66 price records
├── src/
│ ├── app/ ← pages (App Router) + API route handlers
│ │ └── api/ ← routes: CHỈ validate + gọi service
│ ├── server/
│ │ ├── services/ ← business logic (unit test ở tests/)
│ │ ├── repositories/ ← mọi truy cập Prisma
│ │ ├── session.ts ← session cookie (bảng sessions)
│ │ ├── validation.ts ← zod schemas + "enum" values
│ │ └── errors.ts ← ApiError + error response thống nhất
│ ├── components/ ← React components (client)
│ └── lib/
│ ├── api-client.ts ← tầng gọi API duy nhất của frontend
│ └── types.ts ← DTO dùng chung FE/BE
└── tests/ ← vitest (28 tests)
| Biến | Mặc định | Ghi chú |
|---|---|---|
DATABASE_URL | file:./dev.db | SQLite dev; Postgres khi deploy |
APP_URL | http://localhost:3000 | URL gốc dùng trong link email |
SMTP_HOST/PORT/USER/PASS/FROM | (trống) | Trống → email vào hộp thư dev /dev/mailbox. Muốn gửi Gmail thật: bật 2FA → tạo App Password tại myaccount.google.com/apppasswords → điền SMTP_HOST=smtp.gmail.com, SMTP_PORT=465, SMTP_USER=địa chỉ Gmail, SMTP_PASS=app password |
Xem .env.example.
/dev/mailbox để xem mail và bấm link.PRICE_MISMATCH nếu lệch).self_reported (lazy-check khi có request, không cần cron).price_records không có cột user nào.GET /api/prices/:cardId trả 403 NEED_CONTRIBUTION (kèm teaser số record) nếu user chưa đóng góp giao dịch nào.cards, condition là field bắt buộc./terms + /privacy (bản mẫu, nên nhờ luật sư rà trước khi vận hành thật); đồng ý bắt buộc khi đăng ký + modal re-accept khi đổi TERMS_VERSION (src/lib/terms.ts — nhớ sync bản hardcode trong prisma/seed.ts); server chặn 403 TERMS_NOT_ACCEPTED.Lỗi 500 ngẫu nhiên khi npm run dev (log: SyntaxError: Unexpected end of JSON input): dự án nằm trong thư mục OneDrive — OneDrive khóa file trong .next khi sync. Cách xử lý: tạm dừng OneDrive sync khi dev (icon OneDrive → 一時停止), hoặc bỏ sync thư mục deal (OneDrive 設定 → アカウント → フォルダーの選択), hoặc chuyển dự án ra ngoài OneDrive (vd C:\dev\deal) sau khi đã đưa code lên GitHub. Không chạy npm run build khi dev server đang chạy (cả hai cùng ghi .next).
LINE Login · SMS OTP chống Sybil · push/email notification nhắc xác nhận · tích hợp Pokémon TCG API · cloud storage cho ảnh · deploy Vercel + Supabase · AI dự đoán giá.