Ploy 是企業用的 AI 工具市集。產生免費的 AI 報告以了解哪些 AI 工具符合您實際要解決的問題,瀏覽市集、上架自己的 AI 工具,或 buil
AI 翻譯
Ploy is an AI tools marketplace for businesses. Generate a free AI Report to see which AI tools fit the problems you're actually trying to solve, browse the marketplace, list your own AI tool, or buil
電商TypeScript · PLpgSQLGitHub @searchploy上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Ploy 是企業用的 AI 工具市集。產生免費的 AI 報告以了解哪些 AI 工具符合您實際要解決的問題,瀏覽市集、上架自己的 AI 工具,或建立 AI 顧問事業。
AI 翻譯
Ploy is an AI tools marketplace for businesses. Generate a free AI Report to see which AI tools fit the problems you're actually trying to solve, browse the marketplace, list your own AI tool, or build an AI consulting business.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Ploy — The Marketplace for AI Employees
A production-ready MVP built with Next.js 15 (App Router), TypeScript, Tailwind CSS, shadcn/ui,
Supabase, and Framer Motion.檢視完整 README ↗A production-ready MVP built with Next.js 15 (App Router), TypeScript, Tailwind CSS, shadcn/ui, Supabase, and Framer Motion.
supabase/migrations/0001_init.sql — every table from the spec, with RLS
policies, triggers (auto profile creation, rating recalculation, commission math), and seed
categories.src/lib/data/* — typed functions (getEmployees(), getAgencyBySlug(),
etc.) that return realistic sample data with the exact same shape Supabase will return. Swapping
a mock function for a live Supabase query is a one-function change, not a rewrite.The environment this was built in has no access to npm, GitHub, or any package registry, so
npm install was never run here and the build was never compiled. Every file was hand-written
against known-correct Next.js 15 / React 19 / shadcn/ui APIs and then verified with static checks
(import resolution, export matching, route resolution, "use client" boundaries) — but you should
run a real build before deploying.
npm install
npm run dev # http://localhost:3000
npm run typecheck # tsc --noEmit
npm run build
If npm run build surfaces anything (a version mismatch, a missed prop), it'll almost certainly be
small — the architecture and every file are complete.
supabase link --project-ref <your-ref>
supabase db push
.env.example to .env.local and fill in your Supabase URL/keys.src/lib/types/database.ts already match the migration exactly):
npx supabase gen types typescript --project-id <id> > src/lib/types/database.ts
src/lib/data/* has a matching Supabase query
commented in-line or trivially inferable from the table/column names — e.g.
getEmployees() becomes supabase.from("employees").select("*, agency:agencies(*), ...").setTimeout + toast.success (demo requests, buy now, listing
create/edit, agency approval, etc.) have a comment above the handler explaining the Server
Action they'd call in production — wire those up once Supabase is live.Uses Supabase Auth (not Clerk). src/lib/supabase/client.ts and server.ts are the browser/server
clients; src/middleware.ts refreshes the session cookie on every request. Sign-up captures a
role (business | agency) in user metadata; a Postgres trigger (handle_new_auth_user) copies
it into public.users automatically. Dashboard layouts currently read a hardcoded demo user
(src/lib/data/users.ts) instead of the live session — swap in getServerUser() from
src/lib/supabase/server.ts once you have real accounts to test with.
Stripe is not wired up (no keys were available to configure it), but the schema and commission
math are ready for it: orders.commission_cents / agency_payout_cents are computed automatically
by a Postgres trigger, and transactions / commissions tables are designed to hold Stripe
Checkout + Connect payout references (stripe_payment_intent_id, stripe_transfer_id).
marketplace/page.tsx, employee/agency
detail pages, all dashboard pages) is an async Server Component. Interactivity (forms, filters,
dialogs) is isolated into small "use client" leaf components.src/components/layout/site-chrome.tsx
hides the public navbar/footer on /dashboard/* routes, since each dashboard renders its own
sidebar shell.formatCurrency()), matching how
Stripe represents amounts, so there's no float-rounding cleanup needed when Stripe is added.COMMISSION_PCT in src/lib/constants.ts), computed server-side by
a Postgres trigger on orders, not trusted from the client.agency_members (team accounts), messages (full inbox), analytics (event log for
recommendations/search), notifications, and nullable Stripe columns on transactions mean
subscriptions, Stripe Connect payouts, an AI chat assistant, embeddings-based search, and an
affiliate/referral system can all be added without a schema rewrite.