Executando verificação de segurança...
0

O Palavrão do Dia: Como tirei meu projeto do localhost de forma grátis

O Palavrão do Dia

Site

Eu estava entediado tal qual um moleque na escola, então decidi escrever palavrões criativos. Acabou que me diverti tanto fazendo que escrevi uns 30. Eu ADORARIA compartilhar eles aqui, mas acho que a maioria não seria de bom tom :(

Decidi dedicar a semana pra transformar isso num novo projeto: O Palavrão do Dia é uma plataforma onde você pode sugerir e votar nos palavrões de outras pessoas. Ao meio dia, o palavrão com mais votos vira o palavrão do dia. Ficaria muito feliz se dessem uma olhada :D

Como ele foi construído?

Eu utilizei NextJS + Convex. O Next dispensa apresentações, mas o Convex vem se popularizando agora. Ele se trata de uma plataforma estilo Vercel ou Cloudflare, onde você consegue executar funções serverless. Além disso, ele conta com um banco de dados que apesar de não ser SQL, é 100% tipado, diferente de um Firebase da vida. No caso do meu projeto, o NextJS também está hospedado no Netlify ao invés da Vercel. É uma decisão curiosa mas fundamentada na lógica. Vamos por partes.

Por que preferi usar serveless pro meu projeto pessoal?

Porque seus tiers grátis são os melhores.

Diferente de uma instância EC2, uma função serverless não vai custar nem pra mim, nem pro serviço provisionado caso ninguém esteja usando. Isso permite que eles sejam muito mais generosos na hora de fornecer um tier grátis, além de que o deploy é muito mais simples.

E sim, estou contando desde o começo que ninguém vai utilizar o app. Mesmo que hajam usuários, provavelmente não serão o suficiente pra quebrar os níveis gratuitos das plataformas:

  • Cloudflare: 100.000 requisições por dia
  • Convex: 1 milhão de requisições por mês
  • Vercel: 1 milhão de requisições por mês

Seu projeto supera esses números? Parabéns, mas geralmente não é meu caso. Seu projeto exige milhares de rotas com quantidade absurda de lógica? Boa, mas no caso do Palavrão do Dia, a API tem apenas 3 rotas, e nenhuma delas é muito grande. O padrão no Convex é usar múltiplas funções pra coisas diferentes, mas a aplicação é pequena o suficiente para caber em uma única função se eu quisesse.

Graças a isso, não gastei nenhum centavo com nuvem. Mesmo uma nuvem barata seria caro demais pra mim, e gastar dólares e dólares num serviço que não sei se vai me gerar renda quando não tenho esse dinheiro. Além disso, economizei tempo, tendo em vista que os deploys nessas plataformas são muito simples. Não me preocupo com escalabilidade nem com deploy, apenas com o a plataforma.

Netlify vs Vercel

As duas plataformas são ótimas, mas o Netlify me ganhou num detalhe:

  • Na Vercel, caso sua aplicação sirva para que você ganhe dinheiro de qualquer forma, seja anúncio ou transações, você deve evoluir pro plano pago.
  • No Netlify, mesmo com anúncios ou pagamentos dentro do app, você ainda pode usar o tier free.

Isso significa que não preciso pagar adiantado para rodar pagamentos/anúncios. Claro, no momento não tenho nada disso dentro do app, mas se ele der certo, estou preparado para escalar um pouco sem me comprometer.

A diferença entre Localhost vs Serviço rodando

Sendo realista, esse projeto provavelmente me será muito mais rentável na hora de arrumar um emprego do que em anúncios ou transações. Imagino que nesse caso seja muito melhor um projeto no ar, rodando de verdade, do que um projeto no localhost.

E estou aberto a opiniões! Muita gente preferiria fazer um projeto com backend complexo, fazer readme bonitão e postar no linkedin.

No meu caso, pude compartilhar o app com meus amigos e me diverti bastante. Houve tensão na votação e várias sugestões legais. Você ainda pode ver as interações no site. Só por isso acho que já valeu a pena ter passado por toda a burocracia para realmente colocar o projeto no ar, e não simplesmente tentar fazer tudo da forma mais escalável mas demorando duas ou três semanas pra finalizar.

O projeto existe. Ele foi além da minha máquina.

Edit: adicionando imagem
Edit 2: esqueci de censurar o exemplo do input

Carregando publicação patrocinada...