Files
football-next/README.md
2026-04-07 10:38:28 +03:30

234 lines
6.2 KiB
Markdown

# ⚽ فانتزی فوتبال - 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 است.
## 📞 تماس
برای سوالات و پشتیبانی، با ما تماس بگیرید.
---
**ساخته شده با ❤️ برای علاقه‌مندان فوتبال**