Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Plataforma SaaS multi-tenant de gestão para profissionais e negócios de beleza e estética: agenda inteligente, agendamento online, CRM de clientes, registro de pagamentos e indicadores.
Proposta de valor: menos tempo administrando, menos horários perdidos e mais clientes voltando.
| Área | Situação |
|---|---|
| Landing page, cadastro, login, sessão | ✅ funcional |
| Onboarding guiado (negócio → horários → serviços) | ✅ funcional |
| Multi-tenancy com RLS no PostgreSQL + papéis | ✅ funcional e testado |
| Agenda dia/semana/mês, criação, reagendamento, status, encaixe, bloqueios | ✅ funcional |
| Proteção contra reserva duplicada (lock + restrição de exclusão) | ✅ testado com concorrência |
Página pública de agendamento (/b/<slug>) | ✅ funcional |
| Clientes: ficha, histórico, segmentos, duplicados, consentimento, CSV | ✅ funcional |
| Serviços e profissionais (expediente, pausas, serviços habilitados) | ✅ funcional |
| Pagamentos: sinal, parcial, integral, estorno auditável | ✅ funcional (registro manual) |
| Painel com métricas reais definidas | ✅ funcional |
| Notificações internas | ✅ funcional |
| Fila de mensagens (idempotente, retentativas) | ✅ motor pronto · ⚠️ nenhum canal conectado |
| Assinaturas e planos | ⚠️ modelo + regras de acesso prontos · cobrança não integrada |
| Financeiro completo, comissões, relatórios, marketing, estoque | 🔜 próximas fases (roadmap) |
src/app/globals.css)postgres (porsager) — SQL explícito, sem ORMdate-fns + @date-fns/tz para fusosDecisões e justificativas: docs/ARQUITETURA.md.
Pré-requisitos: Node 20.9+ e PostgreSQL 15+ (local, Docker ou Supabase).
npm install
cp .env.example .env.local # ajuste DATABASE_URL
npm run db:migrate # aplica db/migrations/*.sql
DEMO_PASSWORD=uma-senha npm run db:seed-demo # opcional: conta de demonstração isolada
VITRINE_PASSWORD=uma-senha npm run db:seed-vitrine # opcional: salão vitrine com ~4 meses de números realistas
npm run dev # http://localhost:3000
A conta de demonstração ([email protected], e-mail de teste local) é uma organização marcada como is_demo;
a interface exibe um aviso permanente e os dados ficam isolados pelo mesmo RLS das contas reais.
A conta vitrine ([email protected], "Salão Lumi") serve para apresentações: 3 profissionais e ~4 meses
de agenda contando a história "faturava ~R$ 14 mil por mês e, em 3 meses com a Gê, chegou a ~R$ 17,6 mil"
(por mês típico de 21,7 dias de atendimento). O crescimento vem de premissas explícitas no topo de
scripts/seed-vitrine.ts: faltas de ~14% para ~5%, agendamento online de 0% para ~35%, serviço adicional
de ~3% para ~15%. É relativa à data em que roda (o 3º mês é o mês atual); RESET=1 recria do zero.
Também é is_demo, e os telefones das clientes são fictícios em sequência ((11) 90000-0001…).
O seed é bloqueado em produção, a menos que ALLOW_DEMO_SEED=1.
npm run typecheck # tsc --noEmit
npm run lint # eslint
npm run test # unitários + integração (precisa de PostgreSQL, ver abaixo)
npm run build
BASE_URL=http://localhost:3000 npm run test:e2e # com o app rodando e a conta demo criada
Os testes de integração usam TEST_DATABASE_URL
(padrão postgres://[email protected]:5432/beauty_os_test) e recriam o schema app desse banco.
Nunca aponte para um banco com dados reais.
O teste ponta a ponta cria uma conta nova a cada execução; o limite de cadastros por IP
(10/hora) pode bloquear execuções repetidas — limpe app.rate_limits no banco local.
db/migrations/ SQL versionado (schema, RLS, papéis)
scripts/ migrate.ts, seed-demo.ts, seed-vitrine.ts
src/domain/ regras puras: disponibilidade, status, permissões, planos, métricas
src/server/ acesso a dados e casos de uso (rodam no servidor)
db.ts withTenant (RLS) / withSystem
auth/ senha (scrypt) e sessões
modules/ agenda, clientes, serviços, equipe, pagamentos, mensagens, painel, público
src/app/ rotas (landing, auth, onboarding, /app/*, /b/[slug], API de cron)
src/components/ design system (ui/), shell, gráficos
tests/unit|integration|e2e
docs/ arquitetura, roadmap, integrações, segurança/LGPD
Pensado para Vercel + Supabase (PostgreSQL). Passos em docs/DEPLOY.md.
Gê — o nome aparece em cursiva (Allura) com o monograma "G" sobre o degradê Royal Violet. Tema escuro com a escala de violetas da marca; detalhes em docs/design/tema-royal-violet.md.