Visão geral
O Mava é um produto SaaS que venho estruturando para centralizar a operação de equipes de serviço. A proposta é reduzir a fragmentação entre CRM operacional, execução, apontamento de tempo e faturamento, reunindo tudo em um fluxo consistente por tenant.
Hoje o sistema já cobre a base operacional de uma empresa: clientes, contatos, projetos, serviços, tarefas, lançamentos de tempo, usuários, empresas, autenticação, invoices e personalização visual por tenant.
O que faz o projeto se destacar
- Arquitetura multi-tenant de verdade: autenticação, sessão e escopo de dados preparados para múltiplas empresas por usuário, com troca de tenant dentro da aplicação.
- Fluxo operacional completo: clientes, projetos, serviços, tarefas e time tracking conectados ao faturamento.
- Invoices com identidade por tenant: logo, favicon e cor primária movidos para a tenant, refletindo também na renderização das invoices.
- Autenticação com self-registration opcional: o frontend adapta o fluxo de login para cadastro quando o backend expõe essa capacidade.
- Gestão de conta mais madura: o usuário consegue atualizar perfil, senha e dados das empresas vinculadas com validações de unicidade para email e slug.
- Pensado para produção no Railway: organização de deploy, separação de responsabilidades entre frontend e backend e decisões de infraestrutura já alinhadas ao ambiente real.
Escopo técnico
O frontend foi construído com React, TypeScript e Vite, com foco em uma interface administrativa rápida, orientada a workflow e integrada por API REST. O backend usa NestJS + TypeORM + MySQL, com organização modular para sustentar crescimento por domínio.
Entre as decisões que considero mais importantes neste projeto:
- isolamento por tenant ao longo dos módulos principais;
- sessão com tenant ativo e tenants disponíveis;
- endpoints específicos para perfil do usuário e dados da tenant atual;
- suporte a templates e renderização de invoice;
- estrutura pronta para evoluir segurança, deploy privado e governança de dados.