OCS Gradebook System

Assignment Resource Management System

Complete ecosystem for managing assignment submissions, tracking resources, and monitoring student progress. Covers submission handling, file management, and gradebook integration.

Production Ready
Endpoints POST /api/submissions/{id} / POST /api/assignment-submissions/upload / GET /api/person/uid/{uid}

Student Submission Interface

Direct submission from lessons and blog pages

Link submission directly from lesson/blog pages
File upload to Spring backend with identity resolution
Real-time status feedback with loading spinner
Auto-resolves student identity via Flask UID service
Flask ID Service Spring API JWT Authentication Multipart Upload

About

Students can submit assignments as URLs or file uploads directly from course materials. System resolves student identity through Flask service before writing to Spring gradebook.

Security

No assignment_id = user-friendly error message
All mutations validated server-side
JWT credentials included in all requests
View in Dashboard
Production Ready
Endpoints GET /api/assignment-submission-view/list / GET /api/user/current

Submissions Dashboard

View and manage all submissions by role

Dual-tab interface: My Submissions / All Submissions
Role-based filtering (students see own, admins see all)
Real-time filter by assignment, student, status
Status badges: Pending Review, Graded, Late
Tailwind CSS Module Imports Tab Switching Real-time Filtering

About

Centralized view of all assignment submissions with role-based access control. Students see only their submissions; teachers/admins see all submissions across all students with advanced filtering.

Security

Server-side role checking via SecurityContext
Regular users filtered to submitterId only
Admins/Teachers see all via explicit permission check
View in Dashboard
In Development
Endpoints POST /api/assignments/{id}/resource/url / POST /api/assignments/{id}/resource/file / GET /api/assignments/{id}/resource/file-content / GET /mvc/assignments/tracker-v2

Assignment Resource Tracking

URL and file resource attachment with state management

ID-scoped resource attachment (URL or file)
Explicit resource state transitions (url → file)
Uploader metadata preserved in state
MVC admin viewer at /mvc/assignments/tracker-v2
Spring JPA File Storage Metadata Tracking State Management

About

Teachers can attach assignment resources (URLs or files) scoped by assignment ID. System tracks which resource type (URL/file) and preserves uploader identity. File uploads replace URL metadata intentionally.

Security

Teacher/Admin only for mutations
Resource downloads via session auth
Consistent authz between MVC and API paths
View in Dashboard
Planned
Endpoints POST /api/assignments/{id}/resource/file / All resource mutation endpoints

Security & File Validation

Hardening upload restrictions and authorization

Extension allowlist (.pdf, .txt, .md, .csv, .json, .png, .jpg, .gif, .webp, .zip)
Block executables (.exe, .bat, .sh, .ps1, .jar, .msi)
MIME type validation
403 errors for non-authorized users
Extension Validation MIME Type Checking Authorization Audits

About

Server-side file type restrictions to prevent accidental upload of executable content. All authorization rules audited to prevent cross-user access and ensure consistent 403/401 responses.

Security

No reliance on client-side validation
Blocked files return 400 with clear error
All reads/writes verify teacher role
View in Dashboard