LISA — Instructor Compliance Dashboard
LISA is an "Instructor Insights"-style dashboard that allows deans to identify which instructors are behind on grading at a glance.
Root-level files
shared_config.json— single source of truth for constants used by both the frontend and backend (page size, default sort columns/directions). Bothlisa_backend/utils/constants.pyandlisa_frontend/src/constants.tsread from this file.
Backend (lisa_backend)
Written in Python using Flask. Serves a REST API backed by a PostgreSQL database running in Docker.
Database & Canvas data
The database is created and maintained using the instructure-dap-client Python package, which pulls data from Canvas's Data Access Platform (DAP) into PostgreSQL. See this repo for the Docker configuration.
Note: The Canvas DAP client requires linux-based Python. The backend must run inside WSL, a VM, or natively on Linux. Python 3.11+ is required; Python 3.12 is currently used.
Key files
services/compliance_service.py— query logicapi_server.py— Flask routes and server startup- SQLAlchemy reflects Canvas-managed tables automatically; app-owned tables are defined as explicit models in
models/models.pyand managed by Alembic.
Authentication
The ldap3 package handles authentication against Unity's Microsoft Active Directory. Only members of a specific AD group can log in using their campus credentials. Users must be on the Unity intranet to access LISA.
WSGI
Waitress is used as the production WSGI server (port 5000).
Frontend (lisa_frontend)
Written in TypeScript using React and Vite. Standard React/Vite app — see lisa_frontend/ for source.
In production, the frontend is built (npm run build) and the resulting dist/ folder is served by Flask/Waitress alongside the API.
Production Server (unitycanvas-tcc)
Remote access to this machine is controlled by IT.
Web server — IIS
Microsoft IIS acts as a reverse proxy, handling inbound traffic and forwarding it to Waitress: - Application Request Routing (ARR) and URL Rewrite modules are installed to enable reverse proxy. - Reverse proxy is enabled in ARR settings. - URL Rewrite rules redirect HTTP to HTTPS and forward all traffic to the Waitress process on port 5000. - Bindings: HTTP on port 80, HTTPS on port 443. - SSL certificates were provisioned by IT. - Subdomains https://lisa and https://lisa.campus.unity.edu provided by IT
WSL
The backend runs inside WSL due to the Linux Python dependency. Ubuntu 22.04 is currently used.
To install pg_isready (used by the sync script):
apt install postgresql
Scheduled sync
A cron job syncs the database twice daily via lisa_backend/scripts/run_sync.sh. Run lisa_backend/scripts/setup_sync_cron.sh to register it.
Database backups
lisa_backend/scripts/backup_db.sh dumps the database via the Docker container to /mnt/e/lisa_backups/ and prunes files older than 30 days. Run lisa_backend/scripts/setup_backup_cron.sh to register a daily midnight cron job for it.
Startup automation
Windows Task Scheduler is configured to automatically start Docker and run lisa_backend/scripts/launch_prod.sh inside WSL on machine startup.