Rodar localmente
Subir o Monalisa com Docker e Make, ou com serviços externos.
Com Docker e Make
Requisitos: Bun 1.4.2, Make, OpenSSL e Docker com Compose.
make setup # instala dependências pelo lockfile e cria .env.compose com senhas locais aleatórias
make build # imagens da API, do migrator e dos workers
make dev # migra, semeia e sobe tudo com hot reloadmake setup preserva um .env.compose existente. Nele ficam as portas locais, CORS_ORIGINS e o username e o
e-mail do primeiro operador de plataforma; a senha dele (PLATFORM_BOOTSTRAP_PASSWORD) é gerada ali.
make dev roda o migrator (migrations e seeders), depois sobe a API com bun --watch em http://127.0.0.1:3000
junto com PostgreSQL, Valkey, ElasticMQ e dois workers. MONALISA_HTTP_PORT muda a porta. PostgreSQL e Valkey ficam
na rede privada, sem porta publicada; o ElasticMQ fica em 127.0.0.1:9324.
| Comando | O que faz |
|---|---|
make migrate | Só aplica as migrations |
make seed | Só roda os seeders padrão |
make up | Pilha no modo das imagens de produção (migrator até terminar, depois API, workers e ElasticMQ) |
make status / make logs | Estado e logs da pilha |
make test | Suíte de testes com serviços descartáveis |
make down | Para a pilha e preserva os volumes |
O projeto Compose padrão se chama monalisa. Para outra pilha em paralelo, use COMPOSE_PROJECT_NAME (ou PROJECT)
e ENV_FILE, com os mesmos valores nos comandos seguintes.
Workers no modo dev
Em make dev há dois serviços de workers: workers consome bulk,maintenance e roda o relay e o agendador local;
workers-online consome critical,default. O agendador local só existe em desenvolvimento.
Com serviços externos
Requisitos: Bun 1.4.2, PostgreSQL 18 e Redis ou Valkey. Docker continua necessário para os testes que criam serviços descartáveis.
bun install --frozen-lockfile
cp apps/api/.env.example apps/api/.env
cp apps/migrator/.env.example apps/migrator/.envUse o mesmo DATABASE_URL nos dois arquivos e REDIS_URL no da API. No do migrator, preencha
PLATFORM_BOOTSTRAP_USERNAME, PLATFORM_BOOTSTRAP_EMAIL e PLATFORM_BOOTSTRAP_PASSWORD. Os arquivos .env nunca são
commitados.
bun run permissions:emit # o seeder lê o registry de permissões
bun run --cwd apps/migrator migrate status
bun run --cwd apps/migrator migrate apply
bun run db:seed # dados de referência + primeiro operador de plataforma
bun run db:seed --class DevSeeder # opcional: dados locais; recusado com NODE_ENV=production
bun run --cwd apps/api devO predev da API emite o catálogo de tasks (tasks.json) e a versão de schema esperada antes de subir. Iniciada de
outro jeito, a API precisa de MONALISA_TASKS_CATALOG e MONALISA_SCHEMA_VERSION, e os workers de
MONALISA_SCHEMA_VERSION (bun run tasks:emit e bun run schema-version:emit geram os arquivos).
Verificações
bun run typecheck
bun test # pula os testes de serviços externos sem as variáveis de integração
bun run test:integration # cria PostgreSQL, Valkey e ElasticMQ descartáveis
bun run migrations:check
bun run openapi:check
bun run permissions:check
bun run versions:check
bun run format:checkOs testes de integração exigem um banco cujo nome termine em _test; nunca aponte as fixtures para um banco com dados
a preservar.