Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Share one link in your rental ads. Renters get an instant reply, book their own viewing time and get reminders. You see every renter in one list. Free for one rental, CA$99 a month after that.
BusinessGitHub @vacantlessOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
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 ↗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).