Skip to content

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). Both lisa_backend/utils/constants.py and lisa_frontend/src/constants.ts read 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 logic
  • api_server.py — Flask routes and server startup
  • SQLAlchemy reflects Canvas-managed tables automatically; app-owned tables are defined as explicit models in models/models.py and 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.