← Todos os projetos

02Estudo de caso

Caderno

Uma aplicação de estudo para Windows que junta os materiais e prazos de cada cadeira, monta o plano do dia e treina a matéria a partir dos PDFs. Sem contas nem servidor: tudo fica no computador de quem a usa.

Papel
Projeto a solo: produto, design, código, instalador e site
Estado
Open source v0.3 · MIT
Stack
Electron, Node.js, JavaScript com tipos verificados, SQLite, unpdf, Zod
Ligações
Descarregar ↗
Código ↗
Ecrã Hoje do Caderno, com o plano de estudo do dia e os próximos prazos

O problema

Durante o semestre, os materiais de cada cadeira estão no Moodle, os prazos em vários sítios e o tempo de estudo nunca chega para tudo. As ferramentas com IA que existem pedem uma conta, enviam os documentos para um servidor e cobram uma subscrição.

Eu queria uma aplicação que organizasse o estudo sozinha a partir do Moodle, que funcionasse sem IA e que, quando a IA fosse útil, usasse a chave de cada pessoa, sem intermediários.

O que construí

  • Ligação ao Moodle. Pede uma chave aos serviços web da plataforma (a palavra-passe nunca é guardada), lê as cadeiras escolhidas e descarrega os ficheiros. Volta a sincronizar a cada 6 horas.
  • Plano do dia sem IA. Estima o tempo de cada PDF, usa as datas de exame e a disponibilidade de cada dia, e recalcula quando um bloco é marcado como estudado.
  • Treino. Flashcards com repetição espaçada, recuperação ativa, folha de revisão, simulados de dez perguntas em 20 minutos e blocos de foco.
  • Explicações com fontes. Perguntas sobre um PDF, com ligações às páginas usadas na resposta.
  • IA com a chave de cada pessoa. Anthropic, OpenAI, DeepSeek, Groq ou qualquer serviço compatível. Nada é analisado sem um clique explícito.
  • Distribuição a sério. Instalador para Windows nas releases do GitHub, guia de início em cinco passos e um site próprio.

Arquitetura

Uma aplicação Electron em que o processo principal (Node.js) faz o trabalho pesado: sincronização, extração de texto, plano, cifra e chamadas à IA. A interface comunica com ele e os dados ficam numa base SQLite local.

Só o Moodle e a IA precisam de internet. Os PDFs abrem offline no visualizador da aplicação.

Decisões técnicas

01Local primeiro, sem contas

Não há servidor para manter nem dados de estudantes para proteger num sítio central. Materiais em Documentos, base de dados em %APPDATA%, exportação em JSON e um botão para apagar tudo.

02A IA é um extra, não a base

O plano funciona só com as datas e a duração estimada dos materiais. A IA acrescenta resumos, perguntas e flashcards, mas a aplicação continua útil sem ela.

03Segredos sempre cifrados

A chave de IA e a chave do Moodle são cifradas com AES-256-GCM e nunca aparecem na exportação. Só é enviado texto de PDFs que não foram classificados como sensíveis.

04Vários fornecedores atrás de uma interface

Um adaptador fala a Messages API da Anthropic, a Responses API da OpenAI e Chat Completions para os restantes. Mudar de fornecedor apaga os resumos antigos, para não misturar resultados.

05JavaScript com tipos verificados

Módulos ES em JavaScript, com o compilador de TypeScript a verificar os tipos (checkJs). Fica sem passo de compilação no código da aplicação, mas com a rede de segurança dos tipos.

Capturas

Flashcards do Caderno com repetição espaçada
Flashcards com repetição espaçada
Explicações do Caderno com ligações às páginas do PDF
Explicações com fontes

A seguir

Atualizações automáticas a partir das releases, instalador assinado, OCR para PDFs digitalizados, versões para macOS e Linux e uma ligação ao Moodle por token para contas com SSO.