ซื้อ ขาย และสะสมการ์ดโปเกมอน การ์ดวันพีช การ์ดยูกิ Magic, Lorcana และ Riftbound ในประเทศไทย สแกนการ์ดด้วย AI เช็คราคาตลาดเรียลไทม์ ผู้ขายยืนยันตัวตน ส่งไวทั่วไทย
Translation pending
CommerceTypeScript · JavaScriptGitHub @bdotcoleOnlineOwner 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.
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: SentryRead the full README ↗
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.