§1O problema
Conteúdo interativo (antes/depois, mapa, 3D, mídia) costuma ficar preso em apps ou redes sociais. A ideia é um jeito simples de montar e compartilhar isso por link, sem seguir, curtir ou algoritmo. Esta é a segunda versão, recomeçada do zero depois de uma primeira (rede social) que foi congelada.
§2O que eu construí
- Visualizador de cardsDeslizar na horizontal troca de card, na vertical troca de groopse (inspirado em um formato de notícias em cards).
- Tipos de card10 tipos.
- Editor e contasEditor para criar groopses, contas e login (inclusive entrar com a Apple).
- CompartilhamentoPor link, com prévia, descoberta leve e moderação.
- Regra do feedFeed vertical simples e explicável (sem algoritmo).
- APIServidor próprio separado da tela web, com documentação.
- Base para lançarTextos legais e e-mail de envio configurados.
- TestesUnitários e de ponta a ponta (Vitest e Playwright).
§3As partes difíceis
5 itens- 01
Regra de gestos como diferencial
Dentro do card todo toque é do card; trocar de card só pela faixa de baixo e de groopse só pela faixa da direita. Evita sair do card sem querer.
- 02
Arquitetura em camadas
O servidor é o único dono dos dados; a web só tem tela e um BFF e nunca abre o banco; tipos e validações compartilhados em um pacote comum.
- 03
Pronto para trocar de hospedagem
Banco só via Drizzle, mídia só por uma camada MediaStore, tudo por variável de ambiente.
- 04
Produção e desenvolvimento separados
Portas e bancos distintos rodando na mesma máquina.
- 05
Preview de link e card de abertura
Funcionam sem conta.
§4Resultado
- itens do plano concluídos
- 36 / 40
- tipos de card
- 10
Em produção na minha rede privada desde 31/10/2026. 36 dos 40 itens do plano estão concluídos. Um app nativo (Expo) está planejado para depois do lançamento.
§5Stack
- Next.js 16 (App Router)
- React 19
- Tailwind 4
- Zustand
- Hono
- Drizzle ORM
- SQLite
- Better Auth
- Zod 4
- TypeScript
- Vitest
- Playwright
- pm2
- Tailscale