尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Find what you're looking for. And where it'll be next.
Findmi is a mobile-first discovery platform for brands, vendors, mobile
businesses, and events — built to answer "where can I find this business
next?" It connects businesses → products/services → appearances → events →
locations, so discovery works in both directions: from a business to where
they'll be next, and from an event to who you'll find there.檢視完整 README ↗Find what you're looking for. And where it'll be next.
Findmi is a mobile-first discovery platform for brands, vendors, mobile businesses, and events — built to answer "where can I find this business next?" It connects businesses → products/services → appearances → events → locations, so discovery works in both directions: from a business to where they'll be next, and from an event to who you'll find there.
npm install
supabase/schema.sql — this creates all
tables, indexes, RLS policies, and the updated_at trigger.supabase/seed.sql — this loads realistic, clearly-fictional
sample data (6 interconnected businesses, 3 events, appearances, and
products) so the app isn't empty on first load. Safe to skip or re-run.cp .env.example .env.local
Fill in:
| Variable | Where to get it |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase → Project Settings → API |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase → Project Settings → API |
NEXT_PUBLIC_STRIPE_FOUNDING_LINK | Stripe → Payment Links (see below) |
NEXT_PUBLIC_TALLY_ONBOARDING_URL | Tally → your vendor onboarding form's share link |
NEXT_PUBLIC_TALLY_INQUIRY_URL | Tally → your consumer inquiry form's share link |
NEXT_PUBLIC_SITE_URL | http://localhost:3000 locally, your production domain on Vercel |
The app runs and builds even without these set (data calls fail soft to empty states), but membership checkout, onboarding, inquiries, and live data all require them.
npm run dev
Visit http://localhost:3000.
Findmi V1 intentionally uses a single Stripe Payment Link instead of a custom checkout flow or Stripe Connect (that's left for later, once businesses need their own payouts).
https://YOUR-DOMAIN/join/successNEXT_PUBLIC_STRIPE_FOUNDING_LINK.The /join page links directly to this URL. /join/success is the
Stripe redirect target and prompts the new member to fill out the Tally
onboarding form.
Findmi uses two Tally forms:
Vendor onboarding (NEXT_PUBLIC_TALLY_ONBOARDING_URL) — shown as
"Build My Profile" on /join/success after a successful payment. Ask for
whatever you need to build a business's Findmi profile (name, categories,
photos, socials, first appearances, etc.).
Consumer inquiry (NEXT_PUBLIC_TALLY_INQUIRY_URL) — linked from every
business profile's "Book / Inquire" section. Findmi appends hidden query
parameters so each submission is tied to the right business:
?business_id={id}&business_name={name}&business_slug={slug}&source=findmi_profile
In your Tally form, add hidden fields named exactly business_id,
business_name, business_slug, and source — Tally automatically
pre-fills a hidden field from a matching URL query parameter. Add whatever
visible fields you want customers to fill in (name, email, phone, event
date, event type, location, guest count, budget, message, and a checkbox
like "It's OK to suggest another Findmi business if this one isn't
available" — these map to the inquiries table if you later wire up a
Tally webhook into Supabase).
The URL-building logic lives in one place: src/lib/tally.ts.
.env.example under Project
Settings → Environment Variables (use your real values, and set
NEXT_PUBLIC_SITE_URL to your Vercel/production domain).No server config, database migrations at build time, or serverless
functions beyond the one small /api/follow route (used by the "Follow"
button so the Supabase client stays server-side) are required.
V1 intentionally ships without a business dashboard or admin UI — content is managed directly in Supabase Studio (Table Editor), which is fast enough for a founding cohort of businesses:
businesses (slug must be unique,
URL-safe, e.g. my-coffee-cart).business_categories linking the
business to one or more rows in categories (add new categories there
too, if needed).products with that
business_id.appearances
with that business_id. Leave event_id null for a standalone
appearance, or set it to group the appearance under a shared events
row.events, then link businesses to it
via event_businesses (one row per participating business) — that
powers both "Findmi Next" on the business profile and "Who You'll Find
There" on the event page.founding_member / verified to true once a business's
membership is confirmed, and membership_status to active.is_demo — every business, event, and location row has an is_demo
column, defaulting to false. Every public query in src/lib/data.ts
filters is_demo = false, so a row stays completely invisible on the live
site until that flag is off — a fictional Austin business added for local
dev, for instance, is is_demo = true and never appears in production,
even by direct URL. Add real businesses normally; you don't need to touch
this column for them.
inquiries and followers fill in automatically from the site (public
insert-only via RLS) — review them in Table Editor. A future step would
be a Tally → Supabase webhook to write inquiries rows directly from
form submissions; V1 keeps that manual/optional to stay simple.
A password-protected /admin route was intentionally left out of V1 to
avoid delaying launch — Supabase Studio covers the same need today.
src/
app/ Routes (App Router)
business/[slug]/ Business profile
event/[slug]/ Event profile
location/[slug]/ Location profile (carousel + list of what's on there)
businesses/ Directory + search
events/ Event discovery
locations/ Location directory
discover/ General discovery feed
join/ Membership sales page
join/success/ Post-checkout onboarding CTA
api/follow/ Follow-capture route (keeps Supabase server-side)
components/ UI building blocks (cards, nav, forms)
lib/
supabase.ts Single shared Supabase client (reads are RLS-gated)
data.ts All Supabase queries, in one place
tally.ts Tally URL builder (hidden-field contract)
format.ts Date/price/location formatting helpers
types.ts Shared TypeScript types matching the schema
supabase/
schema.sql Full schema, indexes, RLS policies
seed.sql Realistic interconnected sample data
businesses and
products tables, no payment fields baked into products) is ready for
Connect later without a schema rewrite.ilike text search plus category joins, which is enough at
founding-cohort scale.latitude/longitude and a
"Get directions" link out to Google Maps; a map view can be layered on
top of that data later.location_id foreign key yet on events/appearances — a location's
"Coming Up Here" feed matches on venue_name text (case-insensitive) as a
pragmatic V1 stand-in. Add the FK once venues are chosen from a picker
instead of typed freehand, and swap the text match for a join.