# ⚽ فانتزی فوتبال - Fantasy Football یک پلتفرم فانتزی فوتبال کامل با Next.js، Prisma و PostgreSQL ## 🌟 ویژگی‌ها ### برای کاربران - ✅ ثبت‌نام و ورود امن با NextAuth - ✅ ساخت تیم به صورت استپ‌بای‌استپ - ✅ انتخاب لوگو و نام تیم - ✅ انتخاب از 6 ترکیب مختلف - ✅ مدیریت بودجه (100 میلیون) - ✅ انتخاب 11 بازیکن اصلی + 4 ذخیره - ✅ Drag & Drop برای جابجایی بازیکنان - ✅ انتخاب کاپیتان و نایب کاپیتان - ✅ فیلتر و جستجوی بازیکنان - ✅ نمایش زمین فوتبال واقعی - ✅ پیگیری امتیازات ### برای ادمین - ✅ مدیریت کشورها و پرچم‌ها - ✅ مدیریت بازیکنان - ✅ مدیریت مسابقات و راند‌ها - ✅ ثبت رویدادهای بازی (گل، کارت، و...) - ✅ محاسبه خودکار امتیازات - ✅ تایید تیم‌های کاربران - ✅ مدیریت قوانین امتیازدهی - ✅ آمار و گزارش‌گیری ## 🚀 نصب و راه‌اندازی ### پیش‌نیازها - Node.js 18+ - PostgreSQL - npm یا yarn ### مراحل نصب 1. **کلون کردن پروژه** ```bash git clone 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 است. ## 📞 تماس برای سوالات و پشتیبانی، با ما تماس بگیرید. --- **ساخته شده با ❤️ برای علاقه‌مندان فوتبال**