Vou exclusivamente programar o TabNews usando VSCode na Nuvem (GitHub Codespaces)
Me coloquei um desafio de apenas utilizar o GitHub Codespaces para programar o TabNews. Para quem não conhece, o Codespaces é um espaço na nuvem para você programar utilizando Visual Studio Code e que por enquanto é gratuito para contas individuais. Inclusive, o próprio GitHub está sendo programado dentro do Codespaces.
Será que roda o TabNews por completo?
Minha primeira pergunta foi entender se o Codespaces conseguiria rodar o TabNews por completo em ambiente desenvolvimento, isso significa subir tanto o core da aplicação, quanto os serviços em Docker para Postgres e MailCatcher (que simula o recebimento real de emails por SMTP
).
Mas tinha que atender a uma característica importante: precisa ser um processo simples e transparente... e turma, o resultado me surpreendeu, olha que massa!
O GIF abaixo mostra em tempo-real quanto demorou para criar um ambiente de desenvolvimento do zero a partir da branch main
do repositório do TabNews:
⚠️ O repositório Open Source do TabNews ainda está em Modo Privado. Caso queira receber um convite para participar, leia esta publicação.
Setup inicial automático
Automaticamente após criar o ambiente, o Codespaces identificou que o repositório possui dependências de um projeto em Node.js e automaticamente começou a instalar elas:
O teste final, roda mesmo e de forma simples?
E agora veio o teste final que era, sem configurar nada, será que o ambiente consegue rodar todos os testes de integração com sucesso se eu simplesmente rodar o comando npm test
? Em resumo, esse comando no repositório do TabNews irá fazer o seguinte:
- Matar a porta
3000
para evitar conflito de portas. - Subir o Docker do Postgres.
- Subir o Docker do Mailcatcher.
- Subir a aplicação em Next.js.
- Rodar todos os 322 testes de integração pelo Jest (que usa para valer todos os serviços).
- Derrubar todos os serviços.
Segue abaixo o resultado de rodar npm test
pela primeira vez, onde esse GIF também está em tempo-real, tanto que fiquei mexendo o mouse principalmente nas partes que não tinha nenhuma atualização de tela:
Conclusão
Por enquanto gostei e quero agora implementar de fora a fora uma nova feature que mexa ao mesmo tempo no Banco de Dados, no Backend e no Frontend e irei trazer aqui os resultados 🤝