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
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.