Repositório de orquestração do TeamLinks. Sobe Postgres, API, encurtador e frontend com um único Docker Compose.
O código das aplicações entra como git submodules em services/.
| Serviço | Submodule | Repositório |
|---|---|---|
| API | services/api |
buritizinhw/TeamLinks |
| Frontend | services/frontend |
buritizinhw/TeamLinks-frontend |
| Encurtador | services/shortener |
buritizinhw/TeamLinks-shortner |
Browser → Frontend (Nginx)
├─ /api → API (Spring Boot)
└─ /r → Shortener (.NET) → API → PostgreSQL
- Clone com submodules:
git clone --recurse-submodules https://github.com/buritizinhw/teamlinks-deploy.git
cd teamlinks-deploySe já clonou sem submodules:
git submodule update --init --recursive- Prepare o
.env(opcional — o script faz o mesmo):
Linux / macOS (recomendado):
make setupLinux / macOS (sem make):
chmod +x scripts/setup.sh
./scripts/setup.shWindows (PowerShell):
.\scripts\setup.ps1- Revise o
.env(senha do banco, portas e URLs públicas) e valide:
make env # confere variáveis obrigatórias
make check # .env + docker compose config- Suba o stack:
make upEquivalente a:
docker compose up --build -d. Sem fazer targets: veja a tabela em Makefile.
| Recurso | URL |
|---|---|
| Interface | http://localhost:4200 |
| Swagger (API) | http://localhost:8080/swagger-ui.html |
| Short links | http://localhost:4200/r/{code} |
Para encerrar:
docker compose downModelo em .env.example. Principais:
| Variável | Descrição |
|---|---|
DATABASE_* |
Credenciais do PostgreSQL |
FRONTEND_HOST_PORT |
Porta do frontend no host (padrão 4200) |
TEAMLINKS_API_PUBLIC_BASE_URL |
URL pública da API |
TEAMLINKS_CORS_ALLOWED_ORIGINS |
Origens CORS (frontend) |
TEAMLINKS_SHORTENER_PUBLIC_BASE_URL / SHORTENER_PUBLIC_BASE_URL |
Base dos short links (use a URL do frontend para passar por /r/) |
TEAMLINKS_PROJECT_ID |
Projeto padrão ao encurtar URLs |
Atalho para as operações do dia a dia (Linux/macOS):
| Target | Ação |
|---|---|
make setup |
Sincroniza URLs dos submodules e inicializa-os; cria .env se faltar |
make env |
Valida .env contra .env.example |
make check |
make env + docker compose config -q |
make build |
docker compose build |
make up |
docker compose up --build -d |
make down |
docker compose down |
make logs |
Segue os logs dos containers |
make update |
Puxa a versão mais recente dos submódulos e deixa pronto para commit |
No Windows (PowerShell), use scripts/setup.ps1 e scripts/check-env.ps1.
teamlinks-deploy/
├── .github/workflows/ci.yml # valida compose + builda imagens em PR/main
├── docker-compose.yml
├── .env.example
├── .gitmodules
├── LICENSE
├── Makefile
├── scripts/
│ ├── setup.ps1 / setup.sh
│ └── check-env.ps1 / check-env.sh
└── services/ # git submodules
├── api/ → TeamLinks
├── frontend/ → TeamLinks-frontend
└── shortener/ → TeamLinks-shortner
Para puxar o commit mais recente de cada serviço e registrar no deploy:
make update
git commit -m "chore: update service submodules"
docker compose up --buildOu manualmente:
git submodule update --remote --merge
git add services/api services/frontend services/shortener
git commit -m "chore: update service submodules"
docker compose up --buildOu use o script de setup (só faz submodule update --init no commit já pinado + cria .env):
.\scripts\setup.ps1- Postgres e shortener não publicam porta no host; o acesso externo passa pelo frontend (e Swagger na API
8080). - O deploy pin um commit de cada submodule; atualize com
--remotequando quiser acompanharmaindos serviços. - Para desenvolvimento isolado de um serviço, use o Compose de cada repositório individual.
Quer ajudar? Veja CONTRIBUTING.md. Este repositório é MIT.