Há uma imensidão de encurtadores de links por aí, como todo bom dev que gosta de aprender fazendo, decidi fazer o meu próprio.
O que fiz
Projetei e construí a API REST em Go, bem como por desenvolvi o frontend utilizando Next.js, aka meu maior desafio.
No backend, integrei o Firebase Auth por meio do Firebase Admin SDK, permitindo que os usuários se autentiquem e gerenciem seus próprios links. Conectei a API a um banco de dados PostgreSQL utilizando o GORM e implementei cache com Redis em alguns endpoints para acelerar as respostas.
No frontend, aproveitei este projeto para aprender e aplicar o App Router do Next.js. Criando UIs para criação e gestão de links.
Estrutura do projeto
O projeto é dividido em duas partes principais que se comunicam via HTTP:
- Frontend: Desenvolvido com Next.js, React e TypeScript, utilizando o App Router. Ele gerencia a interface do usuário e o fluxo de login.
- REST API: Desenvolvido em Go. Ele valida tokens do Firebase usando o Admin SDK, gerencia a criação e a administração de links e realiza os redirecionamentos.
- Data layer: O PostgreSQL (acessado por meio do GORM) armazena dados de usuários e links, enquanto o Redis realiza o cache de respostas em endpoints selecionados.

