Executando verificação de segurança...
2

[PITCH v2] LeafTok: Agora os cards viram sozinhos enquanto você escuta

Fala, pessoal!

Há 6 meses postei aqui o pitch original do LeafTok — app de leitura estilo TikTok, EPUB e PDF viram cards que você arrasta pra cima.

Recebi um monte de feedback bom (valeu de novo, @rphlfc, @whyrnld, @softbrewers, @oGuedes e companhia 🙌), e desde então o app passou por mudança grande. Vim contar.

A aposta da v2

Depois de rodar a v1 por um tempo, virou óbvio uma coisa: quem não lê, não vai começar a ler do nada. Mas escutar enquanto faz outra coisa? Rolar feed sem precisar ler? Isso a galera já faz o dia inteiro.

Então a v2 saiu apostando em duas features que mudam o uso do app por completo:

🎙️ Narração — aperta o play, o card é lido em voz alta com TTS nativo da Apple. Termina, avança pro próximo sozinho, e continua. AirPods no ouvido, celular no bolso, o livro acontece.

▶️ Auto-turn dos cards — mesma ideia, sem áudio. Os cards passam no tempo certo de leitura. Tipo autoplay do YouTube, mas pra livro. Você não precisa mais nem encostar a tela.

Quase tudo roda on-device, offline, sem login.

O Premium (via RevenueCat) é onde a coisa fica diferente: vozes curadas (testadas pra leitura longa, com pacing ajustado por idioma) e resumos de capítulo com IA — esse sim chama gpt-4o-mini, com cache por capítulo pra não estourar custo. Quem assina tá pagando pela curadoria + pela camada de IA, não pelo TTS em si.

Por que reescrevi o app inteiro em SwiftUI

A v1 com React Native era muito boa, mas quis experimentar recursos nativos que seriam muito mais tranquilos de usar, não seria necessário trabalhar com a ponte entre o nativo e o Javascrip.

Joguei fora os 14 meses de RN e reescrevi em SwiftUI nativo. A parte que mais me animou: no RN, mexer com AVSpeechSynthesizer e sincronizar com a UI era sempre briga com a camada de ponte. No SwiftUI é direto, o sintetizador conversa com a view sem intermediário. Auto-turn que ia engasgar no RN agora roda liso.

O Android continua em React Native (leaftok/) porque o esforço de manter as duas plataformas nativas sozinho não fecha. Mesmo bundle ID, mesmo backend.

Stack atual

  • iOS: SwiftUI + SwiftData + RevenueCat (LeafTokiOS/)
  • Android: Expo SDK 53 + React Native (leaftok/)
  • Backend: Phoenix/Elixir com Ash Framework + PostgreSQL + Oban
  • Narração: AVSpeechSynthesizer nativo da Apple (offline, on-device — por isso liberei no free tier)
  • Resumos com IA (Premium): gpt-4o-mini com cache por bookId + chapterIndex (1 chamada por capítulo, não por usuário)
  • Pagamento: RevenueCat
  • Analytics: PostHog

O que mudou desde o último post (com base nos comentários daqui)

  • Livro de domínio público no onboarding — sugerido pelo @rphlfc e @whyrnld. Agora dá pra testar sem precisar subir um EPUB próprio.
  • Importação de PDF estabilizada — o erro Cannot read property 'extractText' of null que o @oGuedes e @jdsmedeiros reportaram saiu na 1.9.1.
  • Áudio para de tocar ao sair do livro — pedido do @softbrewers.
  • Botão pra desabilitar o ícone de música — pedido do @leogabrielps e @CoelhoVesgo.
  • 🔜 Double-tap pra "gostei" — tá no roadmap.
  • 🔜 Sync entre dispositivos — ainda investigando a parte legal pra livros importados (o Kindle não sincroniza importados por um motivo).

O sinal dos primeiros dias

Sem anúncio pago nenhum, a retenção tá diferente da v1. Sessão média subiu, e tem usuário que ativa narração já no primeiro dia e volta no segundo. Tô coletando o número de 30 dias antes de abrir a torneira de paid.

Quer testar?

🌐 Site: https://leaftok.app
📱 App Store (iOS, v2 nativa): https://apps.apple.com/br/app/leaftok-leitor-de-livros/id6748622950
🤖 Play Store (Android, RN): https://play.google.com/store/apps/details?id=com.iagocavalcante.leaftok&pli=1

Topa testar a narração com fone e me dizer se a velocidade padrão tá boa? Tô calibrando o rate do AVSpeechSynthesizer baseado em feedback real, e o que parece OK pra mim pode tá rápido ou lento demais pra outras pessoas.

Quem já shippou autoplay/auto-advance em produto que não é vídeo — ajudou ou atrapalhou retenção? Curioso pra comparar com o que tô vendo.

Valeu pela atenção, e mais uma vez obrigado pelo pessoal que comentou no post anterior. Quase tudo que entrou na v2 saiu de feedback de vocês. 🚀

Carregando publicação patrocinada...
1
2