Desktop Python app for searching, planning and enrolling in IST courses on FenixEdu. It combines an API client, a Tkinter GUI and Selenium automation to build schedules and complete enrollment.
- Search courses by name, code, or acronym
- Auto-detect shift types from schedule data
- Build unified schedules for multiple courses
- Time conflict detection
- Selenium-based automatic enrollment
- Persisted configuration (config.json)
Choose one of the options below.
Option A - GitHub Releases (recommended)
- Download the latest release for your OS.
- Extract the archive.
- On Linux, make the file executable, then run it.
Example (replace with the actual file name):
chmod +x ist-fenix-auto-enroller ./ist-fenix-auto-enroller
- On macOS/Windows, run the executable normally.
Latest release: https://github.com/ang3lo-azevedo/ist-fenix-auto-enroller/releases
Option B - Nix
- Run directly or enter a dev shell.
nix runor
nix develop
python3 main.pyOption C - Python source
- Clone this repository.
- Install dependencies.
- Run the app.
python3 -m pip install selenium requests beautifulsoup4
python3 main.py- Select your current semester, year and degree.
- Search and select the courses you want.
- Click [Build] Build Schedule and pick the shifts from both periods.
- Add shifts to the enrollment queue.
- Login and start enrollment.
- main.py Entry point
- config.json Persisted configuration
- src/api.py Fenix API client
- src/bot.py Selenium automation
- src/gui/ Tkinter UI components
- src/utils.py Utilities for shift detection and scheduling
Default settings are stored in config.json. Update it manually or let the app persist changes.
- This project automates a web flow and may break if FenixEdu changes its UI.
- Use at your own discretion and verify results before final submission.
- https://github.com/joanasesinando/gerador-horarios-ist (used to check Fenix API usage)
- Thanks to the contributor who provided snapshots of the enrollment pages.