Status: Atlas (v0.1) | Licença: AGPLv3
Uma plataforma open-source de Platform as a Service (PaaS) para orquestração simplificada de aplicações Node.js. O Cobogó abstrai a complexidade do Docker e Proxy Reverso, permitindo que desenvolvedores façam deploy de seus repositórios Git com um clique.
Foco: Developer Experience (DX), Auto-hospedagem e Soberania de dados.
O nome Cobogó faz referência ao elemento arquitetônico modernista, ícone de Brasília. Assim como o cobogó é um bloco modular que permite a permeabilidade da luz e ventilação sem comprometer a estrutura, esta plataforma atua como uma estrutura modular para containers, gerenciando o fluxo de tráfego e dados enquanto garante o isolamento e segurança de cada serviço.
O projeto utiliza uma arquitetura de Monorepo gerenciada por NPM Workspaces.
-
Backend: Node.js, Express, TypeScript
-
Validação & ORM: Zod, Prisma
-
Banco de Dados: PostgreSQL
-
Filas & Cache: Redis, BullMQ
-
Infraestrutura: Docker, Dockerode (Docker API)
-
Proxy Reverso: Traefik v2
Siga os passos abaixo para iniciar o ambiente de desenvolvimento completo.
Certifique-se de ter instalado:
- Node.js (lts/krypton ou superior)
- Docker Desktop (Deve estar rodando)
- Git
Clone o repositório e instale as dependências. Como é um monorepo, o comando na raiz instala tudo.
git clone https://github.com/ocnaibill/cobogo.git
cd cobogo
npm install
Configure as variáveis de ambiente da API. Um arquivo de exemplo já está configurado para o ambiente Docker padrão.
cd apps/api
cp .env.example .env
Nota: Verifique se o arquivo .env gerado contém REDIS_HOST=localhost e DATABASE_URL apontando para a porta 5432.
Volte para a raiz do projeto e inicie os containers de suporte (Postgres, Redis e Traefik):
docker compose \-f infra/docker-compose.dev.yml up \-d
Com os containers rodando, execute as migrações do Prisma para criar as tabelas no PostgreSQL:
npm run db:migrate
O sistema é composto por dois processos principais que devem rodar simultaneamente. Abra dois terminais:
Terminal 1: API Server
Responsável por receber requisições HTTP e gerenciar o banco de dados.
Na raiz
npm run dev:api
A API rodará em http://localhost:3001
Terminal 2: Deploy Worker
Responsável por processar a fila, clonar repositórios e construir imagens Docker.
cd apps/api
npm run worker
Como o Frontend ainda está em desenvolvimento, utilize o Postman ou Insomnia.
Envie uma requisição POST para registrar o projeto e validar o repositório Git.
- URL: POST http://localhost:3001/projects
- Body (JSON):
{
"name": "meu-app-teste",
"repositoryUrl": "https://github.com/jatins/express-hello-world.git",
"branch": "main"
}
Copie o id retornado no passo anterior e dispare o processo de build.
Aguarde o Worker finalizar o processo (acompanhe os logs no Terminal 2). Quando finalizar, acesse no seu navegador:
👉 http://meu-app-teste.localhost
Este projeto é licenciado sob a AGPLv3.