- Use Google Distroless images for all services (Go & Node.js). - Standardize documentation with [PROJECT-NAME].md. - Add .dockerignore and .gitignore to all projects. - Remove docker-compose.yml in favor of docker run instructions. - Fix Go version and dependency issues in observability, repo-integrations, and security-governance. - Add Podman support (fully qualified image names). - Update Dashboard to use Node.js static server for Distroless compatibility.
2.9 KiB
2.9 KiB
CRM-CORE
O crm-core é um microserviço especializado na gestão operacional de relacionamento com o cliente (CRM) para plataformas B2B SaaS. Ele é agnóstico a regras de faturamento e foca exclusivamente no ciclo de vida de vendas e gestão de contatos.
📋 Visão Geral
Este serviço foi desenhado para ser integrado via API e não possui interface própria. Ele delega a autenticação para o identity-gateway e opera em estrito isolamento multi-tenant.
O que ele faz:
- ✅ Gestão de Contas (Accounts) e Contatos.
- ✅ Pipelines de Vendas, Estágios e Oportunidades (Deals).
- ✅ Registro de Atividades e Notas.
O que ele NÃO faz:
- ❌ Faturamento ou ERP (ver
billing-finance-core). - ❌ Deployment de infraestrutura (ver
automation-jobs-core). - ❌ Autenticação de usuários.
Arquitetura
graph TD
Client[Frontend / API Gateway] -->|HTTP REST| API[CRM Core API]
API -->|Valida JWT| Identity[Identity Gateway]
subgraph CRM Domain
API --> Accounts
API --> Contacts
API --> Deals
API --> Activities
end
API --> DB[(PostgreSQL)]
🚀 Estrutura do Projeto
O projeto é escrito em Go e segue a Clean Architecture simplificada:
| Diretório | Descrição |
|---|---|
cmd/api |
Ponto de entrada da aplicação. |
internal/domain |
Entidades e interfaces. |
internal/usecase |
Regras de negócio. |
internal/handler |
Controladores HTTP (Chi Router). |
internal/repository |
Acesso a dados (pgx). |
🛠️ Tecnologias e Otimizações
- Linguagem: Go 1.23+
- Router: Chi
- Database Driver: Jackc/pgx
- Containerização:
- Baseada em
gcr.io/distroless/static:nonroot. - Binário compilado estaticamente com
-ldflags="-w -s". - Imagem final ultraleve (~20MB).
- Baseada em
💻 Como Executar
Docker (Recomendado)
# Build
docker build -t crm-core .
# Run
docker run -p 8080:8080 --env-file .env crm-core
A API estará disponível na porta 8080.
Desenvolvimento
- Dependências: Go 1.23+, PostgreSQL.
- Setup:
cp .env.example .env go mod tidy - Executar:
go run ./cmd/api/main.go
🔐 Segurança e Multi-tenancy
O serviço implementa Row-Level Security (RLS) lógico na aplicação:
- Trust: Confia em tokens JWT assinados pelo
identity-gateway. - Contexto: O
tenantIdé extraído do token em cada requisição. - Isolamento: Todos os repositórios injetam automaticamente
WHERE tenant_id = $1em todas as queries.
🔧 Detalhes do Dockerfile
- Builder: Imagem
golang:1.23-alpine. Compila o binário estático. - Runtime (Distroless): Imagem
static:nonrootdo Google.- Sem shell (
/bin/sh). - Sem gerenciador de pacotes (
apk). - Executa como usuário não-privilegiado (UID 65532).
- Sem shell (