5lnk - Encurtador de links

Um encurtador de URLs desenvolvido com Go e Next.js, criado para aprofundar meus conhecimentos em Go e TypeScript e para explorar o App Router do Next.js, introduzido na versão 13.

O problema

Links curtos são uma ideia simples, mas um bom encurtador precisa de redirecionamentos rápidos, contas de usuário para gerenciar os links e uma API confiável por trás. Criei o 5lnk.me como uma oportunidade prática para aprimorar minhas habilidades em Go e TypeScript, ao mesmo tempo em que aprendia como funciona o App Router do Next.js; decidi desenvolvê-lo como um produto real, em vez de apenas um exercício de tutorial.

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.

Capturas de tela

11capturas de tela

5lnk.webp

Veja também