#Features
- 👥 Player Management - Add, edit, and delete players with positions
- 📅 Daily Attendance - Mark attendance with present/absent status and reasons
- 📋 View Attendance - Browse attendance records by date with detailed summaries
- 📊 Player Statistics - View monthly attendance rates with visual progress bars
- ⚠️ Low Attendance Alerts - Identify players below attendance threshold
- 🔐 Role-Based Access Control - Admin, Captain, and Vice Captain can edit; others view only
- 🔒 Secure Authentication - Email/password login via Firebase Auth
#User Roles
- Admin - Full access (manage everything)
- Captain - Add/Edit/Delete players & attendance
- Vice Captain - Add/Edit/Delete players & attendance
- Viewer - Read-only access (no login required)
#Planned Features (Roadmap)
🏟️ Matches Module
- Track match history
- Record results & scores
- Link goal scorers
📊 Availability Poll
- Mark match availability
- Team-wide summary
- Per-player responses
👤 Player Profile
- Profile photo upload
- Attendance percentage
- Matches & goals stats
💬 Team Chat
- Real-time group chat
- Team-only communication
- Message timestamps
📢 Announcements
- One-way notice board
- Priority levels
- Leadership posts only
📄 PDF Export
- Monthly reports
- Shareable with coaches
- Editor-only feature
#Tech Stack
- Frontend: Flutter 3.x / Dart
- Backend: Firebase (Firestore Database)
- Authentication: Firebase Auth
- Notifications: Firebase Cloud Messaging + Local Notifications
- State Management: Provider
#Database Structure
Firestore Database
├── users/
│ └── {uid}
│ ├── name: string
│ ├── email: string
│ └── role: "admin" | "captain" | "vice_captain" | "viewer"
│
├── players/
│ └── {playerId}
│ ├── name: string
│ ├── position: string
│ └── joinedDate: timestamp
│
└── attendance/
└── {YYYY-MM-DD}
├── date: timestamp
├── presentPlayerIds: array
├── absentReasons: map
└── summary: string
#Security
- Firestore Rules: Only authenticated users with admin/captain/vice_captain role can write
- UI Protection: Edit buttons hidden for viewers
- Data Protection: Even if UI is bypassed, Firebase blocks unauthorized writes