O que é o Monalisa
O backend do Rocket, o banco que ele mantém e como esta documentação está organizada.
O Monalisa é o backend do Rocket. É um monorepo em TypeScript sobre Bun com três executáveis (a API, os workers e o migrator), pacotes de domínio e um framework interno para injeção de dependências, configuração, HTTP, autorização, acesso ao PostgreSQL, idempotência e trabalho em segundo plano.
O projeto está em pré-lançamento: código, contratos e o baseline do banco formam uma única implementação atual.
A API pública responde em api.novahml.com.
Em números
| Domínios do modelo de dados | 11 |
| Tabelas de domínio | 71 |
| Tabelas de infraestrutura (idempotência e background work) | 10 |
| Migrations no baseline | 17 (0001_parties a 0017_authorization-scope-ceiling-locks) |
| Banco | PostgreSQL 18 |
O banco migrado tem 82 tabelas: as 71 de domínio, as 10 de infraestrutura e a tabela de controle de migrations.
Como navegar
- Arquitetura: os executáveis e os serviços de que dependem.
- Rodar localmente: do clone ao
make dev. - Modelo de dados: uma página por domínio, com diagrama, colunas, chaves e constraints.
- Garantias do banco: o que o PostgreSQL impõe por conta própria.
- Migrations e seeds: como o schema nasce das entities e chega a um ambiente.
- Background work: outbox, filas, tasks, eventos e a auditoria das execuções.
- Operação: staging no Dokploy, backups e política de versões.
- Autenticação: em reconstrução.
Convenções desta documentação
- Modelo de dados é a descrição das 71 tabelas, agrupadas em 11 domínios. As entities de cada pacote de domínio geram o schema a partir dele, e um teste compara o banco migrado com o modelo.
- Garantido pelo banco lista só o que existe no schema migrado: PK, UNIQUE, índices únicos parciais, CHECK, EXCLUDE, triggers e colunas geradas. Cada página de domínio separa isso do que fica fora do banco.
- Todo instante é
timestamptzem UTC; vigências de negócio sãodatecom intervalo[valid_from, valid_until): o dia devalid_untiljá não pertence ao período. - Identificadores públicos são as colunas
uid; osidnuméricos são internos.
Esta documentação também está disponível para LLMs em /llms.txt (índice) e
/llms-full.txt (conteúdo completo).