Skip to content

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

TeamLinks Deploy

CI

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

Pré-requisitos


Início rápido

  1. Clone com submodules:
git clone --recurse-submodules https://github.com/buritizinhw/teamlinks-deploy.git
cd teamlinks-deploy

Se já clonou sem submodules:

git submodule update --init --recursive
  1. Prepare o .env (opcional — o script faz o mesmo):

Linux / macOS (recomendado):

make setup

Linux / macOS (sem make):

chmod +x scripts/setup.sh
./scripts/setup.sh

Windows (PowerShell):

.\scripts\setup.ps1
  1. 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
  1. Suba o stack:
make up

Equivalente 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 down

Variáveis de ambiente

Modelo 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

Makefile

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.

Estrutura

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

Atualizar os submodules

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 --build

Ou manualmente:

git submodule update --remote --merge
git add services/api services/frontend services/shortener
git commit -m "chore: update service submodules"
docker compose up --build

Ou use o script de setup (só faz submodule update --init no commit já pinado + cria .env):

.\scripts\setup.ps1

Notas

  • 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 --remote quando quiser acompanhar main dos serviços.
  • Para desenvolvimento isolado de um serviço, use o Compose de cada repositório individual.

Contribuindo

Quer ajudar? Veja CONTRIBUTING.md. Este repositório é MIT.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages