LMS-SAE Bridge
A robust, secure, and automated bridge designed to streamline the digitization and submission of physical examination answer sheets to the Moodle Learning Management System.
In academic institutions transitioning to digital grading, handling physical answer scripts presents significant challenges.
Individually scanning, renaming, and uploading hundreds of answer scripts is time-consuming and inefficient.
Manual processes are prone to uploading wrong files or mislabeling student submissions.
Direct database manipulation or unverified uploads can compromise the chain of custody.
Students lack a mechanism to verify their physical paper was scanned correctly before grading.
Our 3-Step "Upload-Verify-Push" workflow decouples scanning from submission with a secure validation layer.
Administrative staff upload bulk batches of scanned PDF/Images.
System parses filenames to extract Student Register Number and Subject Code automatically.
Students log in, view their scripts, and trigger final submission ensuring non-repudiation.
The system acts as an intelligent intermediary between the physical examination hall and the digital grading environment, ensuring secure validation and student verification at every step.
Designed for data integrity, security, and complete auditability
Scanned Answer Sheets
FastAPI + PostgreSQL
Learning Management System
| Model | Description |
|---|---|
| ExaminationArtifact | Core entity storing UUID, file path, SHA-256 hash, extracted metadata, and workflow status. |
| SubjectMapping | Configuration mapping Subject Code to Moodle Course ID and Assignment ID. |
| StaffUser | Accounts for administrative staff authorized to perform bulk uploads. |
| StudentSession | Manages ephemeral sessions with encrypted Moodle access tokens. |
| AuditLog | Rigid ledger tracking every action with IP addresses and timestamps. |
| SubmissionQueue | Buffer for handling Moodle API failures, ensuring no submission is lost. |
Password hashing with 12 rounds
Fernet encryption for Moodle tokens
Complete chain of custody tracking
A streamlined 3-phase process ensuring secure and verified submissions
Complete RESTful API with authentication, file management, and submission handling
http://localhost:8000/portal/staff
http://localhost:8000/portal/student
http://localhost:8000/docs
http://localhost:8000/redoc
http://localhost:8000/health
/auth/staff/login
Staff login
/auth/student/login
Student login with Moodle credentials
/auth/student/logout
Student logout
/upload/single
Upload single file
/upload/bulk
Upload multiple files
/upload/validate
Validate filename
/student/dashboard
Get assigned papers
/student/paper/{id}/view
View paper content
/student/submit/{id}
Submit paper to Moodle
/student/submission/{id}/status
Check submission status
/admin/mappings
List subject mappings
/admin/mappings
Create mapping
/admin/queue
View submission queue
/admin/stats
System statistics
# Staff Login curl -X POST http://localhost:8000/auth/staff/login \ -F "username=admin" \ -F "password=admin123" # Upload File (use token from login) curl -X POST http://localhost:8000/upload/single \ -H "Authorization: Bearer YOUR_TOKEN" \ -F "file=@611221104088_19AI405.pdf" \ -F "exam_session=2024SPRING" # Health Check curl http://localhost:8000/health
Get up and running in minutes with our simple setup process
Clean, modular architecture following Python best practices
Required Moodle setup for Web Services integration
bcrypt with 12 rounds
AES-256 (Fernet)
Short-lived access tokens
Extension and size checks
All operations logged
Configurable origin whitelist