O ponto de ruptura
Estava no Twitter (agora X) há quase uma década. Costumava ser útil — um feed curado das pessoas que eu seguia, em ordem cronológica. Abria por dez minutos, me atualizava e fechava.
Em algum momento de 2024 isso deixou de ser verdade. A aba Para você virou padrão. Posts patrocinados se multiplicaram. Isca de engajamento virou o estilo dominante. Eu abria o X para ver três amigos e fechava 40 minutos depois sem ler nada que vim ver.
Tentei o óbvio — mudar para a aba Seguindo, silenciar palavras, criar listas. Cada coisa ajudou um pouco. Mas o algoritmo Para você se resetava sozinho, a barra lateral direita continuava mostrando tendências irrelevantes e anúncios apareciam mesmo assim. Não havia um único lugar para desligar o ruído.
A primeira versão: 200 linhas de JavaScript
Escrevi uma pequena extensão Chrome num fim de semana. Fazia três coisas:
- Escondia posts marcados como "Promoted"
- Escondia a barra lateral direita
- Forçava a timeline para "Seguindo"
Era isso. ~200 linhas, sem interface, só ativável pelo ícone da extensão. Compartilhei o código com amigos que também viviam no X. Começaram a pedir funções.
"Pode silenciar contas sem deixar de segui-las?" Claro.
"Pode filtrar por palavra-chave?" Sim.
"Pode resumir threads longas com IA?" Hmm. Isso é uma função de verdade.
De script a produto
O pedido do resumo com IA foi o momento em que deixou de ser script de hobby. Para fazer IA direito eu precisava de:
- Um backend (mandar chaves de API de uma extensão Chrome é desastre de segurança)
- Autenticação (para saber quem pode chamar a IA)
- Limite de uso (para um usuário não esgotar meu orçamento do Gemini)
- Pagamentos (para usuários pesados poderem pagar por resumos ilimitados)
Nada disso estava no plano original de "extensão de fim de semana". Mas pensei: se vou construir tudo isso para uma função, melhor fazer direito e o resto da extensão usar também — sincronizar filtros entre dispositivos, guardar preferências na nuvem, etc.
O projeto de hobby virou um SaaS completo. Olhando para trás: provavelmente exagero para a v1. Mas as partes que mantive (auth, sync, pagamentos) deixam o produto genuinamente melhor, não me arrependo.
A stack técnica
Para quem quiser construir um SaaS pequeno parecido, o que funcionou:
- Backend: Node + Express + tRPC + Drizzle, no Railway. ~5$/mês.
- Banco de dados: MySQL (também no Railway).
- Frontend (site): HTML/CSS/JS puro, sem framework. No Cloudflare Workers. Grátis.
- Domínio: Cloudflare Registrar. ~10$/ano.
- E-mail: SendGrid plano grátis (100/dia, suficiente para app pequeno).
- Pagamentos: Stripe Checkout + Customer Portal.
- IA: Google Gemini (plano grátis cobre muito antes de precisar pagar).
Custo mensal total: menos de 10$. A extensão está na Chrome Web Store (5$ uma vez pela conta de desenvolvedor).
O que me surpreendeu
Auth é mais difícil do que parece. E-mail + senha com verificação, reset, sessões, JWT, limite no login — é uma lista longa. Não teria feito do zero se soubesse o trabalho envolvido. Use uma biblioteca ou serviço se puder.
Stripe é mais fácil do que parece. Dois endpoints tRPC (checkout + customer portal), um webhook, pronto. A parte difícil é verificar sua conta bancária, não a integração.
A revisão da Chrome Web Store é imprevisível. Meu primeiro envio foi rejeitado por uma permissão não usada. O segundo foi aprovado em dias. Cada atualização passa por revisão de novo — esteja pronto para esperar 1-7 dias.
O que vem
A extensão está no ar, o site em pé, pagamentos funcionam fim a fim. Os próximos ~3 meses são sobre distribuição: posts de blog (você está lendo um), lançamento no Product Hunt, Reddit, IndieHackers.
Se você tem um feed do X / Twitter que te incomoda, eu adoraria que testasse. O plano grátis cobre o que a maioria precisa. E se tiver feedback, meu e-mail está no rodapé — leio tudo.