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

Construindo um Portfólio Open Source para Trabalhar na Europa

E aí, galera! Tudo tranquilo?

Tenho um objetivo bem claro: conseguir um emprego na Europa que inclua minha mudança para lá. Quero realmente morar no continente e não apenas trabalhar remoto do Brasil.

Minha trajetória na programação

Trabalhei com programação em 2014, mas acabei dando uma pausa de cinco anos e voltei em 2019. Desde então, trabalhei como freelancer desenvolvendo e-commerces e SaaS. Nesse período, fui responsável por todo o ciclo de desenvolvimento das aplicações: desde a configuração da infraestrutura em ambientes Cloud até a criação da API, do front-end e da rede, buscando segurança e eficiência de custos.

O problema é que esses projetos são privados, e eu não posso compartilhar o código. Por isso, decidi criar um projeto open source. Assim, mato dois coelhos com uma cajadada só: construo um portfólio público para recrutadores e, ao mesmo tempo, desenvolvo algo que posso realmente usar para monetizar minhas redes sociais voltadas para música.

Escolhas técnicas e infraestrutura

Como o projeto é pessoal, minha prioridade é minimizar custos. Então escolhi hospedar a API na Cloudflare Workers, que têm um custo extremamente baixo – muito menor que as Lambdas da AWS. O front-end ficará no Cloudflare Pages, e o banco de dados será o D1, também da Cloudflare.

A Cloudflare foi a melhor escolha para mim, pois, ao contrário da Vercel, não tem limites rigorosos para execução e nem custos absurdos com bandwidth. E como o projeto ainda terá poucos usuários, pagar pelo uso é mais vantajoso do que manter uma VPS mensal.

Implementação da API e autenticação

Até agora, finalizei as APIs de CRUD de usuários e autenticação. Para login, implementei duas abordagens:

  1. Autenticação tradicional (usuário e senha)
  2. One-Time Password (OTP)

O segundo método foi inspirado no Slack, que permite login apenas com o e-mail, enviando um código temporário para acesso. Achei essa experiência muito prática e decidi trazer para o meu projeto.

No meu caso, o OTP funciona com aplicativos como Google Authenticator, Microsoft Authenticator, etc. O fluxo é simples:

  1. O usuário solicita uma OAuth URL, que contém um secret e é salvo no banco encriptado.
  2. Ao cadastrar essa URL no app de autenticação, ele passa a gerar tokens de acesso a cada 30 segundos para sua conta.
  3. Com esses tokens, o usuário pode se autenticar sem precisar de senha.

É basicamente o mesmo mecanismo de autenticação de dois fatores (2FA), mas usado como método principal de login.

Arquitetura e minimalismo

Adotei uma arquitetura simples, inspirada no SOLID, mas sem excessos – por isso, evitei o uso exagerado de interfaces de contrato. Também optei por handlers em vez de controllers, pois estou usando o Hono, um framework mais adequado para funções serverless como Cloudflare Workers.

Não escolhi o Express porque ele foi projetado para rodar em servidores tradicionais, que ficam sempre ativos. Já em ambientes serverless, como Lambdas e Workers, cada requisição pode iniciar um novo ambiente de execução e encerrá-lo logo depois. O Express não foi otimizado para esse ciclo, o que pode adicionar overhead desnecessário. Já o Hono foi projetado para esse modelo, tornando a execução mais leve e eficiente.

Outro ponto importante é que quero manter o projeto o mais enxuto possível, evitando dependências desnecessárias. Em vez de instalar pacotes gigantes só para usar uma única função, prefiro desenvolver apenas o que realmente for essencial.

Se vocês gostaram da ideia e querem acompanhar, ou contribuir, o repositório da API está aqui:
👉 https://github.com/kimitrii/legion-api

Logo, trago novidades sobre como será o front-end!
Abraços galera!

Carregando publicação patrocinada...
2

Meus 2 cents:

A ideia parece otima, mas a forma me parece equivocada.

O principal objetivo eh criar um portfolio demonstrando a capacidade em diversas tecnologias - mas acaba evitando o uso destas tecnologias para nao impactar em "custo".

Uma VPS nas condicoes que voce precisa vai custar no maximo U$ 10/mes - e mais um investimento inicial na compra de dominio por outros U$ 10. Da para usar o cloudflare DNS gratuito para os apontamentos.

Serio que um investimento de U$ 10/mes em VPS como excessivo ? Se pensa assim, nem va para a europa que no primeiro cafe expresso que voce tomar vai gastar mais que isso.

Enfim - se o objetivo eh montar portfolio - monte com o que eh usado na pratica e nao se limite ao que possa ser feito "de gratis".

Nao eh para montar um projeto overbloated, mas ele precisa mostrar a que veio.