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