eNations is a web platform built to simulate an "African Nations League" football tournament. Federation representatives register their 23-player squads, whilst an administrator role manages the automated 8-team tournament. Key features include a match simulation engine, automated bracket progression, and AI-generated match commentary.
# African Nations League Platform
A tournament management system for the African Nations League, featuring AI-powered match commentary, real-time bracket tracking, and federation management.
## Features
- **Tournament Management**: Quarter Finals → Semi Finals → Final bracket system
- **AI Match Commentary**: GPT-powered structured commentary with key moments, player of match, and tactical analysis
- **Federation Registration**: 8 African nations with squad management (23 players each)
- **Real-time Leaderboard**: Top goal scorers tracking with live updates
- **Email Notifications**: Automated match result notifications via Resend API
- **Match Details**: Public pages with full commentary for played matches
- **User Onboarding**: Interactive guided tour for first-time users
- **Responsive Design**: Built with shadcn/ui and Tailwind CSS
## Getting Started
### Prerequisites
- Node.js 18+
- npm/yarn/pnpm
- Firebase project with Firestore
- OpenAI API key
- Resend API key
### Installation
1. Clone the repository:
```bash
git clone
github.com
cd enations
```
2. Install dependencies:
```bash
npm install
```
3. Set up environment variables (create `.env.local`):
```env
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
OPENAI_API_KEY=your_openai_api_key
RESEND_API_KEY=your_resend_api_key
```
4. Run the development server:
```bash
npm run dev
```
5. Open
localhost in your browser.
## 📋 UCT Assignment Requirements
### Player Rating System
- Natural position: 50-100 (inclusive)
- Other positions: 0-50 (inclusive)
- Team rating = average of players' natural position ratings
### Tournament Structure
- 8 teams minimum for Quarter Finals
- Automatic bracket progression
- Winn …