FloCafe
FloCafe is the free, local-first restaurant POS in the FloPOS ecosystem. Run orders, tables, kitchen display, and local data without a software subscription.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Mini SaaS is a multi-surface Next.js 16 marketplace for showcasing and selling micro SaaS automations:
• Marketing site (/) with hero, category grid, value props, and CTA panel.
• Marketplace browse + detail (/apps, /apps/[slug]) backed by Supabase. The flagship workspace remains at /apps/corbin-email-guru.
• Creator surfaces (/dashboard, /onboarding) for listings, payouts, installs, and Stripe Connect.
• Auth (/login) with email + password and magic links via Supabase Auth.
• API for apps, creator metrics, Connect onboarding, and Stripe webhooks.檢視完整 README ↗Mini SaaS is a multi-surface Next.js 16 marketplace for showcasing and selling micro SaaS automations:
/) with hero, category grid, value props, and CTA panel./apps, /apps/[slug]) backed by Supabase. The flagship workspace remains at /apps/corbin-email-guru./dashboard, /onboarding) for listings, payouts, installs, and Stripe Connect./login) with email + password and magic links via Supabase Auth.Built with Next.js 16, TypeScript, Tailwind, shadcn/ui, framer-motion, Supabase, and Stripe Connect.
npm install
cp .env.example .env.local
npm run dev
Visit http://localhost:3000 for the marketing surface, or jump to:
/apps – marketplace browse grid/apps/corbin-email-guru – flagship productivity app/dashboard – creator console (signed-in)/onboarding – Stripe Connect onboarding (signed-in)/login – sign in / sign upCreate .env.local from .env.example. Never commit secrets.
NEXT_PUBLIC_SITE_URL=http://localhost:3000
# Supabase → Project Settings → API
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_KEY=
# Stripe → Developers → API keys, Connect, Webhooks
STRIPE_PUBLISHABLE_KEY=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
Notes:
SUPABASE_SERVICE_ROLE_KEY is accepted as an alias of SUPABASE_SERVICE_KEY.NEXT_PUBLIC_SITE_URL is used for auth redirects and Stripe Account Link return/refresh URLs.http://localhost:3000/auth/callback (and your production URL) to Authentication → URL Configuration → Redirect URLs.In the Supabase SQL editor, run these files in order:
supabase/schema.sql — tables, indexes, RLS, signup trigger, creator_metrics() RPCsupabase/seed.sql — sample creators, apps, installs, and payoutsBoth scripts are idempotent (IF NOT EXISTS / ON CONFLICT).
/apps chips now include Grok, Claude, and OpenAI in front of the workflow categories. Provider chips match the provider name in apps.tags; category chips match apps.category exactly (the old Sales chip is now Sales Ops, which is what the seed stores).
After pulling this change, re-run the seed so the new listings appear:
supabase db query -f supabase/seed.sql
Or paste supabase/seed.sql into the Supabase SQL editor. Existing rows upsert in place.
CLI equivalent if you use the Supabase CLI and are linked to a project:
supabase db query -f supabase/schema.sql
supabase db query -f supabase/seed.sql
Seed creators are storefront-only (no auth.users row). Signing up in the app creates a separate creator profile via the handle_new_user trigger.
npm run dev/dashboard while signed out — you should land on /login?next=/dashboard/dashboard and /onboarding should load; Log out in the header should return you to /login/onboarding, save a studio name + country, then Continue to payouts/onboarding?stripe=return), charges/payouts flags should update after Stripe redirects and/or the webhook runsForward webhooks with Stripe CLI:
stripe listen --forward-to localhost:3000/api/stripe/webhook
Copy the CLI whsec_... value into STRIPE_WEBHOOK_SECRET, then trigger an event:
stripe trigger account.updated
POST /api/stripe/webhook verifies the signature, stores the event on webhook_events (primary key = Stripe event id), and updates creators.stripe_account_id / onboarding flags for Connect events (account.updated, capability.updated, account.application.deauthorized).
| Method | Path | Auth | Purpose |
|---|---|---|---|
GET | /api/apps?q=&category=&featured= | public | List published apps |
POST | /api/apps | creator | Create a listing |
GET | /api/creator/metrics | creator | Dashboard RPC + related rows |
GET | /api/creator/onboarding | creator | Profile + Stripe sync |
POST | /api/creator/onboarding | creator | Save profile; create Express Account Link |
POST | /api/stripe/webhook | Stripe signature | Record events; update Connect status |
See docs/data-model.md for tables, RLS, and relationships.
| Command | Description |
|---|---|
npm run dev | Start Next.js (Turbopack) |
npm run build | Production build |
npm run start | Run the built app |
npm run lint | ESLint (flat config) |
src/app/
page.tsx # Landing page
(marketplace)/apps/page.tsx # Marketplace browse
(marketplace)/apps/[slug]/page.tsx
(marketplace)/apps/corbin-email-guru/page.tsx
(creator)/dashboard/page.tsx
(creator)/onboarding/page.tsx
(auth)/login/page.tsx
auth/callback/route.ts
api/apps/route.ts
api/creator/onboarding/route.ts
api/creator/metrics/route.ts
api/stripe/webhook/route.ts
src/proxy.ts # Session refresh + protected creator routes
supabase/schema.sql
supabase/seed.sql
Admin approval queue, featured-placement admin UI, app-manifest deploy hooks, production Vercel setup, and live paid checkout for buyers. Connect onboarding + webhook plumbing is in place so checkout can be added later.