High‐Level‐Analysis - gcivil-nyu-org/team4-mon-fall26 GitHub Wiki
PlayNYU is a web platform for NYU intramural sports. Verified NYU students keep a persistent player profile, join or request placement on teams, see schedules and athletic facilities on a map, and follow scores and standings across seasons. League Admins configure sports and seasons, schedule matches, and moderate. Team chat, direct messages, and match comments are MLP-priority social features. The system is a single Django application with a PostgreSQL database, deployed on AWS Elastic Beanstalk.

Left: personas. Middle: the PlayNYU system with its epics (dashed ovals are engineering enablers). Right: external systems.
All personas share one User record and role membership. Every verified user is a Casual Player first.
| Persona | Who they are | What they want |
|---|---|---|
| Casual Player | Verified NYU student | Keep a profile with season history; see teams, schedules, standings, and facilities; chat and comment |
| Team Captain | Player who created a team | Manage the team roster |
| Free Agent | Player without a team | Be placed on a team by an admin |
| Scorekeeper / Referee | Organizer role, assigned per event | Submit results for assigned events only |
| League Admin | Full organizer | Configure sports, seasons, divisions, facilities, schedules; assign roles; correct results; moderate |
External systems: Email delivery (SMTP) is used by E1. The NYC Open Data Athletic Facilities dataset (imported by a management command) and OpenStreetMap tiles (loaded by the browser) are used by E4.
Out of scope this revision: NYU single sign on, friends, following, activity feeds, season forums, reactions, email notifications.
E1 Register, Verify & Manage Profiles
Every other epic depends on verified users, roles, and profiles existing, so this epic is built first.
- Users register with a valid NYU email / NYU ID.
- If a user registers with a non-NYU email, the system shows the message "Please use your NYU ID".
- When a user enters an NYU email, a confirmation email is sent to that address.
- The user must click the confirmation link to verify the account.
- If the NYU email is fake or invalid, the confirmation email never arrives, so the account stays unverified and cannot be used.
- Only legitimate NYU emails can complete registration and become verified users.
- Once verified, the user can create and edit their player profile.
Registration & Login
- As a new NYU student, I want to create an account with my NYU ID and password so that I can access PlayNYU.
- As a registered user, I want to log in with my NYU ID and password so that I can access the platform.
- As a user, I want the system to tell me if an account with my NYU ID already exists so that I do not create a duplicate account.
Verification
- As a user, I want the system to reject non-NYU emails and show "Please use your NYU ID" so that only NYU students can register.
- As a user, I want to receive a confirmation email at my NYU address so that I can verify my account.
- As a user, I want my account to stay unverified until I click the confirmation link so that only legitimate NYU emails can complete registration.
Profile Management
- As a verified user, I want to create and update my player profile (name, photo, preferred sports, etc.) so that captains and other players can see my information.
- As a verified user, I want to edit my profile at any time so that my details stay accurate and up to date.
- As a verified user, I want to see why an update was rejected and know that nothing was saved so that I can fix the problem.
- As a verified user, I want to correct my details and submit again after a rejection so that I can finish my update without starting over.
PlayNYU is a web platform for NYU intramural sports. Verified NYU students keep a persistent player profile, join or request placement on teams, see schedules and athletic facilities on a map, and follow scores and standings across seasons. League Admins configure sports and seasons, schedule matches, and moderate. Team chat, direct messages, and match comments are MLP-priority social features. The system is a single Django application with a PostgreSQL database, deployed on AWS Elastic Beanstalk.

Left: personas. Middle: the PlayNYU system with its epics (dashed ovals are engineering enablers). Right: external systems.
All personas share one User record and role membership. Every verified user is a Casual Player first.
| Persona | Who they are | What they want |
|---|---|---|
| Casual Player | Verified NYU student | Keep a profile with season history; see teams, schedules, standings, and facilities; chat and comment |
| Team Captain | Player who created a team | Manage the team roster |
| Free Agent | Player without a team | Be placed on a team by an admin |
| Scorekeeper / Referee | Organizer role, assigned per event | Submit results for assigned events only |
| League Admin | Full organizer | Configure sports, seasons, divisions, facilities, schedules; assign roles; correct results; moderate |
| ID | Epic | Description | Personas | Priority |
|---|---|---|---|---|
| E1 | Register, Verify & Manage Profiles | nyu.edu email verification, login, roles, player profile with cross-season history | All users; League Admin assigns roles | MVP |
| E2 | Configure Sports & Seasons | Sports and event types, season lifecycle (draft, open, active, closed), divisions | League Admin | MVP |
| E3 | Form Teams & Place Free Agents | Create teams, manage rosters, free agent requests, admin-triggered matching | Team Captain, Free Agent, League Admin | MVP |
| E4 | Schedule Matches & Browse Facilities | Schedule events, assign scorekeepers, NYC Open Data and NYU facilities on a map | League Admin, Casual Player | MVP |
| E5 | Record Scores & View Standings | Submit and correct results, standings computed from results | Scorekeeper / Referee, League Admin, Casual Player | MVP |
| E6 | Monitor the League & Send Notifications | Admin overview of the league, in-app notifications | League Admin, all users | MVP |
| E7 | Chat, Comment & Moderate | Team chat, direct messages, match comments, blocking, reporting, moderation | All users; League Admin moderates | MLP |
| E8 | Set Up, Test & Deploy the Project | Repo, Django skeleton, CI, AWS Elastic Beanstalk deployment, seed data | Development team | Enabler |
| E9 | Secure & Observe the System | Verified-user middleware, rate limits, permission tests, logging, audit log | Development team | Enabler |
External systems: Email delivery (SMTP) is used by E1. The NYC Open Data Athletic Facilities dataset (imported by a management command) and OpenStreetMap tiles (loaded by the browser) are used by E4.
Out of scope this revision: NYU single sign on, friends, following, activity feeds, season forums, reactions, email notifications.
E1 Register, Verify & Manage Profiles
Every other epic depends on verified users, roles, and profiles existing, so this epic is built first.
- Users register with a valid NYU email / NYU ID.
- If a user registers with a non-NYU email, the system shows the message "Please use your NYU ID".
- When a user enters an NYU email, a confirmation email is sent to that address.
- The user must click the confirmation link to verify the account.
- If the NYU email is fake or invalid, the confirmation email never arrives, so the account stays unverified and cannot be used.
- Only legitimate NYU emails can complete registration and become verified users.
- Once verified, the user can create and edit their player profile.
Registration & Login
- As a new NYU student, I want to create an account with my NYU ID and password so that I can access PlayNYU.
- As a registered user, I want to log in with my NYU ID and password so that I can access the platform.
- As a user, I want the system to tell me if an account with my NYU ID already exists so that I do not create a duplicate account.
Verification
- As a user, I want the system to reject non-NYU emails and show "Please use your NYU ID" so that only NYU students can register.
- As a user, I want to receive a confirmation email at my NYU address so that I can verify my account.
- As a user, I want my account to stay unverified until I click the confirmation link so that only legitimate NYU emails can complete registration.
Profile Management
- As a verified user, I want to create and update my player profile (name, photo, preferred sports, etc.) so that captains and other players can see my information.
- As a verified user, I want to edit my profile at any time so that my details stay accurate and up to date.
- As a verified user, I want to see why an update was rejected and know that nothing was saved so that I can fix the problem.
- As a verified user, I want to correct my details and submit again after a rejection so that I can finish my update without starting over.