Projeto para monitorar abertura/alteração de vagas em turmas universitárias (SIGAA/UnB).
Escopo ético: o sistema somente consulta mudanças e notifica. Não automatiza matrícula e não executa ações dentro do SIGAA.
O fluxo recomendado para uso diário é a aplicação desktop (Tkinter), rodando localmente no seu computador.
- Clone o repositório e entre na pasta do projeto.
- Crie e ative um ambiente virtual (
venv). - Instale as dependências.
- Configure o
.envcom os parâmetros desejados. - Execute a interface desktop.
Exemplo (Linux/macOS):
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python -m desktop_app.mainExemplo (Windows PowerShell):
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env
python -m desktop_app.mainFuncionalidades da UI:
- Lista de monitoramentos cadastrados.
- Formulário de criação/edição de monitoramento.
- Histórico recente por item selecionado.
- Controles de execução (executar ciclo, iniciar e parar monitoramento contínuo).
Foi adicionado um fluxo explícito para gerar um executável da interface desktop (desktop_app/main.py) com PyInstaller.
- Ambiente virtual ativo.
- Dependências do projeto instaladas (
pip install -r requirements.txt). - PyInstaller instalado no ambiente (
pip install pyinstaller).
Use o script versionado:
./scripts/build_desktop.shEsse script executa o PyInstaller com o arquivo de especificação desktop_app/SIGAAUnBMonitor.spec e gera o binário em dist/SIGAAUnBMonitor.
O arquivo desktop_app/SIGAAUnBMonitor.spec define:
- Nome do executável:
SIGAAUnBMonitor. - Inclusão de dados necessários no build (
.env.example). - Build em modo janela (
console=False), adequado para Tkinter (--windowed).
Após o build, execute:
./dist/SIGAAUnBMonitorNo Windows, o executável correspondente será gerado com extensão .exe no diretório dist.
As variáveis de ambiente são carregadas automaticamente via python-dotenv em config.py.
DB_PATH: caminho do arquivo SQLite usado para persistir monitoramentos/histórico.- Exemplo:
DB_PATH=monitor.db
- Exemplo:
CHECK_INTERVAL_SECONDS: intervalo (em segundos) entre ciclos no modo contínuo.REQUEST_TIMEOUT_SECONDS: timeout de chamadas HTTP.MAX_RETRIES: número de tentativas em falhas transitórias.BACKOFF_SECONDS: espera base entre tentativas.DRY_RUN: quandotrue, suprime envio real de notificações externas.
- Desktop:
DESKTOP_NOTIFICATIONS_ENABLED=true|false
- Telegram:
TELEGRAM_ENABLED,TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID
- E-mail (SMTP):
EMAIL_ENABLED,SMTP_HOST,SMTP_PORT,SMTP_USERNAME,SMTP_PASSWORD,SMTP_FROM,SMTP_TO,SMTP_USE_TLS
- Erro comum: nada acontece ao disparar notificação desktop.
- Verifique se o utilitário
notify-sendestá instalado e no PATH:which notify-send
- Em distribuições Debian/Ubuntu, instale via:
sudo apt install libnotify-bin
- Em sessões sem servidor gráfico (headless/WSL sem GUI), notificações desktop podem não aparecer.
- O backend desktop usa a biblioteca
win10toastpara toast notifications. - Se aparecer aviso de biblioteca ausente, instale manualmente no ambiente virtual:
pip install win10toast
- Confirme se as notificações do sistema estão habilitadas em Configurações > Sistema > Notificações.
A CLI continua disponível para uso avançado/compatibilidade:
python main.py --helpComandos principais:
addlistremovehistoryrun
A arquitetura web (frontend Next.js + backend FastAPI + workers + Docker Compose) permanece no repositório como opção secundária/histórica.
Consulte a documentação dedicada em:
docs/ARCHITECTURE_WEBAPP.md
Para subir a stack web com Docker:
docker compose -f infra/docker-compose.yml up --build