0

[PITCH] Elora: quatro decisões técnicas por trás de um cartão de visita digital

A Elora está no ar: é um cartão de visita digital para quem trabalha com o próprio nome. A pessoa cria um endereço com o nome dela, monta o cartão com contato, links, agenda e formulário, e compartilha por link, QR Code ou Google Wallet.

Em vez de falar das funcionalidades, quero contar quatro decisões técnicas que tomaram mais tempo do que esperávamos. Talvez sirvam para quem está construindo algo parecido.

1. Plano gratuito que esconde em vez de apagar

Quando o teste de 7 dias acaba ou a pessoa volta para o Free, nada é apagado. O cartão público mostra só os primeiros itens até o limite do plano (5 links, 3 fotos, e assim por diante) e o resto fica guardado. Se ela assinar de novo, tudo volta. A regra mora num lugar só, na montagem do cartão público, e o editor avisa quais links ficam fora do cartão naquele plano. Salvar também não trava: links antigos acima do limite continuam salvos e só inclusões novas são recusadas.

2. Prévia do link no WhatsApp e no LinkedIn sem renderizar o app

O site é uma SPA em React. Robôs de prévia (WhatsApp, LinkedIn, X, Telegram, Slack e outros) não executam JavaScript, então o link do cartão mostraria a prévia genérica do site. No nginx, um map pelo User-Agent manda esses robôs para uma rota da API que devolve só as meta tags e uma imagem gerada no servidor com a foto, o nome, a frase e o endereço da pessoa, nas cores do tema do cartão. Os buscadores continuam recebendo o site normal.

3. Rotação de refresh token com várias abas abertas

Usamos rotação de refresh token com detecção de reuso: se um token já girado volta, todas as sessões da conta caem, porque isso costuma ser roubo. O problema é que duas abas renovando ao mesmo tempo com o mesmo cookie também parecem reuso. A solução foi agrupar os tokens por sessão (família) e aceitar, por 10 segundos depois da rotação, uma renovação a mais da mesma família, com teto de emissões. O logout apaga a família inteira, então um token antigo não ressuscita a sessão.

4. Medir visitas sem rastreador

Não há pixel de anúncio nem ferramenta de analytics de terceiros. Visitas, cliques e origem são registrados pelo próprio backend, o aviso de cookies diz exatamente isso, e o dono do cartão vê os números no painel.

A pilha: NestJS com Prisma e MySQL, Redis com BullMQ para a fila de e-mails, React com Vite e React Query no site, arquivos num armazenamento compatível com S3 e pagamentos pelo Asaas (Pix e cartão). Tudo roda numa VPS com Coolify, atrás de um túnel do Cloudflare.

O plano Free fica no ar, e as 100 primeiras contas confirmadas entram no plano Fundadores, grátis até 2030. Se você testar, críticas são muito bem-vindas, principalmente sobre o editor e a velocidade do cartão no celular: https://elora.tetriabrasil.com.br

Na Tétria também colocamos no ar a Íris, que encontra clientes para pequenos negócios. Ela tem um post próprio aqui no TabNews: https://www.tabnews.com.br/TetriaBrasil/iris-como-evitamos-mensagem-duplicada-no-whatsapp-e-ia-prometendo-o-que-a-empresa-nao-faz

Carregando publicação patrocinada...
1

Parabéns pelo lançamento. A rotação de refresh token com família por sessão e a janela de 10 segundos para abas concorrentes é mais cuidado do que a maioria dos apps tem. Duas observações nas outras duas pontas, porque são os erros mais comuns em código gerado por IA nesse stack: (1) com Prisma, o erro clássico é findUnique({ where: { id } }) ou update sem o userId da sessão no filtro, em rotas que recebem o id de um link, foto ou cartão. Vale testar, logado na conta A, editar ou apagar um link da conta B trocando o id; a regra de "esconder em vez de apagar" fica na montagem do cartão público, mas a dona dos dados tem de ser checada em cada endpoint do editor. (2) No webhook do Asaas, validar o token de autenticação que ele manda no cabeçalho e guardar o id do evento, porque reenvio sem idempotência reativa o plano duas vezes ou libera para quem não pagou. Escrevi um app de demonstração com esses erros e os testes antes/depois, se for útil: github.com/tales-andre/ai-built-app-rescue. Se quiser, faço uma varredura externa gratuita da Elora (só o que o navegador vê) e te mando por mensagem.