Project case study
Solo project / Sole developer
Enverga Arena
An intramurals system for tryouts, rosters, results, medals, and news.
- Status
- Solo project, 2026
- Scope
- MSEUF intramurals tryout, team, scheduling, result, medal, news, and reviewed-recap workflows.
- Team and role
- Solo project. I built the React client, Django API, and role-based workflows.
Context
Students, department representatives, and administrators need separate permissions for tryouts, rosters, results, and published recaps.
What I built
- Built Django REST Framework tryout, roster, registration, result, medal, and role workflows.
- Added domain OTP, hashed OTP storage, server-side Turnstile verification, rate limiting, duplicate protection, and human review for AI recap publication.
Technical approach
- React and TypeScript client with a Django REST Framework API and the current local SQLite database.
- Tryout, roster, registration, schedule, result, medal, and news workflows are separated by role.
- Student tryouts are verified through the student-domain email and OTP flow before review.
- AI recap generation creates a draft for administrator review rather than publishing generated text directly.
- PostgreSQL is a future direction in the repository, not the current local database claim.
Security and verification
- Access tokens are held in frontend memory and refresh credentials are set by the backend in an HttpOnly cookie.
- OTP values are hashed, Turnstile is verified server-side, and rate limiting plus duplicate protection cover the public tryout path.
- Role-specific workflows and explicit review states keep official results and recaps under administrator control.
- I documented the authentication, tryout, roster, result, and recap flows used in the project.
Current limits
- The current project uses SQLite locally. PostgreSQL is documented as a future direction, not a current deployment.
- AI recap text remains a draft until human review and approval.