Self-Hosted Submission Server
A full-featured Flask server you run on your own infrastructure.
The PyAutoGrader submission server gives you a complete dashboard for managing student submissions, analyzing grades, detecting plagiarism, and exporting to your LMS. Run it on your own machine or campus server - your data stays on your infrastructure.
Quick Start
3 stepsDownload
Get the server executable for Windows, macOS, or Linux from the Downloads page.
Configure
Edit server_config.json to set your password and API key. Or pass them as CLI flags.
Run
Launch the executable. Open http://localhost:5000 and log in. SQLite database created automatically.
Everything You Need to Manage Submissions
Analytics Dashboard
Score distribution charts, submission trends over time, assignment difficulty analysis, student progress tracking, and at-risk student identification. Filter by course, section, or semester. Every chart updates in real time as submissions come in.
Plagiarism Detection
Pairwise code similarity analysis across all submissions for an assignment. Four metrics: code similarity (comments stripped), comment similarity, combined weighted score, and comment-to-code ratio. Color-coded severity (red 80%+, orange 50-79%, green below 50%) with a side-by-side diff view and syntax highlighting.
Code Search
Search across all submitted code for specific patterns. Detect AI-generated code, verify required constructs, or investigate academic integrity.
Submission Browser
Browse all submissions filtered by course, assignment, or student. Click into any submission to see full test results and the student's code. View modes: all, latest per student, or highest per student.
Roster Management
Upload CSV rosters, add students manually, sync unmatched submissions. Duplicate detection and late adds. Expose a REST API for the student app to fetch rosters live.
Assignment Deadlines
Set per-assignment cutoff dates with per-student overrides for accommodations. Late submissions flagged with badges. Exports include an option to exclude late work.
Canvas Export
Canvas-compatible CSV with one row per student, one column per assignment. Import grades directly into Canvas Gradebook. Standard CSV export also available.
Class Organization
Organize by course, section, and semester. Drill into any class for scoped analytics, submissions, roster, assignments, and code search.
Require Student Submission
Instructors can configure assignments so grading is restricted unless the student is connected to the server. This ensures all results flow through the server for tracking, analytics, and plagiarism detection. Students who are offline cannot complete grading until they connect.
Hosting and Database
Hosting Options
On-Campus (HTTP)
For private or campus-only networks, run over plain HTTP. No certificate setup needed. Ideal for lab environments and closed university networks.
Caddy Reverse Proxy (HTTPS)
Caddy automatically obtains and renews Let's Encrypt TLS certificates. Zero manual certificate management. Just point your domain and run.
Built-in TLS (HTTPS)
Pass your own certificate and key files directly to the server via CLI flags or config. For environments where you manage your own certs.
Database Options
SQLite
Zero setup, single file. Creates submissions.db automatically. Handles thousands of submissions. Back up by copying one file.
PostgreSQL
For multi-server load balancing, high concurrency during exam spikes, or centralized backups with pg_dump and WAL archiving.
Under the Hood
Get the Server
Download the executable, set a password, and run. Full setup instructions in the documentation.