TutorLoom
The learning platform for companies, colleges and training institutes. Free and open source, with an Enterprise edition.
Provas reais com gabarito oficial, simulados sem repetição e comentados, revisão no dia certo, grupos de estudo. Grátis.
Translation pending
EducationGitHub @NatanaelSantzOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
App gratuito de estudo para concursos públicos: provas reais com gabarito, simulados, revisão espaçada, metas, grupos de estudo com convite por link e ranking.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Documentos\Aprova).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).[!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).
| 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) | ✅ |
.aprova da sua pasta de usuário.supabase/ranking.sql): só quem está no grupo lê as mensagens dele, e um aluno não consegue se promover, mesmo mexendo no app.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:
supabase/ranking.sql e clique em Run. Pode rodar de novo a cada versão: ele acrescenta o que falta sem apagar nada.ranking.json, que vale mais que o servidor.json).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).
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ã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).
| 1.17.0 | Tipo de corpo do personagem (magro, médio, forte, gordinho; médio por padrão), barba, boca, detalhes do rosto, 5 cabelos, 5 roupas e 4 itens novos, cor da calça |
| 1.16.1 | Figurinhas na conversa: mensagem compacta e sem moldura, aparece na hora ao mandar, aba Recentes e abas visíveis no celular |
| 1.16.0 | Mini prova por disciplina no Onde focar: escolha a disciplina, a prova de origem, quantas questões e se é com cronômetro |
| 1.15.0 | Personagens com o dobro de detalhe, 7 modelos de óculos com 8 cores e 14 acessórios novos (cabeça, pescoço e costas) |
| 1.14.1 | Corrige o erro de certificado (CERTIFICATE_VERIFY_FAILED) na primeira abertura em computadores com antivírus que inspeciona a internet, rede de escola ou Windows novo |
| 1.14.0 | Personagem estilo RPG (pixel art animado) ou foto de perfil, com a sala da turma nos grupos, o boneco no Início e a comemoração no resultado |
| 1.13.1 | Atualiza sozinho ao abrir (e baixa a versão nova em segundo plano com o app aberto) |
| 1.13.0 | Perguntar ao Claude ou ao ChatGPT (abre o chat com a questão ou os erros do simulado, sem chave) e passo a passo para conseguir a chave da IA |
| 1.12.0 | Simulados sem repetição e sem questão quebrada, resultado comentado por matéria, aviso de atualização por notificação e reforço de segurança (grupos só com convite, arquivos perigosos bloqueados, acesso pelo celular com código) |
| 1.11.0 | Minhas figurinhas: importe as do WhatsApp (arquivos, pacotes .wastickers/.zip ou Ctrl+V) e guarde as que chegam no grupo |
| 1.10.0 | Fotos, arquivos, GIFs e figurinhas nos grupos (figurinhas próprias do Aprova; GIFs pelo GIPHY) |
| 1.9.5 | Tamanho da interface (zoom automático em telas com zoom do Windows, Ctrl + e Ctrl −) e barra de rolagem nova |
| 1.9.4 | Barra de cima do Windows com as cores do tema do Aprova |
| 1.9.3 | Menu que cabe em notebooks com zoom, janela que cabe na tela e abre em tela cheia |
| 1.9.2 | Retirada: a barra de cima própria impedia o app de abrir no Windows |
| 1.9.1 | Visual novo (navegação em bolinhas do cartão-resposta, painel "Sua semana") e layout mais ajustável |
| 1.9.0 | Marcar PDF (marca-texto, sublinhado, notas, salvar editável ou fixo) e atualização automática |
| 1.8.0 | Convite por link (WhatsApp, Instagram, TikTok), página do convite, entrada sem cadastro |
| 1.7.0 | Grupos de estudo com fórum, planos de estudo compartilhados e moderação |
| 1.6.0 | Tela de login, conta de aluno e de administrador, comunicados, layout em 3 tamanhos |
| 1.5.1 | Base: provas, simulados, metas, revisão, painel e ranking |