Saleor Store
우리 컬렉션을 쇼핑하세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Online stall booking for events. Vendors log in, pick an event date, click stalls on the floor plan (like picking cinema seats), and pay by bank transfer. Admins create events, grey out stalls, confirm payments, manage vendors and send WhatsApp announcements.
Stack: Next.js 14 (App Router) on Vercel · Supabase (Postgres, Auth, Storage). This uses its own Supabase project, separate from any other app.
supabase/migrations/001_init.sql: tables, storage bucket, booking functionssupabase/migrations/002_seed_layout.sql: the master floor plan (34 stalls)supabase/migrations/003_lockdown.sql: turns on RLS and blocks the public key from tables/functions (required)supabase/migrations/004_event_date_range.sql: events get a start and end datesupabase/migrations/005_vendor_details.sql: vendor ID codes, vendor types, offerings, address, websitesupabase/migrations/006_social_links.sql: any number of social media links per vendorsupabase/migrations/007_documents.sql: invoices & receipts (company details pre-filled)supabase/migrations/008_site_social_links.sql: the market's social media links for the website footerhttps://<your-app>.vercel.app/** to Redirect URLs.Import the burbur1 repo in Vercel.
Add the environment variables from .env.example:
| Variable | Where to find it |
|---|---|
SUPABASE_URL / NEXT_PUBLIC_SUPABASE_URL | Supabase → Project Settings → Data API → Project URL |
SUPABASE_SERVICE_ROLE_KEY | Project Settings → API Keys → Secret key (sb_secret_…). Server only, never NEXT_PUBLIC_. (Legacy service_role also works.) |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Same page, Publishable key (sb_publishable_…). Used only for login. |
NEXT_PUBLIC_SITE_URL | Your Vercel URL, used in WhatsApp links |
Sign up on the site with your email, confirm it, then run in the SQL editor:
insert into admins (auth_user_id, name)
select id, 'Your Name' from auth.users where email = '[email protected]';
Log out and in again; an Admin link appears in the header.
Admin → Settings: bank name, account name/number, and how many hours unpaid holds last (default 48).
cp .env.example .env.local # fill in values
npm install
npm run dev
/): open events dated today or later./events/YYMMDD): click available stalls to add them to the cart. Works across several dates./cart) → Book: all stalls are held at once, or none if any were just taken (those are removed from the cart with a message)./bookings/:id): bank details + upload transfer receipt.Unpaid holds are released automatically after the hold time. Once a receipt is uploaded, the hold stays until an admin confirms or cancels.
YYMMDD of the start date; the end date can be changed later. Vendors can book until the end date passes. All layout stalls are copied in with a default price and power. New events start as Draft (hidden from vendors).<prefix>-<5 digits> (prefix & next number set on the event page); receipt = invoice number + R. Company details in Settings.V0001, editable), type (Products / Services / Activities, managed in Settings), offerings, contact person, phone (WhatsApp), email, address, website, social media links (as many as they have; platform recognised automatically), internal notes, booking history. Filter by type and search everything. Vendors you add without a login are linked automatically when they sign up with the same email.{name} {event} {date} {link} placeholders, and tap Send per vendor. This opens WhatsApp with the message ready, using your existing WhatsApp Business app (free). Sends are logged so you can see who hasn't been told yet.available ──checkout──▶ held ──admin confirms──▶ booked
▲ │
└──expired/cancelled──┘
blocked = greyed out for this event
create_booking() (SQL) locks the requested stall rows, re-checks them, and holds them in one transaction. Two vendors clicking the same stall at the same time: one wins, the other gets a "just taken" message.
Stall positions live in layout_stalls (pixel coordinates on an 830×1050 canvas, traced from the original layout image). Edit rows there to add/move stalls; new events pick up the change. Existing events keep their stall list.
/api/admin/notify for an API call).