Saleor Store
우리 컬렉션을 쇼핑하세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기All code for printmarket
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A production-ready marketplace connecting clients who need 3D printing with printer owners who have the equipment.
Stack: Next.js 15 (App Router) · TypeScript · Tailwind CSS · Supabase (Auth + DB + Storage) · VercelREADME 전문 보기 ↗A production-ready marketplace connecting clients who need 3D printing with printer owners who have the equipment.
Stack: Next.js 15 (App Router) · TypeScript · Tailwind CSS · Supabase (Auth + DB + Storage) · Vercel
git clone <your-repo>
cd print-marketplace
npm install
supabase/migrations/001_initial_schema.sqlIn Supabase Dashboard → Storage → New bucket:
job-filesThen run these policies in SQL Editor:
-- Allow authenticated users to upload
create policy "job_files_upload"
on storage.objects for insert
with check (bucket_id = 'job-files' and auth.role() = 'authenticated');
-- Allow authenticated users to read
create policy "job_files_read"
on storage.objects for select
using (bucket_id = 'job-files' and auth.role() = 'authenticated');
cp .env.example .env.local
Edit .env.local:
NEXT_PUBLIC_SUPABASE_URL=https://your-project-ref.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
NEXT_PUBLIC_APP_URL=http://localhost:3000
In Supabase Dashboard → Authentication → URL Configuration:
http://localhost:3000http://localhost:3000/auth/callbacknpm run dev
After signing up, run in Supabase SQL Editor:
update public.profiles
set role = 'admin', onboarding_complete = true
where email = '[email protected]';
git init
git add .
git commit -m "Initial commit"
gh repo create print-marketplace --public --push
npx vercel --prod
Or connect via the Vercel dashboard → Import Git Repository.
In your Vercel project → Settings → Environment Variables, add:
| Key | Value |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Your Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Your Supabase anon key |
SUPABASE_SERVICE_ROLE_KEY | Your service role key |
NEXT_PUBLIC_APP_URL | Your Vercel deployment URL |
In Supabase → Authentication → URL Configuration:
https://your-app.vercel.apphttps://your-app.vercel.app/auth/callbackprint-marketplace/
├── app/
│ ├── (auth)/ # Login & signup pages
│ │ ├── login/
│ │ └── signup/
│ ├── auth/callback/ # Supabase OAuth callback
│ ├── onboarding/ # Role selection
│ ├── (protected)/ # Authenticated routes
│ │ ├── layout.tsx # Auth guard + sidebar layout
│ │ ├── dashboard/
│ │ │ ├── client/ # Client dashboard
│ │ │ ├── printer/ # Printer owner dashboard
│ │ │ └── admin/ # Admin dashboard
│ │ ├── jobs/ # Jobs feed + new job form
│ │ │ └── [id]/ # Job detail + quote flow
│ │ ├── messages/ # Message threads
│ │ │ └── [jobId]/
│ │ └── profile/setup/ # Printer profile form
│ ├── page.tsx # Public landing page
│ └── layout.tsx # Root layout
├── components/
│ ├── ui/ # Button, Input, Badge, etc.
│ ├── layout/ # Navbar, Sidebar
│ ├── jobs/ # JobCard
│ ├── quotes/ # QuoteForm
│ └── messages/ # MessageThread (realtime)
├── lib/
│ ├── supabase/ # Browser + server clients
│ ├── types/ # Full TypeScript DB types
│ └── utils.ts # Helpers, constants
├── middleware.ts # Auth + onboarding guards
├── supabase/migrations/ # SQL schema + RLS policies
└── .env.example
| Table | Purpose |
|---|---|
profiles | One per user; stores role, display name |
printer_profiles | Equipment, materials, pricing for printer owners |
jobs | Client job postings |
job_files | Uploaded 3D model files per job |
quotes | Printer owner bids on jobs |
messages | Per-job chat (client ↔ accepted printer) |
reviews | Post-completion ratings |
platform_settings | Admin-managed key-value config |
All tables have Row-Level Security. See supabase/migrations/001_initial_schema.sql for full policies.
Stripe is prepared but not activated. When ready:
STRIPE_SECRET_KEY, NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY, STRIPE_WEBHOOK_SECRETstripe_enabled to true in platform_settingsapp/api/stripe/ routes for Connect onboarding and payment intents