Skip to content

Privacidade e segurança ​

O Estudar guarda notas, planos e hábitos de estudo — dados pessoais. O desenho parte de uma regra simples: cada pessoa só vê os seus dados, e as chaves nunca chegam ao browser.

Onde ficam os dados ​

OndeO quê
O teu browser (localStorage)Uma cópia de trabalho de tudo, para a app abrir instantaneamente e funcionar offline
Supabase (user_data)Uma linha por utilizador com o mesmo documento, para sincronizar dispositivos
Supabase (ai_usage)Um contador por utilizador e por dia, só se ativares o limite
Fornecedor de IASó o que é preciso para cada pedido (ver abaixo)

Não há analytics nem telemetria.

Regras de acesso (RLS) ​

As duas tabelas têm Row Level Security ativa. Em user_data, as quatro operações exigem auth.uid() = user_id: mesmo com a chave pública, ninguém lê ou escreve a linha de outra pessoa. Em ai_usage não há nenhuma regra para clientes — só o servidor, com a chave secreta, lhe acede. O SQL está em supabase/migrations e explicado em Modelo de dados.

Chaves ​

ChaveOnde viveChega ao browser?
Supabase publishable/anonSegredo do Worker; entregue por /api/configSim — foi feita para isso; a RLS protege os dados
Supabase secret/service_roleSegredo do Worker (.dev.vars localmente)Nunca
Chave da IASegredo do Worker (.dev.vars localmente)Nunca
Token pessoal do Supabase (sbp_…)Memória do servidor local (npx estudar), só durante a sessãoNunca e nunca é gravado

.dev.vars e .deploy.json ficam em ~/.estudar (ou, numa cópia do repositório, na pasta do projeto, onde estão no .gitignore). Só a pasta public/ é publicada como ficheiros estáticos, por isso um ficheiro de segredos na raiz nunca é servido.

O que a IA vê ​

PedidoEnviado
Gerar planoNomes e siglas das disciplinas, tipo, carga, ECTS, datas de exame, horas por dia, as tuas notas para a IA, a fatia sugerida, o domínio medido e as bases fracas
Ler o plano de estudosA imagem que escolheste (reduzida para ~1800 px)

A IA nunca recebe o teu email, os teus registos de estudo, exercícios ou respostas. O que ela devolve é tratado como não confiável: é limpo e validado (datas, notas entre 0 e 20, disciplinas existentes) antes de chegar ao ecrã, e tu confirmas antes de guardar.

Cada pedido exige uma sessão válida (o servidor confirma o token no Supabase) e conta para o limite diário, se estiver ativo.

Dispositivos partilhados ​

Ao terminar sessão, a app apaga a cópia local (dados, timer, sessão). Se outra pessoa entrar no mesmo dispositivo, os dados locais de quem lá estava antes nunca são juntados à conta nova.

Conteúdo escrito por ti ​

Nomes de disciplinas, notas e textos são sempre escapados antes de aparecerem no ecrã — um nome como <img onerror=…> aparece como texto.

Reportar um problema de segurança ​

Abre uma issue marcada como security no GitHub, sem pormenores exploráveis, e combinamos um canal privado.

Publicado sob a licença MIT.