Saleor Store
우리 컬렉션을 쇼핑하세요
태국에서 포켓몬·포치·유키·매직·Lorcana·Riftbound 카드 매매·수집·AI 스캔·실시간 시세 확인·판매자 인증·전국 배송
ซื้อ ขาย และสะสมการ์ดโปเกมอน การ์ดวันพีช การ์ดยูกิ Magic, Lorcana และ Riftbound ในประเทศไทย สแกนการ์ดด้วย AI เช็คราคาตลาดเรียลไทม์ ผู้ขายยืนยันตัวตน ส่งไวทั่วไทย
커머스TypeScript · JavaScriptGitHub @bdotcole온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A Thai-market Pokémon TCG marketplace. Buyers and sellers list, trade, and pay for cards through an Android app + web companion. • Frontend: Next.js 15 (App Router) + React 19 + Tailwind 4 + Framer Motion • Backend: Next.js API routes + Supabase (Postgres, Auth, Storage, Realtime) • Payments: Stripe Connect (separate charges and transfers) + PayPal • Shipping: Flash Express (Thai courier) with HMAC-signed in-app label PDFs • Notifications: Courier (Postmark email + Firebase push) • Mobile: Capacitor 8, Android only — WebView loads the live deployment • Observability: SentryREADME 전문 보기 ↗
A Thai-market Pokémon TCG marketplace. Buyers and sellers list, trade, and pay for cards through an Android app + web companion.
Prerequisites: Node.js 20+, npm.
Copy the example env and fill in real values (ask the maintainer for keys):
cp .env.example .env.local
Install and run:
npm install
npm run dev
Useful scripts:
npm run lint # ESLint
npm run typecheck # tsc --noEmit
npm run build # production build
npm run build
npx cap sync android
npx cap open android # opens Android Studio
The Capacitor config points the WebView at https://cardstreet.app. To run
against a local dev server, edit capacitor.config.ts and point server.url
at your machine.
app/ # Next.js routes (pages + API)
components/ # Client components
lib/ # Shared server + client utilities
fulfillOrder.ts # Post-payment fulfillment pipeline
flashExpress.ts # Flash Express API client + webhook verifier
courier.ts # Notifications (email + push)
stripe.ts # Stripe client + Connect helpers
hooks/ # React hooks
supabase/ # Migrations + edge functions
android/ # Native Android shell
/api/orders/checkout reserves
listings and creates pending_payment orders; /api/checkout then charges
Stripe with a transfer_group linking the two. The Stripe webhook flips
orders to paid via a CAS guard so duplicate deliveries can't double-fulfill.lib/fulfillOrder.ts — see the inventory-transfer block. If payment fails,
no card movement happens..env* is gitignored — never
commit one. See .env.example for the full list.SUPABASE_SERVICE_ROLE_KEY is used only in server-side code; routes that
use it must perform their own auth check above the call./api/admin/** go through lib/adminAuth.ts's
requireAdmin() helper, which checks profiles.role = 'admin'.For the moment, file issues in the project's private tracker. Do not share logs containing FCM tokens, Stripe payment intent ids, or session JWTs.