Desco Languages.
Estudo de inglês com áudio transcrito palavra por palavra e flashcards que tocam a voz original.

O problema
Ouvir uma faixa de áudio do começo ao fim ensina pouco. O aluno precisa ver o texto, repetir um trecho, ouvir mais devagar e revisar o vocabulário na hora certa. E o material só pode chegar a quem foi convidado.
O que construí
Construí a plataforma e o pipeline de conteúdo. São 249 faixas transcritas com Whisper rodando local, com o tempo de cada palavra. No áudio, o aluno tem transcrição clicável, ditado, loop A-B e velocidade de 0,75×. Os 1.049 flashcards usam SM-2 e tocam a palavra recortada do áudio original. Há 7 tipos de exercício com correção tolerante, XP, níveis, sequência, 12 conquistas e heatmap de atividade. O feedback de escrita com Claude é opcional. Tudo roda em Docker com Caddy e backup diário.
Decisões técnicas
01Transcrição local, palavra por palavra
As 249 faixas passaram por Whisper rodando local com MLX, que devolve o tempo de cada palavra. Não há custo por minuto de áudio e o material não sai da máquina. É o tempo por palavra que deixa a transcrição clicável e permite que o flashcard toque só aquela palavra.
02Conteúdo fica no servidor
O conteúdo ia dentro do JavaScript da página. Passei tudo para o servidor, e o JS caiu de 1,86 MB para 283 KB. A página carrega mais rápido, e quem abre o código dela não leva o material junto.
03Áudio só com sessão, e com Range
Os arquivos de áudio passam pelo servidor, que confere a sessão antes de entregar e responde a requisições Range. Sem Range, o player não consegue pular para o meio da faixa nem repetir um trecho. Sem sessão, um link vazado tocaria para qualquer um. O id do usuário também vem só da sessão, nunca do que o navegador manda.
Números
249
faixas de áudio transcritas
1.049
flashcards
Stack
- TanStack Start
- React 19
- Vite 8
- Nitro
- Tailwind 4
- shadcn/ui
- Better Auth
- node:sqlite
- Whisper
- Docker
- Caddy
Telas

Team Desk