O que o Aprova faz
Telas
Como instalar no Windows
- Baixe o Aprova e extraia o .zip numa pasta (ex.:
Documentos\Aprova).
- Dê dois cliques em
Abrir Aprova.bat. Na primeira vez abre a janela Preparando o Aprova: se faltar o Python, ele é instalado, e depois vêm as bibliotecas do app (de 5 a 10 minutos, com internet).
- Pronto: o Aprova abre sozinho e cria o atalho Aprova na área de trabalho. Dali em diante, abra por ele.
[!TIP]
Android (em teste): baixe o Aprova-android.apk no celular, abra o arquivo e permita instalar apps desta fonte quando o Android pedir. Em celulares mais antigos (32 bits), use o Aprova-android-antigo.apk. O app do celular ainda está em teste.
[!NOTE]
Atualizações: da versão 1.9 em diante, o Aprova procura versão nova sozinho e mostra o aviso Nova versão no Início: é só tocar em Atualizar e depois em Reiniciar agora. Quem tem a 1.8 ou anterior precisa baixar o .zip uma última vez e extrair por cima da pasta antiga (os estudos ficam guardados à parte, na pasta .aprova).
[!TIP]
Recebeu um convite de grupo? Abra o link no computador e clique em Entrar no grupo. Se o Aprova ainda não estiver instalado, a página leva ao download e o convite aparece sozinho quando o app abrir.
No macOS e no Linux: ./iniciar.sh (ou ./iniciar.sh --web para abrir no navegador).
Contas: aluno e administrador
| Sem conta | Aluno | Administrador |
|---|
| Provas, simulados, metas, revisão e painel | ✅ | ✅ | ✅ |
| Grupos, planos de estudo e ranking | | ✅ | ✅ |
| Comunicados na tela Início | | ✅ | ✅ |
| Usuários, bloqueio, grupos e comunicados (tela Admin) | | | ✅ |
- A primeira conta criada no servidor vira administrador sozinha. Depois disso, só um administrador transforma outra conta em administrador.
- Quem chega por um convite pode entrar com uma conta rápida (só o apelido). Ela fica naquele computador até a pessoa colocar e-mail e senha em Minha conta → Proteger minha conta. Conta rápida nunca vira administrador.
- Cada conta tem os próprios estudos, então duas pessoas podem usar o mesmo computador.
Privacidade
- Seus estudos (provas, respostas, metas, tempo e PDFs marcados) ficam no seu computador, na pasta
.aprova da sua pasta de usuário.
- No servidor vão só o apelido, o concurso, os números da semana e o que você escreve nos grupos. O e-mail nunca aparece para ninguém e a senha não fica no computador.
- As regras de acesso ficam no próprio servidor (
supabase/ranking.sql): só quem está no grupo lê as mensagens dele, e um aluno não consegue se promover, mesmo mexendo no app.
- Em Minha conta dá para apagar a conta e todos os dados do servidor.
Guia completo
O passo a passo de cada função (busca de provas, encher a biblioteca, montar simulado, lembretes, ranking, grupos, convite, chave do Claude, uso no celular e limites) está no Guia completo.
Contas, ranking, grupos e convites usam um projeto do Supabase no plano grátis. O endereço e a chave pública do servidor oficial vêm em aprova/servidor.json, então quem baixa o app já entra nele. Para usar um servidor seu:
- Crie um projeto Free no Supabase.
- Em SQL Editor, cole todo o
supabase/ranking.sql e clique em Run. Pode rodar de novo a cada versão: ele acrescenta o que falta sem apagar nada.
- Em Authentication → Sign In / Providers: desligue Confirm email e ligue Allow anonymous sign-ins e Allow manual linking (conta rápida dos convites).
- No botão Connect (ou Settings → API Keys), copie a Project URL e a chave publishable.
- No Aprova, na tela de entrada: Ligar as contas online, cole os dois e salve (cria o
ranking.json, que vale mais que o servidor.json).
- Crie a sua conta primeiro: ela vira a de administrador.
Nunca coloque no app a chave secret / service_role (o Aprova recusa).
Fotos e arquivos dos grupos ficam no Storage do mesmo projeto, numa pasta privada chamada anexos (criada pelo próprio ranking.sql, com as regras de acesso). As fotos de perfil ficam na pasta privada avatares (uma por pessoa, em WebP pequeno); o personagem é só uma lista curta de escolhas guardada no perfil. A busca de GIFs usa o GIPHY: o administrador cola a chave grátis em Admin → Configurações.
A página do convite e a página do app ficam em docs/ e são publicadas pelo GitHub Pages (branch main, pasta /docs).
- Faça as mudanças e rode os testes (
python -m pytest -q tests).
python ferramentas/nova_versao.py 1.9.1 "O que mudou" "Outra novidade": muda o número da versão e escreve o docs/versao.json, que é o que o app consulta.
git commit -am "Versão 1.9.1" e git push na main.
O robô publicar.yml cria a etiqueta v1.9.1 e a página da versão com o Aprova.zip. O versao.json aponta para o .zip dessa etiqueta: o que for para a main depois (testes, rascunhos) só chega às pessoas na versão seguinte. O botão de baixar do site e deste README sempre leva à última versão publicada.
Em até 12 horas (ou na hora, em Ajustes → Atualizações → Procurar atualização), quem tem o Aprova vê o aviso no Início. O app baixa o .zip da versão, confere se ela é mesmo mais nova e deixa tudo pronto; a troca dos arquivos acontece ao reabrir, pelo iniciar.pyw, que guarda uma cópia da versão anterior em .aprova/atualizacao/anterior e só reinstala bibliotecas se o requirements.txt mudou. O ranking.json e a pasta .venv nunca são trocados.
Se a versão nova não abrir (erro ao abrir, ou duas aberturas sem a janela aparecer), o iniciar.pyw devolve os arquivos da versão anterior, abre ela e pula a versão com problema até sair uma mais nova. Fica anotado em .aprova/instalacao.log.
Robôs do GitHub: testes.yml roda os testes no Windows a cada envio; vigias.yml roda todo dia, mantém o Supabase acordado (o plano grátis pausa depois de 7 dias sem uso) e confere se o app ainda lê o PCI e a FGV (ferramentas/conferir_sites.py). Quando um deles falha, o GitHub manda e-mail.
aprova/
ui/ telas em Flet (início, provas, estudar, grupos, painel, admin, login…)
db.py banco SQLite local de cada conta
ranking.py cliente do servidor (login, papéis, ranking, grupos, fórum, convites)
convite.py link de convite, endereço aprova://, imagem com QR code
marcador.py marcar PDF: destaque, sublinhado, notas e salvar (editável ou fixo)
atualizar.py atualização automática (versao.json, download e troca ao reabrir)
fontes.py busca central: sites das bancas, internet e PCI
coleta.py "Encher a biblioteca": provas de um concurso em lote
pdfprova.py texto, questões e gabarito dos PDFs
analise.py números do Painel e da meta da semana
sessoes.py revisão espaçada e "próximo estudo"
ia.py recursos opcionais com a API do Claude
supabase/ ranking.sql: tabelas, papéis e regras de acesso do servidor
docs/ site no GitHub Pages (página do app, do convite, versao.json) e o guia completo
ferramentas/ nova_versao.py (publicar atualização), conferir_sites.py, abertura e instalação do Python
iniciar.pyw abre o app sem console e instala o que faltar
tests/ testes, servidor falso do Supabase e capturas de tela
python -m pip install -r requirements.txt
python main.py # abre o app
python -m pytest -q tests # testes (sem internet)
python tests/servidor_falso.py 8788 # servidor falso com 6 pessoas e um grupo de exemplo
As regras do servidor também podem ser testadas num PostgreSQL de verdade:
APROVA_PG="host=… port=… user=postgres dbname=postgres" python -m pytest tests/test_sql_supabase.py (o banco é recriado do zero).
Versões
| Versão | O que chegou |
|---|
| 1.26.0 | Painel com acerto por assunto dentro de cada disciplina (Crase, Concordância, Porcentagem, Licitações…) e o que mais derruba você; relatórios de erro opcionais com a aba Erros no Admin; modelos da IA trocados pelo servidor; APK do Android na página da versão |
| 1.25.0 | Riscar alternativas na questão (ícone, clique direito ou Shift + letra); Meu concurso com contagem regressiva no Início, o Onde focar nas provas dele e o personagem lembrando os dias; cópia de segurança dos estudos (salvar, restaurar em outro computador e uma cópia automática por semana) |
| 1.24.0 | Atualização mais segura: cada versão vem de um .zip fixo (etiqueta no GitHub) e, se a versão nova não abrir, o app volta sozinho para a anterior; chave da IA e login cifrados no Windows; espaço usado no servidor no Admin; bibliotecas em versões fixas; robôs que testam no Windows, mantêm o servidor acordado e conferem os sites todo dia |
| 1.23.0 | App para Android (APK, o mesmo app instalado no celular) e build do iPhone funcionando no simulador; no celular, pasta de dados do app, Compartilhar e alarme que vibra |
| 1.22.0 | O personagem fala com você (frases motivacionais, engraçadas, dicas, lembretes do dia e as suas, com o seu nome) e dança; Admin → Personagens com a galeria de todo mundo |
| 1.21.1 | Início sem espaço sobrando (personagem do lado da saudação, barras da semana baixinhas sem estudo), abas do personagem numa linha; vídeo tutorial atualizado |
| 1.21.0 | Telas largas sem espaço sobrando: Ajustes em duas colunas, resultado lado a lado, questão centralizada e sala da turma na largura do cartão; vídeo tutorial atualizado |
| 1.20.0 | Cabelos novos: calvo (sem cabelo no alto da cabeça, com cabelo dos lados) e com entradas |
| 1.19.1 | Barba e bigode acompanham a boca: bigode com as pontas para cima e barba contornando o sorriso |
| 1.19.0 | Pixel art com sombreamento de jogo (luz quente, sombra fria, contorno seletivo) e cenários redesenhados com luz e partículas animadas; vídeo tutorial com a arte nova |
| 1.18.0 | Personagens com olhos grandes e mais detalhes, 4 cores de olhos novas; figurinha e GIF vão para a prévia da mensagem antes de enviar |
Cada versão tem a sua etiqueta no Git (git tag).