💡 Ideia maluca de projeto: como você resolveria este problema?
👋 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 😂.
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?
Use a 000webhost, é gratuita. É a versão free da Hostinger, possui um banco de dados MySQL.
Penso que o problema maior seja em rodar linguagens de backend de graça, mas existe o PHP e nesse ponto específico é a linguagem universal do backend, porque é onipresente, barata e roda em qualquer lugar.
Uso há um bom tempo o free tier da Oracle. Sei que existe o free tier da AWS também.
(+)Se precisar de DB, você pode tentar hospedar no Railway
minha sugestão é que você use php para fazer o backend. Usar o github para essa finalidade será muito improdutivo.
É possível usar um script php para alterar o arquivo json, dá pra pedir pro chatGTP te mostrar como fazer isso.
Hospedagem gratuita de PHP
-
Você pode usar o próprio vercel: https://php.vercel.app/
-
000webhost hospeda php gratuitamente e conta com banco de dados SQL: https://br.000webhost.com/
O Strapi provavelmente é a melhor opção porque ele é um headless CMS, é uma página de admin pronta pra você fazer todo o gerenciamento de conteúdo e ele já expõe uma API muito boa e com várias extensões (graphql por exemplo) para você consumir o conteúdo na sua página.
Salve refernando
, achei muito massa sua ideia, para coisas simples nem sempre é preciso ter um super backend.
Uma sugestão para você além dos serviços que já mencionaram anteriormente, você pode usar a API do Google Sheets ou até serviços que abstraem um pouco mais como o Sheets DB. Dá pra criar muita coisa daora com isso hehe. Boa sorte nesse projeto e vá nos atualizando sobre aqui no TabNews. :rocket:
Contribuindo com meus 20 centavos, na empresa que eu trabalho precisei montar um pequeno app web pra renderizar um monte de dados em json. Utilizei o Hygraph CMS, criei um arquivo json lá e puxo ele via GraphQL no front. Pro meu caso foi muito útil pois consigo ceder acesso à até 5 pessoas na plataforma, assim não fico responsável por manter os dados sozinho
O GitHub vai te atender bem nessa sua ideia de "API Fake de Produtos", se json for publico não precisa nem fazer deploy pra Vercel, basta acessar o arquivo json direto.
Eu já faço isso em alguns projetos pessoais, usando arquivo json no github como uma base de features toggles, me atende muito bem.
Mas para melhorar ainda mais seu conhecimento, busque por algo mais factivel com o real, experimente Firebase ou Supabase como backend, já vai elminar muito trabalho.
sua ideia maluca nada mais é do que como já foi um dia. não tem nada de louco na verdade e atende muito 90 por cento dos pequenos negócios.
Como recomendação de plataforma gratuita, tenho essas duas:
Elas tem um certo foco no uso de Redis, mas se for para estudar é perfeito.
Outra coisa é que se for apenas para estudar, pega o cupon de $100 do diolinux na linode e testa. Sei que vai acabar e que talvez não seja essa a plataforma que você prefira, mas para você ter um real aprendizado acho válido se forçar um pouco a testar essas plataformas e aprender maneiras diferentes de fazer isso.
Se você já tem a intenção de usar a vercel, pq não fazer um backend simples hospedado na propria vercel? vai ser de graça do mesmo jeito. E se é só pra servir um JSON e ter como um admin alterar ele, acredito que não terá problema algum usando a vercel. Não sei o que vc vai usar pro frontend, se for react aproveite pra usar o Next e ter back e front no mesmo projeto. Ou vc pode ter projetos separados pro front e back, a vercel suporta varios frameworks de backend também. Experimente.
Se for o caso de usar um banco de dados, existem vários serviços gratuitos também: supabase, planetscale, surrealdb, xata, firebase, entre outros.
Um CRUD atraves de uma API simples feita em express por exemplo, que pode ser hospedada na vercel, resolveria seu problema. As vezes na hora de tentar simplificar demais, você pode acabar se complicando.
A vercel também aceita backend. Ela aceita aplicativo em node, então basicamente aceita qualquer coisa. Tem vários tutoriais ensinando a usar no YouTube. Outra coisa, pra facilitar: você tem mais afinidade com react ou com vue? Ambos tem um framework com backend próprio que você pode utilizar. Eu, particularmente, recomendo o vue, então sugiro que você pesquise por nuxt. Caso prefira react, pesquise por Next. Ambos funcionam de boa na vercel e possuem backend próprios. Mais uma: Caso deseje, também existem vários backends grátis e você só precisará migrar se aumentar muito os acessos. Pesquise aí por supabase, render.com, fly.io. Mais uma coisa: as grandes clouds possuem planos grátis com limites bons, possuem créditos pra iniciar etc. Se procura por banco de dados, tem tbm alguns serviços com planos iniciais grátis, como o próprio supabase, crockach db, planetscale etc.
A plataforma Render tem um plano gratuito bem generoso, já hospedei uns 3 backends lá sem nenhum custo. A desvantagem do plano grátis é que a API dorme se ficar 15 minutos sem requisições, mas é possível contornar isso de algumas formas...
Uma ideia um pouco menos maluca se está utilizando um meta framework e se é permitido de alguma forma executar código via server. É utilizar SQLite embarcado. O resultado é o mesmo. Porém infinitamente mais rápido. Apesar do node ter um dos parsers de json mais rápidos disponíveis, ainda é lento. Claro. Estou considerando continuar com sua ideia inicial.
Da para usar a própria vercel com funções serveless e o mongoDB tem um limite free que serviria bem para esse propósito
Contribuindo um pouco com a loucura, acho que o Blogger também pode ser útil em algumas situações mais simples.
- É grátis
- É possível vincular um domínio
- Tem opções interessantes de personalização, inclusive podendo usar o próprio Java Script para alterar e remover qualquer coisa do Layout.
- Dá pra upar vários tipos de arquivos de imagem.
- Painel de controle simples.
É perfeitamente possível estilizar um blogger e deixar ele com cara de qualquer outra coisa, principalmente usando ele para fazer sites simples.
A gambiarra não tem limite.
Se for pra criar ideias malucas já vi muitos malucos utilizando uma planilha do Google Spreadsheet de banco de dados. É bem melhor do que utilizar jsons e você ainda tem a facilidade de editar os dados diretamente da planilha, sem precisar utilizar ftp.
Caramba! Curti muito essa ideia, mesmo que para fins educacionais. gosto de coisas assim, com fins de aprendizados etc... Gostei ainda mais da ideia do parceiro que recomendo a mini infraestrutura.
pq nao usar o firebase como backend? não seria mais simples?