ai-startup-skills
创业公司做 AI 产品的 7 步 Agent Skill 合集:验证 → BP → 政策 → 路演 → 获客 → 定价 → 注册。
Translation pending
Find what you're looking for. And where it'll be next.
OtherTypeScript · JavaScriptGitHub @findmiappOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
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.Read the full 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.