APRENDIZADO & COGNIÇÃO

[Pitch] Criei um encurtador de links focado em alta performance com API para automação (em produção e precisando de feedback)

Oi, pessoal! Meu nome é Gabriel, e recentemente decidi tratar uma dor que percebi em encurtadores de links existentes: além…

Oi, pessoal!

Meu nome é Gabriel, e recentemente decidi tratar uma dor que percebi em encurtadores de links existentes: além de serem à base de assinaturas, a maioria limita recursos por tier, têm rate limits muito restritos, ou cobram valores desproporcionais assim que seu uso começa a escalar, e nenhuma (até onde eu sei) implementa o modelo pay-as-you-go.

Penso que tudo isso prejudica tanto quem está começando quanto quem precisa de escala/alto volume sem perder velocidade, e quem tem uso sazonal desse tipo de ferramenta.

Também vi que é perfeitamente possível providenciar todos os recursos premium desse tipo de ferramente para todos, e cobrar apenas em cima do ganho real do usuário, e não da possibilidade de uso, e ainda favorecer o mercado nacional.

Pensando nisso, depois de ver outros projetos de encurtadores (incluindo alguns que apareceram por aqui), decidi construir meu próprio encurtador de links focado em devs, automação e alto volume.

O projeto acabou de subir em produção, e ainda estou no clássico “projeto no ar mas zero usuários”, então resolvi postar aqui no TabNews para pedir feedback!

Como foi construído (Stack)

A ideia principal da arquitetura foi focar em baixa latência de redirecionamento e facilidade de integração via API:

  • Frontend: Vue 3 (Tailwind)
  • Backend: Rust (Axum)
  • DB/Cache: Redis (com HyperLogLog para analytics em tempo real) e PostgreSQL (com TimescaleDB para armazenar analytics a longo prazo)
  • Infra: Backend na Magalu Cloud (servidores em São Paulo) e frontend na Cloudflare Pages (rápido e com uma segurança incrível)

Um pouquinho da arquitetura

Sem entrar muito nos detalhes para ser breve. Mas posso falar mais a fundo se quiserem!

Processamento de redirects

Usar o PostgreSQL diretamente para todos os redirects sería o mais intuitivo, mas também geraria um gargalo gigante rapidamente, afinal todo esse processamento precisa acontecer:

  1. Usuário acessa um redirect /xyz
  2. Token existe? Se sim:
  3. Workspace do token tem créditos de click? Se sim:
  4. Debita 1 crédito de click
  5. Salva os metadados do click no espaço de analytics
  6. Redireciona o usuário

E tudo isso precisa acontecer em poucos milissegundos, de maneira assíncrona, para não travar outros acessos simultâneos.

Pra isso acontecer, usamos um cache (via Redis) dos redirects, seus workspaces, e os créditos de cada workspaces. Esses dados são persistidos depois no PostgreSQL.

Também implementei alguns scripts em Lua pra garantir que várias operações simultâneas não entrassem em colisão.

Já para as métricas, em cada acesso adicionamos os dados no próprio Redis, para serem consumidos/processados em lote depois.

Analytics em tempo real

Um conjunto reduzido de dados de cada acesso são imediatamente adicionados em um bucket do Redis (via HyperLogLog), de onde são consumidos os dados mais recentes, para acompanhar em tempo real.

O HyperLogLog é um algoritmo probabilístico usado para contar a quantidade de elementos únicos (cardinalidade) em conjuntos de dados massivos.

Os dados completos são então adicionados em um Redis Stream, para que um outro serviço consumidor, que “escuta” esse Redis Stream, salve dados em lote no TimescaleDB.

O TimescaleDB é uma extensão de código aberto para o PostgreSQL projetada especificamente para armazenar, gerenciar e analisar dados de séries temporais.

Para a geolocalização, uso o dbip-city-lite.mmdb localmente para fazer consultas rápidas de estado e cidade a partir do IP. Não é o mais poderoso do mercado, mas vi que atende suficientemente bem para esse caso de uso.

Acho importante falar também que, apesar de contabilizar acessos únicos e usar geolocalização, o IP dos acessos não é salvo no BD! Na verdade, é gerada uma hash de visitante único a partir do IP e do device usado.


Esses pontos chave permitiram uma arquitetura facilmente escalável, muito performática, e com um consumo de RAM/CPU extremamente baixo.

O que a ferramenta entrega hoje

  • Workspaces: Os links são todos agregados por workspaces, que podem ser em número ilimitado, com links ilimitados e membros ilimitados!
  • API REST: Via API keys, para quem quiser integrar nos seus projetos.
  • Analytics em tempo real: Acompanhamento de cliques, referrers, geolocalização e ranking, tudo em tempo real.
  • Pay-as-you-go: Você só paga pelo seu crescimento real, sem assinaturas.
  • Nada expira: Links, workspaces, etc. não expiram. Você compra créditos de cliques, que vão sendo gastos à medida em que pessoas de fato clicam nos seus links.

Como você pode ajudar?

O produto já está funcional e pronto para uso em produção, mas preciso validar o estresse real, a usabilidade da ferramenta, o que posso ajustar ou implementar, etc.

Se você encurta links, ou trabalha em algum projeto que consome APIs de encurtamento ou dispara links em massa, ficaria muito grato se você testasse: volink.dev

Documentação da API: volink.dev/docs

Toda crítica construtiva, bug report ou sugestão de arquitetura/código é mais que bem-vinda!

Agradeço muito, um grande abraço!

Perguntas frequentes

Respostas institucionais sobre esta cobertura, fontes e limites editoriais.

Sobre o que trata “[Pitch] Criei um encurtador de links focado em alta performance…”?
Oi, pessoal!Meu nome é Gabriel, e recentemente decidi tratar uma dor que percebi em encurtadores de links existentes: além de serem à base de assinaturas, a maioria limita recursos por tier, têm rate limits muito restritos,…
O que a matéria explica sobre “Como foi construído (Stack)”?
A ideia principal da arquitetura foi focar em baixa latência de redirecionamento e facilidade de integração via API:Frontend: Vue 3 (Tailwind)Backend: Rust (Axum)DB/Cache: Redis (com HyperLogLog para analytics em tempo real) e PostgreSQL (com TimescaleDB para armazenar analytics a longo prazo)Infra: Backend…
O que a matéria explica sobre “O que a ferramenta entrega hoje”?
Workspaces: Os links são todos agregados por workspaces, que podem ser em número ilimitado, com links ilimitados e membros ilimitados!API REST: Via API keys, para quem quiser integrar nos seus projetos.Analytics em tempo real: Acompanhamento de cliques, referrers, geolocalização e ranking, tudo…
Como você pode ajudar?
O produto já está funcional e pronto para uso em produção, mas preciso validar o estresse real, a usabilidade da ferramenta, o que posso ajustar ou implementar, etc.Se você encurta links, ou trabalha em algum projeto que consome APIs de encurtamento ou…
Quem edita o conteúdo do Estrato Mente?
A cobertura é produzida e revisada pela equipe editorial do Estrato Mente, com editor-chefe responsável pela linha editorial. Conheça a redação em https://mente.estrato.cc/equipe/.
Quais fontes o Estrato prioriza?
Priorizamos fontes primárias (órgãos oficiais, balanços, estudos revisados, documentos públicos) e cruzamos informações antes da publicação, conforme a política editorial.
Como solicitar correção de uma matéria?
Envie o pedido pela página de Correções (https://mente.estrato.cc/correcoes/) ou Contato (https://mente.estrato.cc/contato/). Erros materiais são corrigidos com registro da atualização.
O conteúdo constitui aconselhamento profissional?
Não. As matérias têm caráter informativo e jornalístico. Decisões financeiras, de saúde, jurídicas ou educacionais devem considerar profissionais habilitados e a sua situação particular.
WhatsApp X LinkedIn
Compartilhar: LinkedIn
Bruno Leite

Bruno Leite

Bruno Leite integra a equipe editorial do Estrato Mente, vertical da rede Estrato, na função de Repórter de Aprendizado. O escopo permanente de cobertura inclui estudo, memória e foco, com atenção ao leitor brasileiro que busca contexto factual, datas oficiais e implicações práticas. Na produção diária, prioriza fontes primárias (órgãos públicos, balanços, papers e documentos oficiais), cruza pelo menos duas referências independentes quando o tema é contestado e evita manchetes que prometam certeza onde há incerteza. Critérios de qualidade: lead com o fato principal, atribuição clara de autoria da equipe Estrato, atualização com selo quando há mudança material e linguagem acessível sem simplificar demais o risco ou o contexto. Trabalha sob revisão da mesa editorial e do editor-chefe do portal. Matérias YMYL recebem segunda leitura antes da publicação e podem ser atualizadas quando surgem novos dados oficiais. Limites: este perfil descreve o papel editorial na marca Estrato. O conteúdo publicado é informativo e não constitui aconselhamento médico, financeiro, jurídico ou profissional personalizado. Transparência ao leitor: metodologia em /metodologia/, ética em /etica-editorial/, correções em /correcoes/, equipe em /equipe/ e canal em /contato/ ([email protected]). Na página-mãe da rede, a bio ampliada e o arquivo de matérias ficam em estrato.cc/blog/, com link para o arquivo do autor em cada portal.

Deixe um comentário