-
Admin Panel -
/app/admin/page.js- Create competitions with multiple events
- Free/Paid competition types
- Pricing models (Flat, Per Event, Base+Extra)
- Currency selection (INR/USD)
- Scramble management (5 per event)
- Competition listing and deletion
-
Authentication - FULLY WORKING
- Email/Password login
- Google OAuth
- WCA ID auto-generation
- Role-based access (Admin/User)
-
Homepage - Competition listing
-
Event System - All 17 WCA events configured
Priority: HIGH
- Competition intro section (banner, description, rules)
- Event list display
- Registration system (event selection)
- Payment integration (Razorpay)
- "Start Competition" button (for registered users)
- Competition status check (UPCOMING/LIVE/ENDED)
Priority: HIGH
- 15-second inspection countdown
- Beep at 8s and 5s
- Auto +2 penalty (15-17s)
- Auto DNF (>17s)
- Space bar controls
- Scramble reveal button
- Refresh protection (DNF on refresh)
- Save solve to Firestore
- Auto-move to next scramble
Priority: HIGH
- Fetch all completed results
- Calculate Ao5 (drop best/worst)
- Handle DNF logic
- Sort by average, then best single
- Display: Rank, Username, WCA ID, Country, Average, Best
- Public access (no auth required)
Priority: MEDIUM
- View own profile
- Edit: Display Name, Username, Country, Photo
- Show: WCA ID, Registration Date, Email (read-only)
- Event-wise best single
- Event-wise best average
- Competition history
- Public profile view (
/profile/[userId])
Priority: MEDIUM
- Razorpay checkout integration
- Order creation API
- Payment verification (server-side)
- Payment status in Firestore
- Access control (only paid users can compete)
- Payment history in profile
- Currency conversion (INR/USD)
Priority: HIGH
- Event selection UI
- Calculate total price
- Prevent duplicate registration
- Store registration in Firestore
- Show registered events in competition detail
Priority: HIGH
- API endpoint to calculate Ao5
- Remove best and worst times
- Handle DNF cases
- Update results collection
- Lock submission permanently
Priority: HIGH
- Firestore security rules
- Only admin can create competitions
- Users can only write their own solves
- Prevent editing after submission
- Protect payment records
- Server-side validation for all operations
- Prevent cheating (client-side manipulation)
Priority: MEDIUM
- List all competitions
- Filter by status (Upcoming/Live/Ended)
- Search functionality
- Pagination
Priority: LOW
- Global currency state
- Header currency selector
- Real-time price conversion
- Store user currency preference
Priority: LOW
- Remove any external branding
- Custom 404 page
- Custom error pages
- Favicon update
Priority: MEDIUM
- View all users
- Ban/unban users
- Delete users
- View user solve logs
- Export user data
Priority: LOW
- Participant count
- Payment analytics
- Event popularity
- Export results to CSV
- Email verification on signup
- Email notifications (competition start/end)
- Forgot password page
- Mobile app responsiveness
- PWA support
- Real-time leaderboard updates
- Competition countdown timer
- Social sharing (share results)
- Multi-language support
Before payment integration:
-
Razorpay
- Get from: https://dashboard.razorpay.com/app/keys
- Add
NEXT_PUBLIC_RAZORPAY_KEY_IDto.env.local - Add
RAZORPAY_KEY_SECRETto.env.local
-
Firebase - Already configured ✓
Phase 1 (Current):
- Build Competition Detail Page
- Build WCA Timer Component
- Build Leaderboard Page
Phase 2: 4. Add Payment Integration 5. Build Profile Page 6. Add Firestore Security Rules
Phase 3: 7. User Management 8. Analytics 9. Polish & Testing