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
Generate professional trade estimates in seconds with AI.
Translation pending
BusinessGitHub @KIMYOUNGGWANGOnlineOwner 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 ↗SnapQuote is a field-first quoting app for owner-operators and small trade crews.
Core promise:
Quote the job before you drive off.
It is built for the jobs where office software usually fails:
As of 2026-03-10, this repository is in "private beta ready" territory.
Validated locally:
pnpm lintpnpm testpnpm test:e2epnpm buildpnpm startpnpm smoke:deploy --base-url=http://127.0.0.1:3000Not yet proven enough for broad paid launch:
See:
| Area | Stack |
|---|---|
| Frontend | Next.js 16, React 18, TypeScript, Tailwind CSS |
| Local-first | IndexedDB via idb, service worker |
| Backend | Supabase Auth, Postgres, Edge Functions |
| AI | OpenAI and optional Gemini provider fallback |
| Documents | @react-pdf/renderer |
| Payments | Stripe + Stripe Connect |
| Messaging | Resend and optional Twilio |
pnpm install
cp .env.example .env.local
pnpm dev
Open http://localhost:3000.
Use .env.example as the source of truth.
Required for the core quote flow:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYOPENAI_API_KEYRequired for billing:
STRIPE_SECRET_KEYSTRIPE_WEBHOOK_SECRETSTRIPE_BILLING_WEBHOOK_SECRETSTRIPE_BILLING_PRICE_STARTER_MONTHLYSTRIPE_BILLING_PRICE_PRO_MONTHLYSTRIPE_BILLING_PRICE_TEAM_MONTHLYRequired for email and operational alerts:
RESEND_API_KEYOPS_ALERT_EMAILOptional but recommended:
CRON_SECRETRATE_LIMIT_PROVIDER=upstashUPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKENTWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENTWILIO_FROM_NUMBERGEMINI_API_KEYOAuth and magic-link redirects must point at a domain that actually resolves.
If sign-in lands on snapquote.app with DNS_PROBE_FINISHED_NXDOMAIN, either
connect DNS for that domain or replace it in Supabase with the real production
URL.
In Supabase Dashboard -> Authentication -> URL Configuration:
https://<production-domain>/**http://localhost:3000/**https://*-<vercel-team-or-account-slug>.vercel.app/**In Authentication -> Providers -> Google:
https://<project-ref>.supabase.co/auth/v1/callback.If custom Supabase email templates are enabled, make sure magic-link templates
use {{ .RedirectTo }} rather than hard-coding {{ .SiteURL }} so the app's
/auth/callback redirect is honored.
pnpm dev
pnpm lint
pnpm test
pnpm test:e2e
pnpm build
pnpm start
pnpm validate:env --preset=beta
pnpm smoke:deploy --base-url=http://127.0.0.1:3000
app/
api/ API routes for AI, billing, messaging, sync, analytics
landing/ Marketing landing page
new-estimate/ Core field quote builder
pricing/ Self-serve pricing page
components/
audio-recorder.tsx Voice capture UI
estimate-pdf.tsx PDF document renderer
pdf-preview-modal.tsx Quote preview and download
lib/
db.ts IndexedDB stores
estimates-storage.ts Local quote persistence helpers
rate-limit.ts Memory and Upstash rate limiting
server/ Auth, billing, usage quota helpers
MIT