All-in-one solution for managing amateur football clubs
π Live Demo β’ β¨ Features β’ π Tech Stack β’ π¦ Installation
FootHubGo is a comprehensive web application designed to streamline the management of amateur football clubs. From team rosters and match statistics to real-time chat and event scheduling, this platform provides everything coaches and players need in one place.
| Feature | Description |
|---|---|
| Team Overview Card | Quick view of your club's key information |
| Club Leaderboard | Rankings of all clubs with points and stats |
| Next Events Widget | Upcoming 3 events with countdown |
| Last 5 Results | Recent match results with W/D/L indicators |
| Quick Stats Panel | Key statistics at a glance |
| Join Club Modal | OTP input to join a club with invite code |
| No Club State | Onboarding for users without a club |
| Feature | Description |
|---|---|
| Create Club | One-click club creation, user becomes coach automatically |
| Edit Club Info | Modify club name, description, logo |
| Club Logo Upload | AWS S3 integration for image storage |
| Delete Club | Complete club removal with confirmation |
| Club Status Display | Show club information and member count |
| Feature | Description |
|---|---|
| Member Table | Full roster with avatars, positions, roles |
| Dynamic Filtering | Filter by role (coach/player), position |
| Search | Instant search by player name |
| Modify Roles | Change member from player to coach |
| Modify Position | Assign/change player positions (GK, CB, ST, etc.) |
| Remove Player | Kick players from the club |
| Feature | Description |
|---|---|
| Generate Invite Code | Create unique 6-digit codes |
| Regenerate Code | Generate new code (invalidates old) |
| Delete Code | Remove active invitation code |
| Join via Code | OTP input to join with invite code |
| Join Requests | Players can request to join with motivation message |
| Request Management | Coaches can accept/reject join requests |
| Feature | Description |
|---|---|
| Interactive Calendar | Beautiful month/week/day/agenda views |
| Drag & Drop | Reschedule events by dragging |
| Event Types | Training (π ), Championship (π΅), Cup (π’) |
| Event Filtering | Filter by event type with colored checkboxes |
| Create Events | Modal form with validation |
| Edit Events | Modify existing events |
| Delete Events | Remove events with confirmation |
| Stats Protection | Can't modify/delete events with recorded stats |
| Event Details Page | Full event information with presences/stats |
| Feature | Description |
|---|---|
| Mark Presence | One-click Present/Absent/Pending for players |
| Presence Table | Coach view of all player statuses |
| Summary Cards | Count of present/absent/pending players |
| Color-coded Badges | Visual status indicators |
| Past Event Lock | Can't change presence after event date |
| Feature | Description |
|---|---|
| Match Lineup | Select players for upcoming matches |
| Convocation Status | Pending/Accepted/Declined |
| Player Response | Players can accept or decline convocations |
| Coach Overview | See all player responses at a glance |
| Convocation Notifications | Alert players when convoked |
| Feature | Description |
|---|---|
| Goals | Track goals scored per player |
| Assists | Track decisive passes |
| Minutes Played | Playing time tracking |
| Player Rating | 1-10 performance ratings |
| Position Tracking | Stats filtered by position |
| Starter/Sub Status | Titulaire or substitute |
| Player Stats Card | Individual player statistics summary |
| Stats Entry Form | Coach form to enter match stats |
| Stats Table | Sortable table of all player stats |
| Feature | Description |
|---|---|
| Match Results | Win/Draw/Loss records |
| Goals For/Against | Scoring and conceding stats |
| Goal Difference | Net goals calculation |
| Points | League points (3/1/0) |
| Clean Sheets | Matches without conceding |
| Shots on Target | Total and on-target shots |
| Home/Away Split | Performance by venue |
| Form Indicator | Last 5 match results |
| Stats Entry Form | Record match statistics |
| Interactive Charts | Recharts visualizations |
| Feature | Description |
|---|---|
| Private Messages | 1-on-1 conversations with teammates |
| Group Chats | Team-wide or custom group conversations |
| Create Conversation | Start new private or group chat |
| Message Replies | Reply to specific messages with preview |
| @Mentions | Mention teammates with autocomplete |
| Pin Conversations | Pin important chats to top |
| Pin Messages | Pin important messages in a conversation |
| Delete Messages | Remove own messages |
| Delete Conversations | Remove entire conversation |
| Block Users | Block users from messaging you |
| Read Receipts | See when messages are read |
| Real-time Updates | WebSocket-powered instant delivery |
| Emoji Picker | Send emojis in messages |
| Typing Indicators | See when someone is typing |
| Unread Badges | Count of unread messages in sidebar |
| Member Search | Find members to chat with |
| Feature | Description |
|---|---|
| Real-time Alerts | Instant WebSocket notifications |
| Multiple Types | Events, messages, join requests, injuries |
| Notification Popover | Quick view in header |
| Mark as Read | Individual or bulk read status |
| Mark All Read | One-click clear all |
| Notification History | View past notifications |
| Sidebar Badge | Unread count always visible |
| Feature | Description |
|---|---|
| Report Injury | Players declare injuries with details |
| Injury Type | Categorize injury type |
| Description | Detailed injury description |
| Expected End Date | Recovery timeline |
| Injury Timeline | Historical view per player |
| Coach Dashboard | View all team injuries |
| Status Updates | Track recovery progress |
| Feature | Description |
|---|---|
| Team Finances | Track club budget |
| Member Dues | Individual payment tracking |
| Expenses | Record club expenses |
| Payment Status | Paid/Pending indicators |
| Feature | Description |
|---|---|
| Profile Management | Update name, email, bio |
| Avatar Upload | Profile picture with S3 storage |
| Password Change | Secure password update |
| Password Reset | Email-based recovery flow |
| Theme Toggle | Light/Dark mode switch |
| Delete Account | Complete account removal |
| Feature | Description |
|---|---|
| Leave Club | Player can leave current club |
| Transfer Flow | Managed club transitions |
| Feature | Description |
|---|---|
| Email/Password Login | Traditional authentication |
| User Registration | Create new account |
| Email Verification | Verify email address |
| Password Recovery | Reset password via email |
| Session Management | Better Auth integration |
| Feature | Description |
|---|---|
| Welcome Email | On registration |
| Password Reset | Reset link delivery |
| Notification Emails | Event reminders (optional) |
| React Email | Beautiful templated emails |
| Resend Integration | Reliable email delivery |
| Technology | Version | Purpose |
|---|---|---|
| Next.js | 16.0 | React framework with App Router |
| React | 19.2 | UI library with latest features |
| TypeScript | 5.x | Type-safe development |
| Tailwind CSS | 4.x | Utility-first styling |
| Radix UI | Latest | Accessible component primitives |
| Framer Motion | 12.x | Smooth animations |
| Recharts | 3.x | Data visualization |
| React Hook Form | 7.x | Form handling |
| Zod | 3.x | Schema validation |
| TanStack Query | 5.x | Server state management |
| TanStack Table | 8.x | Data tables |
| Zustand | 5.x | Client state management |
| Dayjs | 1.x | Date manipulation |
| Lucide React | Latest | Icon library |
| Technology | Version | Purpose |
|---|---|---|
| Next.js API Routes | 16.0 | RESTful API endpoints |
| Prisma ORM | 6.x | Database access layer |
| PostgreSQL | 15+ | Primary database |
| Socket.IO | 4.x | Real-time WebSocket connections |
| Better Auth | 1.x | Authentication system |
| Resend | 4.x | Email delivery |
| AWS S3 | Latest | File storage |
| Technology | Purpose |
|---|---|
| Neon.tech | Serverless PostgreSQL |
| AWS S3 | File storage (avatars, logos) |
| Stripe | Payment processing |
| Coolify/Docker | Deployment |
| Bun | Fast JavaScript runtime |
- Node.js 18+ or Bun 1.0+
- PostgreSQL database (or Neon.tech account)
- AWS S3 bucket (for file uploads)
git clone https://github.com/BouklifYacine/FootHubGo.git
cd FootHubGo# Using bun (recommended)
bun install
# Or using npm
npm installCreate a .env file in the root directory:
# Database
DATABASE_URL="postgresql://user:password@host:5432/database"
# Authentication
BETTER_AUTH_SECRET="your-secret-key"
BETTER_AUTH_URL="http://localhost:3000"
# WebSocket
NEXT_PUBLIC_SOCKET_URL="ws://localhost:3000"
# AWS S3
AWS_REGION="eu-west-3"
AWS_ACCESS_KEY_ID="your-access-key"
AWS_SECRET_ACCESS_KEY="your-secret-key"
AWS_BUCKET_NAME="your-bucket-name"
# Email (Resend)
RESEND_API_KEY="your-resend-key"
# Stripe (optional)
STRIPE_SECRET_KEY="your-stripe-key"# Generate Prisma client
bunx prisma generate
# Run migrations
bunx prisma migrate dev# Using bun
bun run dev
# Or using npm
npm run devThe application will be available at http://localhost:3000
FootHubGo/
βββ app/ # Next.js App Router
β βββ api/ # 50+ API routes
β βββ dashboardfoothub/ # Main dashboard pages
β β βββ blessures/ # Injuries page
β β βββ calendrier/ # Calendar page
β β βββ chat/ # Messaging page
β β βββ convocations/ # Convocations page
β β βββ effectif/ # Team roster page
β β βββ evenements/ # Events page
β β βββ statistiques/ # Statistics page
β β βββ transfert/ # Transfer page
β βββ connexion/ # Login page
β βββ inscription/ # Registration page
βββ components/ # Shared UI components
β βββ ui/ # shadcn/ui components
βββ features/ # 27 Feature modules
β βββ accueil/ # Home dashboard
β βββ calendrier/ # Calendar & events
β βββ CallUp/ # Convocation system
β βββ chat/ # Messaging system
β βββ club/ # Club management
β βββ dashboard/ # Dashboard components
β βββ evenements/ # Event management
β βββ injuries/ # Injury tracking
β βββ notifications/ # Notification system
β βββ parametres/ # Settings
β βββ presences/ # Presence tracking
β βββ stats/ # Statistics
β β βββ statsjoueur/ # Player stats
β β βββ statsequipe/ # Team stats
β βββ ... # 15+ more modules
βββ lib/ # Utilities & helpers
βββ prisma/ # Database schema
β βββ schema.prisma # Prisma models
β βββ migrations/ # Database migrations
βββ public/ # Static assets
| Permission | Access |
|---|---|
| Create/Edit/Delete Events | β |
| Record Match Statistics | β |
| Manage Club Settings | β |
| Invite/Remove Members | β |
| Change Member Roles/Positions | β |
| View All Team Injuries | β |
| Manage Convocations | β |
| Generate Invite Codes | β |
| Permission | Access |
|---|---|
| View Events | β |
| Mark Own Presence | β |
| View Statistics | β |
| Report Injuries | β |
| Respond to Convocations | β |
| Chat with Teammates | β |
| Leave Club | β |
| View Club Info | β |
| Endpoint | Methods | Description |
|---|---|---|
/api/auth/* |
Various | Authentication endpoints |
/api/calendar/events |
GET | Fetch all team events |
/api/evenements |
GET, POST | Event management |
/api/evenements/[id] |
GET, PUT, DELETE | Single event operations |
/api/chat/* |
Various | Messaging endpoints |
/api/club/* |
Various | Club management |
/api/statistiques/* |
Various | Statistics endpoints |
/api/notifications |
GET, PATCH | Notification management |
/api/upload |
POST | File upload to S3 |
/api/membres/* |
Various | Member management |
MIT License - Copyright (c) 2025 Yacine Bouklif
Built with β€οΈ for amateur football clubs