03
Projeto pessoal
Motrix
Gestão de oficinas, multiempresa.
Sistema de gestão para oficinas em que uma única instalação atende várias empresas, com isolamento de dados garantido pela própria camada de modelos.
-
Captura real da tela de login, com o sistema rodando localmente (o Motrix não está publicado).
- Contexto
- Produto próprio, desenvolvido para explorar a arquitetura de um SaaS: várias empresas na mesma instalação, cada uma com seus dados, permissões e identidade visual.
- Problema
- Em um sistema multiempresa, um único filtro esquecido numa consulta pode expor dados de um cliente para outro. O isolamento não pode depender da atenção de quem escreve cada tela.
- Solução
- Banco único com a coluna discriminadora empresa_id. Um middleware resolve a empresa ativa de cada requisição e uma trait aplica um escopo global a todos os modelos de tenant: toda consulta já sai filtrada e todo registro novo recebe a empresa certa. Vazar dados exigiria remover o escopo de propósito.
- O que fiz
- Arquitetura multi-tenant (middleware, trait com escopo global, helper da empresa ativa).
- Organização em módulos independentes: Core, Clientes, Agendamentos, Orçamentos, Estoque e Financeiro.
- Numeração de documentos independente por empresa e por ano.
- Papéis e permissões, geração de orçamentos em PDF e identidade visual por empresa (white-label).
- Tecnologias
- Laravel 12
- PHP
- MySQL 8
- laravel-modules
- spatie/permission
- DomPDF
- Tailwind CSS
- Docker
- Estado
- Código aberto no GitHub. Sem demonstração online.
Como funciona
A ideia, em um diagrama.
Ilustração do funcionamento descrito no projeto, não uma tela do sistema.