Trade thẻ Pokémon và One Piece trực tiếp giữa người chơi với nhau. Phí 0%, dữ liệu giá minh bạch.
Translation pending
CommerceTypeScript · CSSGitHub @hiuquangOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
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).Read the full 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á.