Saleor Store
우리 컬렉션을 쇼핑하세요
Ploy는 기업용 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 buil
커머스TypeScript · PLpgSQLGitHub @searchploy온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.