Pular para o conteúdo

Oraculum

Leitor de livros em PDF pelo celular, feito para abrir arquivo de origem duvidosa sem correr risco.

Ano
2026
Papel
Full stack — produto, interface e servidor
Cliente
Projeto próprio

O problema

Livro técnico costuma vir de fonte que ninguém auditou, e um PDF não carrega só texto: carrega JavaScript embutido, ação disparada na abertura e link de phishing. Abrir num leitor nativo é dar a um arquivo desconhecido acesso ao sistema. E ler pelo celular, que é onde sobra tempo, significava mandar o arquivo por e-mail para mim mesmo toda vez.

O que eu fiz

Um leitor web onde quem renderiza é sempre o PDF.js dentro do sandbox do navegador. A camada de scripting do PDF.js nunca é carregada — é o único caminho pelo qual o JavaScript de um PDF chegaria a rodar, e deixá-la de fora é omissão deliberada. Sem camada de anotação, link dentro do livro não é clicável. Os arquivos ficam fora de qualquer diretório estático e só saem por uma rota, então proteger essa rota basta.

Resultado

Leio pelo navegador do celular, com página, tempo e mapa de constância gravados sozinhos. O recorte automático de margem devolve ao texto os 12% a 15% de largura que um livro comercial gasta em margem, medindo uma vez por livro para a página não mudar de tamanho enquanto se rola. O acesso é por convite manual em linha de comando: não existe rota que crie usuário, então a garantia contra auto-cadastro é a ausência de código.

Stack

  • React 19
  • TypeScript
  • Vite
  • Express
  • SQLite
  • PDF.js
  • GSAP

Uma decisão que se paga

Um livro de três mil páginas não cabe na memória de um celular. Todas as páginas existem como caixas vazias com a proporção certa — para a barra de rolagem não mentir — e só as próximas da tela ganham canvas de verdade. Ao sair de vista, zerar a largura do canvas libera o buffer na hora; só remover o nó deixaria a memória presa até o coletor de lixo passar.

O React cuida da casca e o desenho das páginas é imperativo. Reconciliar canvas a cada rolagem seria trabalho jogado fora.

Repositório privado