Book your stall at Good Vibes Only Market, the weekend community bazaar by Maniacs Mansion.
CommerceTypeScript · PLpgSQLGitHub @kayuwoodyOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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).