feat: initialize Next.js project with Prisma, authentication, and rankings page

This commit is contained in:
2026-03-27 14:50:00 -07:00
parent 96f7cb86d3
commit 66e4baa643
208 changed files with 8522 additions and 9035 deletions
+221
View File
@@ -0,0 +1,221 @@
# EuchreCamp User Stories
## Epic 1: Authentication & User Management
### As a new user, I want to register for an account so that I can participate in tournaments and track my games
- Acceptance Criteria:
- Registration form with name, email, password, password confirmation
- Email validation and uniqueness check
- Password strength requirements (8+ chars, uppercase, lowercase, number, special char)
- Account confirmation via email
- Auto-create player profile upon registration
### As a registered user, I want to log in to my account so that I can access my data
- Acceptance Criteria:
- Login form with email and password
- Session management with secure cookies
- "Remember me" functionality
- Error handling for invalid credentials
- Account lockout after 5 failed attempts
### As a logged-in user, I want to log out so that I can secure my account
- Acceptance Criteria:
- Logout button in navigation
- Session cleared on logout
- Redirect to home page
### As a user who forgot my password, I want to reset it so that I can regain access
- Acceptance Criteria:
- "Forgot password" link on login page
- Email input for reset request
- Unique token generation (expires in 1 hour)
- Email with reset link
- Password update form with validation
## Epic 2: Player Profile & Analytics
### As a player, I want to view my profile so that I can see my statistics
- Acceptance Criteria:
- Profile header with name and avatar
- Current Elo rating with trend indicator
- Total games played
- Win rate percentage
- Member since date
### As a player, I want to see my partnership performance so that I can identify my best partners
- Acceptance Criteria:
- Table showing all partners
- Games played with each partner
- Win rate with each partner
- Total Elo change per partnership
- Last played together date
### As a player, I want to see my recent games so that I can track my performance
- Acceptance Criteria:
- Timeline of recent matches
- Date, opponents, scores, and results
- Partner information for each game
- Pagination for loading more games
### As a player, I want to see my tournament history so that I can review past performances
- Acceptance Criteria:
- List of tournaments participated in
- Final standings in each tournament
- Performance summary per tournament
## Epic 3: Rankings & Public Data
### As a visitor, I want to view player rankings so that I can see top players
- Acceptance Criteria:
- Sortable rankings table
- Columns: Rank, Name, Elo, Win Rate, Games Played
- Search/filter functionality
- Pagination
### As a visitor, I want to view player profiles so that I can learn about other players
- Acceptance Criteria:
- Public profile pages (read-only for non-admins)
- Basic stats: Elo, games played, win rate
- Partnership performance (if public)
- Recent games (limited)
## Epic 4: Tournament Management
### As a tournament admin, I want to create a new tournament so that I can organize events
- Acceptance Criteria:
- Tournament creation form
- Fields: Name, Format (round-robin, single elim, double elim, Swiss), Date, Status
- Default settings for each format
- Validation for required fields
### As a tournament admin, I want to manage tournament participants so that I can control who plays
- Acceptance Criteria:
- Add participants from player list
- Remove participants
- Bulk import from CSV
- View participant list with status
### As a tournament admin, I want to create teams so that I can organize players into pairs
- Acceptance Criteria:
- Team creation form
- Select two players per team
- Auto-generate team names
- Edit/delete teams
### As a tournament admin, I want to generate a schedule so that matches are organized
- Acceptance Criteria:
- Round-robin schedule generation
- Single/double elimination bracket generation
- View schedule by round
- Re-schedule matches if needed
### As a tournament admin, I want to record match results so that I can track tournament progress
- Acceptance Criteria:
- Match result entry form
- Select teams and enter scores
- Auto-determine winner from scores
- Validation for score formats
### As a tournament admin, I want to upload results via CSV so that I can batch process matches
- Acceptance Criteria:
- CSV upload form with tournament selection
- Parse CSV with specific format (Event, Round, Table, Seats, Scores, Winner)
- Validate player names exist in system
- Create teams automatically if needed
- Import matches and update Elo ratings
### As a tournament admin, I want to view tournament analytics so that I can assess performance
- Acceptance Criteria:
- Tournament statistics (total matches, average score, etc.)
- Partnership performance within tournament
- Elo changes for participants
- Visual charts for key metrics
## Epic 5: Match Recording & CSV Import
### As a user, I want to record a match result so that I can track my games
- Acceptance Criteria:
- Match creation form
- Select Team 1 and Team 2 (each with 2 players)
- Enter scores for each team
- Auto-calculate winner
- Update Elo ratings for all players
- Update partnership statistics
### As a user, I want to upload match results via CSV so that I can process multiple matches at once
- Acceptance Criteria:
- CSV upload form
- Support for Euchre format (Event, Round, Table, Seat 1-4, Odds/Evens Points, Winner)
- Map table names (Clubs, Hearts, Diamonds, Spades, Stars) to numeric IDs
- Handle player name variations
- Create teams automatically
- Import matches and calculate Elo
- Show import summary with success/error count
### As a user, I want to edit match results so that I can correct mistakes
- Acceptance Criteria:
- Edit form for existing matches
- Validation for time limits (5 minutes for players, unlimited for admins)
- Update Elo ratings on change
- Log changes in activity feed
## Epic 6: Club Administration
### As a club admin, I want to manage all players so that I can maintain the player database
- Acceptance Criteria:
- Player directory with search and filter
- Create, edit, delete players
- Bulk actions (export, update ratings)
- View player activity
### As a club admin, I want to manage all tournaments so that I can oversee club events
- Acceptance Criteria:
- Tournament list with filters
- Clone existing tournaments
- Archive completed tournaments
- View tournament analytics
### As a club admin, I want to configure club settings so that I can customize the system
- Acceptance Criteria:
- Elo rating parameters
- Partnership tracking preferences
- Notification settings
- Default tournament settings
### As a club admin, I want to view club analytics so that I can assess overall performance
- Acceptance Criteria:
- Rating distribution charts
- Activity heatmaps
- Partnership network graph
- Export reports (PDF/CSV)
## Epic 7: Mobile Responsiveness
### As a mobile user, I want to navigate the site so that I can access features on my phone
- Acceptance Criteria:
- Responsive navigation bar
- Bottom navigation for mobile
- Touch-friendly buttons and links
- Optimized layouts for small screens
### As a mobile user, I want to record match results so that I can log games on the go
- Acceptance Criteria:
- Mobile-optimized forms
- Quick entry for common actions
- Offline support (optional)
## Epic 8: Data Management & Export
### As a club admin, I want to export data so that I can backup or analyze externally
- Acceptance Criteria:
- Export players to CSV
- Export tournaments to CSV
- Export matches to CSV
- Export partnership data to CSV
### As a club admin, I want to import data so that I can migrate from other systems
- Acceptance Criteria:
- Import players from CSV
- Import tournaments from CSV
- Import matches from CSV
- Data validation and error reporting