Skip to main content

🌟 representante

Python 3.9+ License: MIT TUI: Textual Automation: Playwright

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).
  • 🔐 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-creds or 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-27 or 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-representante on Windows) with strict 0700 directory and 0600 file 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 LocalAuthentication prompt for Touch ID, Apple Watch, or system password challenge.
    • On Windows, triggers the UserConsentVerifier Windows Hello prompt.

🛠️ 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

representante-0.1.0.tar.gz (27.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

representante-0.1.0-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

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

Hashes for representante-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a26c8a7baed790021515377f263c8bb78d319be024e9ec2c9afb3dbbdc38aa35
MD5 dbb554f70af0a009ed92670619881110
BLAKE2b-256 998d4964608ab5c99ad94e6015f00e3b88d9852269cc05bed293e306a9c13003

See more details on using hashes here.

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

Hashes for representante-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2496b424fa547a53c8625c21f2fd19f877b23d0dbf2c726b1809e956c661d810
MD5 e51f54df0e04db4a069d1f848814b099
BLAKE2b-256 8c85dbd3bb55da97bb8c3a130273311197cb02fb451ed9ccec70359d6e330ba8

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page