Assignment Resource Management System

Complete ecosystem for managing assignment submissions, grading, and file delivery. Covers automatic assignment creation from frontmatter, URL/file submissions, a role-gated review dashboard, and a student grade viewer — all secured by JWT and server-side role enforcement.

CSA Capstone · Spring Boot + Jekyll Team: Backend Boyz · Shayan B, Darshan S, Rudra J, Dhyan S, Harrish A, Lucas M, Zhengli L, Jacob C, Arnav P
Backend Boyz
Team Backend Boyz

Mentor Auth

Google OAuth-verified signup with role-based access between student and admin

  • ROLE_MENTOR added to Spring Security between ROLE_TEACHER and ROLE_ADMIN
  • Google OAuth signup — PUSD emails get immediate access, others await admin approval
  • GitHub student ID validated before mentor account is activated
  • Scoped capstone project dashboard visible only to mentors and above
  • Real-time team chat via SockJS/STOMP WebSocket per capstone group
Spring Security Google OAuth2 SockJS / STOMP JWT GitHub API
  • JWTs invalidated immediately on password change — no stale tokens
  • Reset tickets rate-limited per IP to block brute-force abuse
  • POST /mvc/person/reset/ticket is permitAll — fixed auth requirement that blocked unauthenticated resets
  • Plaintext password sync to Flask refused over non-loopback, non-TLS URIs
  • OAuth + student ID double-verification before password reset is issued
  • POST /api/authenticate/mentor
  • POST /mvc/person/reset/ticket
  • GET /api/person/mentor/projects

Live Features

Password Reset

OAuth + student ID verified reset flow with rate-limited tickets and JWT invalidation

  • Reset ticket issued after Google OAuth + GitHub ID verification
  • Per-IP rate limiting blocks brute-force requests
  • All active JWTs invalidated on password change
Google OAuth2JWTRate Limiting

Mentor Role & Verification

ROLE_MENTOR added to Spring Security between teacher and admin with scoped dashboard access

  • New role between ROLE_TEACHER and ROLE_ADMIN
  • GitHub student ID validated before account activates
  • Scoped capstone dashboard — mentors see only their groups
Spring SecurityGitHub APIJWT

Mentor Login

Google OAuth signup — PUSD emails get immediate access, others await admin approval

  • Sign in via Google — no separate password needed
  • PUSD domain auto-approved, external emails admin-reviewed
  • Real-time team chat per capstone group via WebSocket
Google OAuth2SockJSSTOMP

General Security

Password complexity enforced on frontend and backend — bypassing the UI still gets rejected

  • Password complexity required at account creation
  • Spring and Flask both reject weak passwords on direct API calls
  • Plaintext password sync blocked over non-TLS connections
Spring BootFlaskTLS

Planned Features

Planned

Mentor Dashboard

Centralized view for mentors to track assigned capstone groups, student progress, and session notes in one place.

Planned

Guest Role

Read-only access for visitors to browse public OCS content without requiring a full account.