Loading repository data…
Loading repository data…
kauan-carreiro / repository
Plataforma educacional em Python que conecta alunos e monitores, com sistema de questões e filtros inteligentes.
Conectando alunos e monitores de forma simples, direto pelo terminal.
O MonitorAê é uma plataforma educacional desenvolvida em Python que roda inteiramente no terminal de comando. Ele permite que alunos e monitores se cadastrem, se encontrem e pratiquem conteúdos de Matemática e Português por meio de questões organizadas por descritores e níveis de dificuldade.
O projeto nasceu com o objetivo de ajudar os alunos de escolas públicas estaduais a se prepararem de maneira fácil, centralizada e gratuita. Todos os conteúdos em um só lugar de maneira rápida e eficaz.
👉 Acessar pasta no Google Drive
Após fazer login, o usuário vê a saudação Olá, {nome}! 👋 e acessa as funcionalidades de acordo com seu tipo:
| Opção (Aluno) | Opção (Monitor) | Descrição |
|---|---|---|
| 👤 Meu Perfil | 👤 Meu Perfil | Dados do usuário + opção de deletar conta + desempenho detalhado |
| 🔍 Monitores | 🔍 Monitores | Lista todos os monitores com filtros e possibilidade de avaliar (alunos) |
| 🏫 Alunos Próximos | 🏫 Alunos Próximos | Alunos cadastrados na mesma escola |
| 📚 Biblioteca | 📚 Biblioteca | Questões de Matemática e Português por descritor/dificuldade |
| 🎲 Simulado | 🎲 Simulado | Personalize seu simulado (descritores, nível, quantidade de questões) |
| 📖 FAQ | 📖 FAQ | Perguntas frequentes com busca local + assistente IA (Groq) |
| — | ✍️ Aprovar Sugestões da FAQ | Monitores revisam e aprovam sugestões enviadas pelos usuários |
| — | 💬 Minhas Conversas | Lista de conversas ativas com alunos |
| 🚪 Sair da conta | 🚪 Sair da conta | Desconecta e retorna à tela inicial |
monitora_ae/
│
├── app.py ← Ponto de entrada. Execute: python app.py
├── router.py ← Controla a navegação entre telas
│
├── telas/
│ ├── auth.py ← Login, Cadastro e Redefinir senha
│ ├── menu.py ← Menu principal pós-login
│ ├── perfil.py ← Perfil e deletar conta + desempenho detalhado
│ ├── monitores.py ← Listagem de monitores com filtros e avaliação
│ ├── alunos_proximos.py ← Alunos da mesma escola
│ ├── biblioteca.py ← Descritores e questões fixas
│ ├── simulado.py ← Simulado personalizado (com registro de desempenho)
│ ├── faq.py ← FAQ com busca local + IA (Groq) e aprovação de sugestões
│ ├── chat.py ← Chat entre aluno e monitor
│ ├── lista_conversas.py ← Lista de conversas ativas para monitores
│ └── desempenho_detalhes.py← Estatísticas avançadas de desempenho
│
├── utils/
│ ├── terminal.py ← Funções de formatação do terminal (cores, menus)
│ ├── usuarios.py ← Leitura/escrita do banco de usuários
│ ├── chat.py ← Gerenciamento de conversas (criar, adicionar mensagem, encerrar)
│ ├── avaliacoes.py ← Registro e cálculo de avaliações de monitores
│ └── desempenho.py ← Registro e consulta de desempenho em simulados
│
├── validacoes/
│ └── validadores.py ← Todas as regras de validação centralizadas
│
├── data/
│ ├── usuarios.json ← Banco de dados de usuários
│ ├── ids_validos.json ← IDs de monitor autorizados
│ ├── avaliacoes.json ← Avaliações dos monitores (aluno → monitor, nota)
│ ├── conversas.json ← Histórico de conversas (mensagens, status)
│ ├── faq.json ← Perguntas frequentes oficiais
│ └── sugestoes_faq.json ← Sugestões de perguntas/respostas (pendentes de aprovação)
│
└── questoes/
└── banco_questoes.json ← 600 questões (5 desc × 3 níveis × 20 questões × 2 matérias)
json, os, re, getpass, unicodedata, urllib)# 1. Clone o repositório
git clone https://github.com/seu-usuario/monitora_ae.git
# 2. Entre na pasta do projeto
cd monitora_ae
# 3. (Opcional) Configure a chave da API Groq para o assistente IA
# Crie um arquivo .env na raiz com: GROQ_API_KEY=sua_chave_aqui
# 4. Execute
python app.py
⚠️ No Windows, use
python app.py. No Linux/Mac, pode ser necessáriopython3 app.py.
Todas as validações ficam centralizadas em validacoes/validadores.py.
exemplo@dominio.com!@#$%...)validacoes/validadores.py)data/ids_validos.jsonMON001 até MON005, MON123, MON456, MON789, ...O sistema usa arquivos JSON como banco de dados local — sem necessidade de instalar nenhum banco de dados externo.
data/usuarios.jsonArmazena todos os usuários cadastrados. Criado automaticamente no primeiro cadastro.
{
"usuarios": [
{
"tipo": "Aluno",
"nome": "Ana Paula Silva",
"escola": "EREM Adelaide Pessoa Câmara",
"email": "ana@email.com",
"senha": "Senha1!"
},
{
"tipo": "Monitor",
"nome": "Carlos Andrade",
"escola": "EREM Edson Moury Fernandes",
"materia": "Matemática",
"id": "MON001",
"email": "carlos@email.com",
"senha": "Senha1!"
}
]
}
data/avaliacoes.jsonArmazena as avaliações feitas por alunos a monitores.
{
"avaliacoes": [
{
"email_avaliador": "aluno@email.com",
"email_monitor": "monitor@email.com",
"nota": 9
}
]
}
data/conversas.jsonHistórico completo de conversas (aluno, monitor, mensagens, status, timestamps).
data/faq.json e data/sugestoes_faq.jsonPerguntas frequentes oficiais e sugestões pendentes de aprovação.
data/ids_validos.jsonLista dos IDs de monitor autorizados. Edite este arquivo para adicionar ou remover IDs.
{
"ids": ["MON001", "MON002", "MON003"]
}
questoes/banco_questoes.jsonBanco com 600 questões organizadas por matéria, descritor e dificuldade. Você pode adicionar novas questões seguindo a estrutura:
{
"Matematica": {
"D01": {
"nome": "Nome do Descritor",
"facil": [
{
"id": 1,
"enunciado": "Texto da pergunta?",
"alternativas": ["A) ...", "B) ...", "C) ...", "D) ..."],
"resposta": "B"
}
],
"medio": [ ... ],
"dificil": [ ... ]
}
}
}
O projeto usa Programação Orientada a Objetos (POO):
class) — agrupam dados e funções relacionadas. Cada tela é uma classe.def dentro de uma classe) — são as funções da classe.self — referência ao próprio objeto, como dizer "eu mesmo".__init__ — método construtor, chamado ao criar um objeto da classe.O Router (router.py) é responsável por saber qual tela está ativa e quem está logado, funcionando como um controlador de navegação.
| O que mudar | Onde mexer |
|---|---|
| Lista de escolas | validacoes/validadores.py → ESCOLAS_PERMITIDAS |
| Matérias dos monitores | validacoes/validadores.py → MATERIAS_PERMITIDAS |
| IDs de monitor válidos | data/ids_validos.json |
| Adicionar questões |