[PITCH] Como eu criei um clone do Insomnia no terminal com golang
Não você não leu errado, eu resolvi criar clone do Isomnia no terminal. Tudo isso começou porque eu decidi que queria aprender outras linguagens e não ficar refém apenas do ecossistema JavaScript. Uma das linguagens que eu resolvi aprender foi Golang, e meu primeiro projeto foi o gorest. A ideia seria criar uma aplicação de terminal que fosse inspirada no Insomnia, já que eu gosto de fazer tudo pelo terminal. Para isso eu usei a lib tview, a mesma usada em grandes projetos como o k9s.
Ideia de layout
Como o objetivo é ser semelhante ao Insomnia, eu coloquei a lista de requisições na esquerda, os parâmetros da requisição no meio e a resposta na direita.
Insomnia
Gorest
Organização de código
Como esse foi meu primeiro projeto, posso ter errado em alguns padrões, mas procurei seguir as especificações de projeto do golang standards.
Dificuldades
Sou do mundo do desenvolvimento web e a criação de uma aplicação visual de terminal com uma linguagem nova foi um pouco difícil no começo. A parte de debug me deixava perdido às vezes, mas foi muito bom ver o projeto tomar forma. Se você tem experiência com golang, por favor corrija meus erros (e vícios de outras linguagens).
Deploy
O deploy foi feito com a ferramenta goreleaser. Ele o build de projetos go, permitindo que você configure a cross-compilation e entregue os binários por meio de diversas plataformas. Vale a pena conhecer essa ferramenta. Por enquanto, eu estou usando apenas as releases do GitHub.
Roadmap
- Salvar requests localmente com sqlite;
- Poder colar requests curl como o Insomnia permite;
- Adicionar temas;
- Adicionar o gorest a alguns gerenciadores de pacotes como flatpak, snap, aur, winget etc;
Muito bom! Parabéns pelo projeto. Como usuário de Linux, também curto pra caramba aplicações feitas pelo terminal haha! Sucesso aí no projeto. Já fui lá no Github e dei uma estrela para contribuir. Tentar rodar local na minha máquina depois.
Que maneiro meu amigo, eu tambem sou apaixonado por ferramentas de linha de comando. Essa idea que você teve é muito interessante/desafiadora pois você precisa conhecer de fato o protocolo HTTP para poder implementar algo desse tipo. Meus parebens mesmo, sair do javascript e cair pro golang é muito desafiador.
Adorei o projeto! Estou começando no mundo Go e esse Golang Standards, que você citou, é um achado, valeu. Atualmente, eu uso a extensão Rest API client no VSCode para fazer requisições, mas gosto bastante de usar o terminal e fazer CLIs (apesar de nunca ter feito uma TUI). Dei uma estrelinha ⭐