# ⚽ فانتزی فوتبال - Fantasy Football

یک پلتفرم فانتزی فوتبال کامل با Next.js، Prisma و PostgreSQL

## 🌟 ویژگی‌ها

### برای کاربران
- ✅ ثبت‌نام و ورود امن با NextAuth
- ✅ ساخت تیم به صورت استپ‌بای‌استپ
- ✅ انتخاب لوگو و نام تیم
- ✅ انتخاب از 6 ترکیب مختلف
- ✅ مدیریت بودجه (100 میلیون)
- ✅ انتخاب 11 بازیکن اصلی + 4 ذخیره
- ✅ Drag & Drop برای جابجایی بازیکنان
- ✅ انتخاب کاپیتان و نایب کاپیتان
- ✅ فیلتر و جستجوی بازیکنان
- ✅ نمایش زمین فوتبال واقعی
- ✅ پیگیری امتیازات

### برای ادمین
- ✅ مدیریت کشورها و پرچم‌ها
- ✅ مدیریت بازیکنان
- ✅ مدیریت مسابقات و راند‌ها
- ✅ ثبت رویدادهای بازی (گل، کارت، و...)
- ✅ محاسبه خودکار امتیازات
- ✅ تایید تیم‌های کاربران
- ✅ مدیریت قوانین امتیازدهی
- ✅ آمار و گزارش‌گیری

## 🚀 نصب و راه‌اندازی

### پیش‌نیازها
- Node.js 18+
- PostgreSQL
- npm یا yarn

### مراحل نصب

1. **کلون کردن پروژه**
```bash
git clone <repository-url>
cd football-next
```

2. **نصب وابستگی‌ها**
```bash
npm install
```

3. **تنظیم متغیرهای محیطی**
فایل `.env` را ایجاد کنید:
```env
DATABASE_URL="postgresql://user:password@host:port/database"
NEXTAUTH_SECRET="your-secret-key"
NEXTAUTH_URL="http://localhost:3000"
```

4. **راه‌اندازی دیتابیس**
```bash
npm run db:generate
npm run db:push
```

5. **ساخت کاربران تست**
```bash
# کاربر عادی
npm run setup:test-user

# کاربر ادمین
npm run setup:admin
```

6. **اجرای پروژه**
```bash
npm run dev
```

پروژه روی `http://localhost:3000` اجرا می‌شود.

## 📋 اسکریپت‌های NPM

```bash
npm run dev              # اجرای development server
npm run build            # ساخت برای production
npm run start            # اجرای production server
npm run db:push          # اعمال تغییرات schema به دیتابیس
npm run db:generate      # تولید Prisma Client
npm run db:studio        # باز کردن Prisma Studio
npm run setup:test-user  # ساخت کاربر تست
npm run setup:admin      # ساخت کاربر ادمین
npm run check:users      # بررسی کاربران موجود
```

## 🔐 کاربران پیش‌فرض

### کاربر عادی
- ایمیل: `test@test.com`
- رمز عبور: `123456`

### ادمین
- ایمیل: `admin@admin.com`
- رمز عبور: `admin123`

## 📁 ساختار پروژه

```
football-next/
├── app/                    # Next.js App Router
│   ├── (admin)/           # صفحات ادمین
│   ├── (user)/            # صفحات کاربر
│   └── api/               # API Routes
├── components/            # کامپوننت‌های React
├── lib/                   # توابع کمکی
│   ├── auth.ts           # تنظیمات NextAuth
│   └── db.ts             # Prisma Client
├── prisma/               # Schema و Migrations
├── public/               # فایل‌های استاتیک
├── scripts/              # اسکریپت‌های کمکی
└── styles/               # فایل‌های CSS
```

## 🎮 راهنمای استفاده

### برای کاربران
مستندات کامل در [USER-GUIDE.md](./USER-GUIDE.md)

### برای توسعه‌دهندگان
مستندات راه‌اندازی در [SETUP.md](./SETUP.md)

## 🛠️ تکنولوژی‌ها

- **Framework**: Next.js 16 (App Router)
- **Database**: PostgreSQL
- **ORM**: Prisma
- **Authentication**: NextAuth.js
- **Styling**: Tailwind CSS
- **Language**: TypeScript
- **Drag & Drop**: Native HTML5

## 📊 مدل دیتابیس

### جداول اصلی
- `User` - کاربران
- `Team` - تیم‌های کاربران
- `Player` - بازیکنان
- `Country` - کشورها
- `Match` - مسابقات
- `Round` - راندها
- `MatchEvent` - رویدادهای بازی
- `PlayerMatchStat` - آمار بازیکنان
- `ScoringRule` - قوانین امتیازدهی

## 🎨 ویژگی‌های طراحی

- طراحی Responsive
- حالت RTL برای فارسی
- انیمیشن‌های روان
- رنگ‌بندی مدرن
- UX بهینه
- دسترسی‌پذیری

## 🔄 فرآیند ساخت تیم

### استپ 1: مشخصات تیم
1. انتخاب لوگو (10 گزینه)
2. وارد کردن نام تیم
3. ساخت تیم

### استپ 2: انتخاب بازیکنان
1. انتخاب ترکیب
2. اضافه کردن 11 بازیکن اصلی
3. اضافه کردن 4 بازیکن ذخیره
4. انتخاب کاپیتان و نایب کاپیتان
5. ثبت نهایی

## 🐛 رفع مشکلات

### خطای Foreign Key
```bash
# بررسی کاربران
npm run check:users

# ساخت کاربر جدید
npm run setup:test-user
```

### مشکل Session
1. از مرورگر خارج شوید
2. Cache را پاک کنید
3. دوباره وارد شوید

### خطای دیتابیس
```bash
# ریست کردن دیتابیس
npx prisma db push --force-reset

# تولید مجدد Client
npm run db:generate
```

## 📈 TODO

- [ ] آپلود تصویر برای لوگو تیم
- [ ] پیش‌نمایش تیم
- [ ] انیمیشن‌های بهتر
- [ ] نمایش آمار تفصیلی بازیکنان
- [ ] فیلتر پیشرفته
- [ ] مقایسه بازیکنان
- [ ] پیش‌بینی امتیازات
- [ ] اعلان‌های Real-time
- [ ] چت و نظرات
- [ ] لیگ‌های خصوصی

## 🤝 مشارکت

برای مشارکت در پروژه:
1. Fork کنید
2. Branch جدید بسازید
3. تغییرات را Commit کنید
4. Push کنید
5. Pull Request بزنید

## 📄 لایسنس

این پروژه تحت لایسنس MIT است.

## 📞 تماس

برای سوالات و پشتیبانی، با ما تماس بگیرید.

---

**ساخته شده با ❤️ برای علاقه‌مندان فوتبال**
