K
Kodama Vault
knowledge hub
Vault
HomeBoardMap of ContentChatConversasAuditoria
Agentes
AgentsIssuesTerminalPreviews
Sistema
MCPSetup MCPSettings
Brain
Global agent instructions
Análise custos migração — evitar senha no payloadLevantamento fluxo registro + duplicados StripeRelatório segurança + pentes finos (Cláudio)Revisão security concerns e race conditionsMagic link / esqueceu senha via SupabaseCorrigir erros pós-upgrade TypeScriptTestar PRs do agente Vault para mergeAnálise de 3 issues para iniciarErro no terminal do VSCodePR #173 — aguardando aprovação do LeoTestar fluxo ponta a ponta — criação de clients no StripePR #172 — testar e subir correção de funções deprecatedPitch de vendas SaaS — agendar call de conversãoOrganizar issues e bugs rápidos para a semanaMerge PR cadastro-novo — funcionalidades e correçõesCorrigir bugs PR #173 e #172 — image domainsPR mesosóico — página de acesso mobile + segurança OTPRefatoração de códigos — PR #202Ajustes em PRs abertos de ontemEstudo de jornada de compra e técnicas de fechamentoDefinir preço e entregável do produtoProspecção de reuniões para esta semanaAgente anti AI slop — centralização de conhecimento ConnfitPR #179 — resolver conflitos e erros de teste CLIAlinhamento de preços e usos da ConffitFix adicional para PR #183 — perfil do usuárioCorrigir estilização da Connfit para identidade visualSubir modificações no copy da ConnfitCriação de 4 campanhas no Meta AdsRevisão de PRs do GilinesExploração do Roblox EditorRelatório João — devolutiva TikTok ShopReunião presencial Zassi Uniformes — diagnóstico automaçõesCriar repositório de diagnósticos e relatórios de entrevistasDiagnóstico da ZassiGeração de relatórios para reuniões de fechamentoProposta Zassi — apresentação amanhãProspecção — Clínica Odontológica Dr. But
VPS Hermes — acesso e estrutura
Always Commit Push DeployHermes Voice GeminiHermes VPSKodama Prospects TrackerMEMORYObsidian VaultRoblox Mining Sim
OpenSpec -- Spec-Driven Development no VaultPlano de Teste — OpenSpec Vault Persistence
CaumzitoNyxzZanini
lunacrm — contexto
Claude Code — Setup MCP VaultClaude Desktop — Setup MCP Vault (remote)VS Code + Copilot — Setup MCP Vault
Skill — Carousel Designer (Paper Style)
Standup 2026-05-14Standup 2026-05-15Standup 2026-05-16Standup 2026-05-17Standup 2026-05-18Standup 2026-05-19Standup 2026-05-20Standup 2026-05-21Standup 2026-05-22Standup 2026-05-25Standup 2026-05-26Standup 2026-05-27Standup 2026-05-28Standup 2026-05-29Standup 2026-06-01Standup 2026-06-02Standup 2026-06-03Standup 2026-06-05Standup 2026-06-11Standup 2026-06-15Standup 2026-06-16Standup 2026-06-17Standups
MOCWelcome
v0.3
K
Kodama Vault
brain / projects / lunacrm

lunacrm — contexto

LunaCRM

CRM multi-tenant SaaS pra atendimento WhatsApp com IA. Triagem inicial automática, perfilamento progressivo de clientes, handoff humano com assistência de IA.

Stack principal

Camada Tecnologia
Frontend Next.js 16 (App Router, SSR-first)
Backend Elysia.js sobre Bun
ORM Drizzle ORM
Database PostgreSQL Neon (serverless)
Cache/Queue Redis 7 + BullMQ
Real-time Socket.io (porta separada)
Auth Better Auth + Organization plugin (httpOnly cookies)
AI Anthropic SDK (Claude)
WhatsApp Evolution API self-hosted (Docker)
Validação Zod (package shared)
UI Tailwind v4 + shadcn/ui
Monorepo Turborepo

Estrutura monorepo

lunacrm/
├── apps/
│   ├── web/    # Next.js 16
│   └── api/    # Elysia.js (Bun)
├── packages/
│   ├── shared/ # Zod schemas, types
│   └── ui/     # design system
└── docker-compose.yml

Arquitetura API (apps/api/src/)

  • index.ts — entrypoint Elysia, registra rotas, sobe Socket.io e workers BullMQ
  • routes/ — handlers thin agrupados em /api/*
  • services/ — lógica de negócio, queries Drizzle, regras tenant
  • plugins/ — pipeline auth → tenant → rbac → limits
  • queue/workers/ — ai-analysis, ai-profile-update, ai-response
  • lib/ — db.ts (Drizzle), auth.ts (Better Auth), evolution.ts, redis.ts, socket.ts, ai.ts
  • drizzle/schema/ — schema TS (cuid IDs, snake_case, created_at/updated_at)

Auth

  • Better Auth catch-all em /api/auth/* (sign-in/up/session/org)
  • Sessão httpOnly cookie → tenantPlugin extrai {userId, tenantId, role, branchId}
  • Roles: superadmin > owner > admin > agent

Multi-tenant (regra crítica)

  • Toda tabela business tem tenant_id
  • Toda query filtra por tenant_id — nunca confiar no client
  • tenantId derivado da active organization Better Auth

Webhooks

webhooksRoutes montado fora do grupo /api (público, sem auth). Evolution entra aí.

Frontend integra via Eden Treaty (export type App no index.ts).

Infra produção

  • VPS Hermes: 187.127.24.217 (SSH root)
  • App path: /home/lunacrm/app/
  • Domínios: luna.kodama.solutions (web), api.luna.kodama.solutions (API)
  • Reverse proxy: nginx native
  • Cloudflare CDN/SSL na frente
  • CI/CD: GitHub Actions → GHCR → SSH deploy
  • .env.production no VPS, COOKIE_DOMAIN=.luna.kodama.solutions

Postgres na VPS — atenção

App LunaCRM NÃO usa postgres da VPS. Roda em Neon (serverless).

Container lunacrm-evolution-db (postgres:17-alpine) na VPS é isolado, exclusivo da Evolution API. Nada do app principal conecta nele.

Convenções

  • Comunicação user: pt-BR
  • Código/commits/PRs/identifiers: inglês
  • UI text: pt-BR (target Brasil)
  • DB: snake_case plural (leads, conversations, ai_profile_updates)
  • Sem any exceto JSON dinâmico
  • Named exports

Status fases

Todas concluídas (1-6: core multi-tenant, Evolution, conversations real-time, AI engine, AI chatbot, superadmin/billing/landing). Foco atual: SSR migration, polish, prod readiness.

notas relacionadas
carregando…