A base do CMMV está no uso de contratos como o alicerce da aplicação. Hoje em dia, formatos modernos de comunicação como REST, GraphQL e WebSocket seguem um padrão semelhante: ao expor dados, é essencial manter a consistência — qualquer mudança fora de controle pode quebrar os consumidores da sua API. Isso se torna ainda mais crítico quando outros sistemas dependem do seu serviço.
O mercado adotou o JSON porque é fácil de usar e funciona em praticamente qualquer linguagem. Mas isso não significa que ele seja o formato ideal para tudo.
Se você já trabalhou com linguagens fortemente tipadas como C++ ou C#, sabe que lidar com JSON pode ser uma dor de cabeça: dinâmico demais, validação confusa, conversões manuais… e no fim, o código vira uma bagunça. Por isso, sistemas baseados em contratos bem definidos não são nenhuma novidade. O SOAP já fazia isso com o WSDL, e o Protobuf segue o mesmo princípio — amplamente usado em microserviços via RPC, e por um bom motivo: você define os dados de forma clara, tipada e estruturada, e a partir disso, tudo que for necessário para a comunicação pode ser gerado automaticamente, em qualquer linguagem.
O que isso significa na prática?
Significa que você não precisa mais escrever fetch
, nem lidar com headers, autenticação, transformação de dados ou validação manualmente. No CMMV, você define o contrato — e só. O sistema entende exatamente o que enviar, o que receber, como validar, transformar, autenticar e processar tudo. Você só implementa o que realmente precisa de lógica personalizada. Todo o resto já está pronto.
No frontend, isso vira uma simples chamada de função que retorna os dados — sem fetch
, sem axios
, sem parsing ou validação manual.
No backend, você não precisa criar controladores, DTOs, services, nem nada disso. O contrato define tudo. Você só conecta a lógica específica onde for necessário.
Isso reduz drasticamente o tempo de desenvolvimento, corta código repetitivo e garante que tudo funcione do jeito certo desde o início. É produtividade real, tipagem forte e comunicação de ponta a ponta — sem gambiarras, sem boilerplate, sem reinventar a roda.
Contrato no CMMV
Na essência, o contrato no CMMV funciona como um modelo schema-first, parecido com o GraphQL. Você define a estrutura e, se necessário, adiciona resolvers específicos.
Mas o CMMV vai muito além: ele já integra validação de dados com class-validator
, transformação automática com class-transformer
, e o núcleo do sistema gera automaticamente interfaces, DTOs e schemas otimizados com fast-json-stringify
. Esses schemas se tornam a base para todo o restante que será executado pelos módulos.
Transpiladores e Módulos
Um dos pontos mais poderosos da arquitetura do CMMV está no conceito de transpiladores e módulos — é aqui que a mágica realmente acontece.
Uma vez que os contratos estão definidos, os transpiladores entram em ação para gerar automaticamente o código necessário para cada parte da sua aplicação.
No CMMV, um módulo representa uma funcionalidade específica — como REST, GraphQL, Protobuf, WebSocket, SSR, integração com banco de dados, entre outros.
Cada módulo pode ter um ou mais transpiladores responsáveis por ler os contratos do projeto e gerar exatamente o que é preciso para que aquele módulo funcione de forma integrada ao restante do sistema.
Por exemplo:
No módulo GraphQL, os transpiladores geram automaticamente:
Resolvers
Definições de tipo (
typeDefs
)Queries e mutations
Controladores base para operações padrão (CRUD)
No módulo REST, os transpiladores geram:
Controladores HTTP
Endpoints com validação completa
Definições de rotas
Schemas de serialização otimizados com
fast-json-stringify
No módulo de banco de dados (MongoDB, SQLite, PostgreSQL, etc.), os transpiladores geram:
Schemas ORM/ODM
Migrations
Comandos para seed ou transformação de dados com base no contrato
Além disso, os transpiladores também podem ser usados para gerar:
Interfaces TypeScript para o frontend
Mixins RPC
Validação no client
E qualquer outro tipo de código que precise estar em sincronia com o backend
O melhor de tudo: os transpiladores são totalmente modulares e extensíveis.
Você pode criar seus próprios transpiladores para gerar códigos específicos, personalizados conforme as necessidades do seu projeto — sem quebrar a estrutura central do CMMV.