👋 Salve galera, recentemente eu estava pensando como colocar em prática uma ideia maluca de projeto. Gostaria de saber a opinião de vocês a respeito e se ela funcionaria na prática ou não.

O projeto

Você precisa criar uma página que listará produtos para uma loja. Você não pode utilizar um back-end e deve utilizar a Vercel para Deploy, anulando custos. Sua página deve acessar um arquivo JSON que contém todos os produtos, funcionando como uma forma de API.

https://loja.com Página com os produtos

https://api.loja.com/produtos.json API JSON com os produtos

O problema

A princípio, tudo certo, pois podemos utilizar a Vercel para hospedar o front-end, que será uma página estática, com um conteúdo dinâmico através da API JSON. Porém, sua loja terá um administrador que poderá alterar o JSON com os produtos. Como fazer isso sem ter um back-end?

Proposta de resolução

Podemos criar um repositório no GitHub que vai hospedar o JSON com os produtos. Então, fazemos deploy desse repositório à Vercel.

https://api.loja.com/produtos.json API JSON com os produtos

Para realizar alterações no arquivo, podemos criar uma página com um formulário que irá interagir com a API do GitHub (pedindo um TOKEN de autenticação como forma de segurança), efetuando commits a fim de alterar o JSON.

https://admin.loja.com/ Página com formulário para alterações

Após isso, a Vercel vai efetuar um novo deploy do arquivo JSON atualizado. Consequentemente, nossa página listará os produtos de maneira atualizada.

Mas por que não utilizar um back-end?

Eu sei, seria muito mais fácil. Porém, não conheço nenhum serviço bom para hospedar um gratuitamente, sem que hajam várias limitações. Ainda estou estudando, gosto de criar ideias malucas que consomem o mínimo de recursos possíveis. Então, decidi realizar esse desafio.

Conclusão

Antes que me falem, eu sei que não é permitido utilizar o plano gratuito da Vercel para vender produtos, se trata apenas de um exemplo educacional.

Você tem alguma sugestão? Como você faria esse projeto? Conhece outras alternativas? Bora discutir nos comentários!

E caso eu tenha falado algum conceito errado, me perdoem, estou estudando ainda 😂.

Principal resposta

@clacerda Curti bastante sua ideia, de verdade. Como você disse, é uma ideia maluca, mas vejo vários méritos nela. O principal é a simplicidade que você busca em meio a essa complexidade toda. A ideia de usar o GitHub como uma espécie de back-end para armazenar o JSON dos produtos é criativa e mostra uma abordagem estrutura para resolver um problema, e isso é uma habilidade fundamental.

Mas, você falou sobre "consumir o mínimo de recursos possíveis", mas isso parece se aplicar apenas ao custo monetário direto. O uso do GitHub para commits e merges, e depois sincronizar isso com a Vercel, acaba sendo um processo com um overhead enorme. Você já parou para pensar na quantidade de poder de processamento necessário para cada commit e merge no Git, para enviar isso aos servidores do GitHub, e toda a computação adicional que a Microsoft vai fazer sobre isso? Sem mencionar a transmissão de dados para a Vercel. Seu arquivo JSON, que inicialmente é pequeno, pode acabar gerando uma quantidade de dados transmitidos e ciclos de CPU consumidos que é difícil até de imaginar.

Mas, mesmo sendo uma solução um tanto quanto dispendiosa em termos de recursos computacionais, ela também é incrivelmente versátil. Agora, se você quer realmente economizar recursos, eu tenho uma sugestão. Uma ideia ainda mais maluca!

Você pode usar um Raspberry Pi, um computador antigo ou mesmo um desses Orange Pi Zero3, que você compra por uns 50 reais da China. Qualquer coisa serve, até um smartphone sem uso. Conecte-o à sua rede doméstica, configure um DNS dinâmico, um servidor web e FTP. Pronto. Em vez de enviar esse arquivo JSON para o outro lado do universo, você simplesmente o transfere para essa máquina. Bem mais simples, não acha?

Você cria sua própria mini infraestrutura, mantendo o controle total e reduzindo drasticamente a quantidade de dados transmitidos e o processamento necessário. Além disso, é uma ótima oportunidade de aprendizado sobre redes, servidores web e sistemas operacionais. E o mais legal? Você faz tudo isso consumindo muito menos recursos.

E aí, o que acha dessa abordagem?

@refernando Que sensacional! Realmente, essa solução usando o GitHub seria para reduzir custos diretos. Não havia parado para pensar sobre esse lado computacional. Se considerarmos isso, deve haver custos de processamento muito altos e uma "grande volta" por um simples arquivo JSON.

Utilizar um Raspberry Pi ou um celular antigo para criar uma mini infraestrutura própria também parece ser uma boa alternativa. Essa seria de fato uma abordagem mais econômica e faria com que eu tivesse mais controle sobre o sistema, fora o conhecimento adquirido. Obrigado pelas dicas ;)

E outros 40+ comentários...