🌟 representante
Automated EduPlus Course Feedback Submissions with a sleek modern Terminal UI (TUI), CLI support, and hardware biometric protection (macOS Touch ID & Windows Hello).
✨ Features
- 🖥️ Gorgeous Interactive TUI: Built with Textual featuring a live status dashboard, real-time log telemetry, progress indicators, password visibility toggles, and form verification stats.
- 🛡️ Biometric Security:
- macOS Touch ID: Native integration with Apple
LocalAuthentication(Touch ID / Apple Watch / System Passcode) to lock and unlock saved credentials. - Windows Hello: Native integration with Windows Runtime
UserConsentVerifier(Fingerprint / Facial Recognition / PIN).
- macOS Touch ID: Native integration with Apple
- 🔐 Secure Credential Persistence:
- Remember username only (prompts for password on each run).
- Remember username & password locally with PBKDF2 + AES-Fernet encryption or system Keyring (Keychain / Credential Manager).
- One-click credential wiping (
--clear-credsor via the TUI).
- 🎯 Precise Vue 3 + Vuetify Automation:
- Locates elements dynamically by visible text, labels, and placeholders rather than volatile auto-generated IDs.
- Uses native
.click()events to ensure Vue's reactivity properly registers radio selections. - 10/10 Form Validation: Verifies that exactly 10 questions per faculty-subject match the chosen rating before proceeding. Aborts immediately if verification fails to prevent partial saves.
- 🛡️ Safety First (Dry-Run by Default):
- Fills and verifies every single form but stops before the irreversible final submit.
- Only submits permanently when explicitly confirmed.
- ⚡ Dual Mode (TUI & CLI): Run interactively with the graphical terminal interface or run headless via CLI scripts or cron jobs.
📦 Installation
Install representante via pip:
pip3 install representante
Install Playwright's Chromium browser dependency (one-time setup):
# Using the built-in helper:
representante --install-deps
# Or directly with playwright:
playwright install chromium
🚀 Usage
1. Interactive Terminal User Interface (TUI)
Simply run the command without arguments (or with --tui):
representante
(You can also use the alias command: sies-feedback)
The TUI provides:
- Credential inputs with Show/Hide password toggle.
- Toggles for "Remember Username", "Save Password", and "Require Touch ID / Windows Hello".
- Cycle selector (e.g.
2026-27or leave blank for the first open cycle). - Rating dropdown (
Excellent,Very Good,Good,Average,Below Average). - Dry-Run and Headless switches.
- Real-time streaming logs and form counter scoreboard.
- Abort button to safely stop execution at any time.
2. Command-Line Interface (CLI)
Run directly from the command line for fast or automated runs:
# Basic dry-run (verifies all forms without final submit)
representante -u 124A1018 -p "YourPassword" --dry-run
# Target a specific cycle and show browser window
representante -u 124A1018 -p "YourPassword" --cycle "2026-27" --no-headless
# Permanent submission (irreversible)
representante -u 124A1018 -p "YourPassword" --no-dry-run
# Save credentials with Biometric Protection
representante -u 124A1018 -p "YourPassword" --save-creds --biometric
# Use saved credentials on subsequent runs (prompts Touch ID / Windows Hello)
representante
# Wipe all locally stored credentials and configuration
representante --clear-creds
# Inspect current configuration and hardware biometric status
representante --show-config
Using environment variables instead of command-line arguments:
export SIES_PASSWORD="YourPassword"
representante -u 124A1018
⚙️ CLI Options & Flags
| Flag | Default | Description |
|---|---|---|
-u, --username |
Saved / Prompt | SIES portal username / roll number |
-p, --password |
Saved / Prompt | SIES portal password |
--password-env |
SIES_PASSWORD |
Environment variable name for password |
--cycle |
First open | Substring filter for the feedback cycle (e.g. 2026-27) |
--rating |
Excellent |
Rating choice (Excellent, Very Good, Good, Average, Below Average) |
--dry-run / --no-dry-run |
True |
Fill and verify without permanent irreversible submit |
--headless / --no-headless |
True |
Run browser in background without visible window |
--slowmo |
0 |
Delay Playwright actions by N milliseconds |
--save-creds |
False |
Store credentials securely for future runs |
--biometric / --no-biometric |
Auto-detect | Require Touch ID / Windows Hello before retrieving password |
--clear-creds |
False |
Wipe saved credentials and configuration files |
--show-config |
False |
Display current configuration and biometric status |
--install-deps |
False |
Install Chromium browser binaries |
--tui |
False |
Force launch interactive Textual TUI |
🔒 Security Architecture
- Local Storage: All files are stored under
~/.config/ethiccode-representante/(or%APPDATA%/ethiccode-representanteon Windows) with strict0700directory and0600file permissions. - Keyring & Fallback Vault: Credentials are saved in the OS Keyring (macOS Keychain, Windows Credential Manager, or Linux SecretService). If unavailable, credentials are encrypted with AES-Fernet using PBKDF2HMAC key derivation tied to the machine salt.
- Biometric Protection:
- On macOS, triggers the official
LocalAuthenticationprompt for Touch ID, Apple Watch, or system password challenge. - On Windows, triggers the
UserConsentVerifierWindows Hello prompt.
- On macOS, triggers the official
🛠️ Development & Testing
# Clone the repository
git clone https://github.com/EthicCode/ethiccode-representante.git
cd ethiccode-representante
# Create virtual environment & install in editable mode with dev dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[test]"
# Run unit tests
python3 -m unittest discover tests
📜 Disclaimer & License
This tool is designed to automate routine portal feedback for authorized students of SIES. Always ensure your feedback reflects your genuine experience before final submission. The authors are not responsible for unintended submissions.
Distributed under the MIT License.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file representante-0.1.0.tar.gz.
File metadata
- Download URL: representante-0.1.0.tar.gz
- Upload date:
- Size: 27.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a26c8a7baed790021515377f263c8bb78d319be024e9ec2c9afb3dbbdc38aa35
|
|
| MD5 |
dbb554f70af0a009ed92670619881110
|
|
| BLAKE2b-256 |
998d4964608ab5c99ad94e6015f00e3b88d9852269cc05bed293e306a9c13003
|
File details
Details for the file representante-0.1.0-py3-none-any.whl.
File metadata
- Download URL: representante-0.1.0-py3-none-any.whl
- Upload date:
- Size: 26.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2496b424fa547a53c8625c21f2fd19f877b23d0dbf2c726b1809e956c661d810
|
|
| MD5 |
e51f54df0e04db4a069d1f848814b099
|
|
| BLAKE2b-256 |
8c85dbd3bb55da97bb8c3a130273311197cb02fb451ed9ccec70359d6e330ba8
|