No Dia 7 do projeto Mini CRM Lead Tracker, avancei na estrutura corporativa do sistema: implementei o CRUD completo de Empresas (Companies), consolidando o modelo multi-tenant estrito que serve de base para todo o backend.
Essa etapa marca a transição definitiva do projeto para um CRM de padrão enterprise, com segurança em camadas, isolamento de dados e políticas de acesso refinadas. Cada decisão foi tomada com base nas práticas de sistemas como Salesforce, HubSpot e Zoho.
📦 O que foi implementado
- CRUD completo de empresas (
CompanyController
) - Camada de serviço (
CompanyService
) com filtragem porcompany_id
- Validação com
StoreCompanyRequest
eUpdateCompanyRequest
- Formatação de resposta via
CompanyResource
CompanyPolicy
garantindo que apenas administradores possam editar- Middleware
company.valid
protegendo todas as rotas - Swagger documentado com exemplos de request e response
- 30 testes automatizados (unitários e feature) com 100% de cobertura do módulo
🏗️ Arquitetura e Segurança
O projeto segue uma abordagem Defense in Depth (defesa em profundidade):
1️⃣ Middleware - garante que o usuário está ativo e possui empresa
2️⃣ Policy - autoriza apenas quem pertence à mesma empresa
3️⃣ Service - executa queries sempre filtradas por company_id
Esse modelo elimina riscos de vazamento entre locatários e garante total rastreabilidade para auditorias e compliance (LGPD e GDPR).
🚫 Alternativas rejeitadas
O campo company_id
é NOT NULL — decisão intencional. Permitir null
violaria o princípio de multi-tenancy e aumentaria a superfície de ataque de segurança. Cada usuário precisa estar vinculado a uma empresa.
📘 Documentação e Testes
O Swagger foi atualizado com autenticação Bearer Token, exemplos de payload e responses padronizados. Testes cobrem fluxos de criação, atualização, listagem, autorização e cenários de erro.
“Nenhum sistema é seguro se o isolamento de dados for opcional. Multi-tenancy é sobre responsabilidade, não apenas sobre estrutura.”
📅 Resultado Final
O Mini CRM Lead Tracker agora possui uma fundação corporativa sólida — cada dado pertence a uma empresa e segue o ciclo de segurança completo.
Essa estrutura é a base para o controle de usuários e leads, garantindo rastreabilidade e escalabilidade com segurança.
🧠 Lições do Dia 7
- Multi-tenancy não é detalhe: é base de segurança.
- Policies são parte da arquitetura, não apenas “autorização”.
- Services isolam regras de negócio e aumentam testabilidade.
- Testes e Swagger são documentação viva.
Diário de Bordo – Dia 7 concluído!
Próximo passo: CRUD de Usuários dentro da Empresa, mantendo o isolamento multi-tenant e adicionando controle de papéis (roles) corporativos.
Deixe um comentário