Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Multi-tenant SaaS scaffold for the lead-to-lease loop. Next.js (App Router) on Vercel · Supabase (Postgres + Auth + Row-Level Security).
This milestone is the spine: orgs + auth + per-tenant branding + tenant isolation enforced by Postgres RLS. M2 adds the CRM loop.
app/ landing, login, signup, onboarding, dashboard, auth routes
lib/supabase/ browser + server + middleware Supabase clients
middleware.ts refreshes the session, guards /dashboard + /onboarding
supabase/migrations/ 0001_init.sql — schema, RLS policies, helper functions
scripts/verify-rls.mjs the M1 acceptance test (org A cannot read org B)
Supabase dashboard → SQL Editor → New query → paste all of
supabase/migrations/0001_init.sql → Run. It creates the tables, enables
RLS, defines the policies, and grants the authenticated role its privileges.
Supabase → Authentication → Providers → Email → turn "Confirm email" OFF for now so signups log in instantly. (Re-enable before production.)
Copy .env.local.example to .env.local and fill from Supabase →
Project Settings → API:
NEXT_PUBLIC_SUPABASE_URL — Project URLNEXT_PUBLIC_SUPABASE_ANON_KEY — anon public keySUPABASE_SERVICE_ROLE_KEY — service_role key (only used by the RLS test;
never shipped to the browser)npm install
npm run dev # http://localhost:3000
Sign up → create an organization → land on the branded dashboard → add a property.
node --env-file=.env.local scripts/verify-rls.mjs
Creates two orgs under two users and asserts neither can read or write the
other's rows. Must print ✅ PASS.
vacantless).NEXT_PUBLIC_* env vars (Production + Preview). Do not add
the service_role key to Vercel.https://your-app.vercel.app/auth/callback).organization_id via the
user_org_ids() SECURITY DEFINER helper (no policy recursion).