The Code Codex
Tema
← Projetos

Switchyard

Em construçãoVer demo ↗

Sobre este projeto

Times que mantêm um produto espalhado em vários repositórios (web, api, mobile, infraestrutura…) acabam com o mesmo ritual repetido todos os dias: atualizar cada repo, subir os servidores certos nas portas certas, mover o card no board, criar a branch com o nome combinado, abrir o PR, rodar os testes E2E contra o ambiente certo, olhar os logs na nuvem.

O Switchyard — o pátio de manobras onde os trens são organizados e despachados — junta tudo isso num só lugar:

  • Painel web (Next.js) rodando só em localhost, para quem prefere clicar.
  • CLI syd (Go), com saída --json e flags não interativas, pensada também para ser operada por agentes de IA.
  • Um único switchyard.yaml descreve o projeto: repositórios, comandos de inicialização, ambientes, board e fases, mocks, bancos e testes. Trocar de projeto (ou de board) é trocar o arquivo, não o código.

Ele nasceu como ferramenta interna de um time e está sendo transformado num projeto genérico, sem nada específico de um cliente.

Módulos

MóduloO que faz
Dev LauncherSobe os serviços de cada repositório e monitora as portas configuradas
Painel GitStatus de todos os repos, atualização em lote, checkout conjunto, limpeza de branches e locks
Azure BoardsInicia a tarefa (move o card e cria a branch), commit vinculado, code review e retrabalho, com as fases do board definidas na configuração
GitHubPRs do time, checks de CI e disparo de workflows
Testes E2EDescobre e executa os testes Playwright do repositório alvo contra o ambiente escolhido, com log ao vivo e histórico
MocksServidores HTTP locais com respostas fixas por rota, para simular integrações externas
BancoPerfis de conexão e catálogo de consultas de diagnóstico
Logs na nuvemBusca e acompanhamento ao vivo dos logs de Azure Container Apps
SetupDiagnóstico e instalação das ferramentas necessárias, segredos fora do repositório

Configuração

name: Acme Platform
repos:
- name: web
path: acme-web
launch: { command: npm run dev, port: 3000 }
azureBoards:
organization: acme
project: Acme Platform
team: Acme Team
branchPattern: "{type}/AB#{id}-{slug}"
phases:
- { name: In Development, role: start }
- { name: Code Review, role: review }
- { name: Ready for Testing, role: test }