Monalisa

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 reload

make 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.

ComandoO que faz
make migrateSó aplica as migrations
make seedSó roda os seeders padrão
make upPilha no modo das imagens de produção (migrator até terminar, depois API, workers e ElasticMQ)
make status / make logsEstado e logs da pilha
make testSuíte de testes com serviços descartáveis
make downPara 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/.env

Use 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 dev

O 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:check

Os testes de integração exigem um banco cujo nome termine em _test; nunca aponte as fixtures para um banco com dados a preservar.

Nesta página