Zipway
Um encurtador de URLs em que o redirecionamento não espera pela base de dados
- Validação de sessão em memória
- <5µs
- Níveis na validação de sessão
- 3
- Testes automatizados
- 32

O Zipway é o encurtador de URLs que está em produção em shly.pt. Quem tem conta cria links curtos com um slug aleatório ou escolhido à mão, pode pausá-los e acompanha os cliques de cada um num painel com estatísticas. Abrir um link curto não precisa de conta, e esse é o caminho que tem de ser rápido.
O projeto está dividido em dois serviços. A API em Go, com Fiber v3, segue Clean Architecture: o domínio e os serviços vivem no core e só conhecem interfaces, enquanto os handlers HTTP, o middleware de autenticação e os repositórios de PostgreSQL e Redis ficam do lado de fora, como adaptadores. Os endpoints estão documentados em OpenAPI e podem ser testados no Swagger. O frontend corre em Next.js 16 com React 19, Prisma sobre PostgreSQL, Better Auth com e-mail, GitHub e Google, e Zod a validar os formulários.
Um redirecionamento quase nunca chega à base de dados. A API procura o slug primeiro no Redis, onde cada link fica guardado durante 24 horas, e só quando não o encontra consulta o PostgreSQL com queries preparadas. A contagem do clique corre em segundo plano, por isso o visitante é redirecionado sem esperar pela escrita, e o proxy do Next.js desiste da API ao fim de 500 ms em vez de deixar a página pendurada.
A autenticação segue a mesma ideia. O Better Auth emite a sessão no frontend e a API em Go só valida o cookie, numa cascata de três níveis: primeiro uma cache em memória dentro do próprio processo, que responde em menos de 5 µs, depois o Redis e só no fim o PostgreSQL. O frontend valida e limpa os slugs personalizados antes de chamar a API, bloqueia os que colidem com rotas da aplicação, aplica rate limiting com Redis por tipo de pedido e tem 32 testes em Jest que correm no CI ao lado do ESLint, do Prettier e do build.