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。 以下為已儲存的摘錄。
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: Sentry檢視完整 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.