یک پروژه کامل و production-ready برای مدیریت ثبت‌نام و خدمات سرور Minecraft Paper بساز.

هدف پروژه:
یک وب‌اپلیکیشن کامل با Node.js طراحی کن که کاربران بتوانند در آن ثبت‌نام کنند، احراز هویت شوند، پروفایل خود را مدیریت کنند، درخواست اتصال به سرور Minecraft Paper بدهند، وضعیت تأیید حساب خود را ببینند، کیف پول داخلی داشته باشند، و در آینده به DApp و Telegram WebApp هم متصل شود.

زبان و استک:
- Backend: Node.js + Express
- Frontend: EJS یا یک پنل HTML/CSS/JS ساده و تمیز (اگر خواستی Next.js استفاده نکن، چون نصب و استقرار باید ساده باشد)
- Database: PostgreSQL یا MariaDB/MySQL
- ORM: Prisma یا Sequelize
- Auth: JWT + Session where needed
- Password hashing: bcrypt
- File upload: multer
- SMS/Email providers must be abstracted through config
- Telegram login support + Telegram WebApp support آماده باشد
- همه چیز باید روی لینوکس و VPS ساده قابل نصب باشد

مهم:
پروژه را طوری بساز که نصب آن تا حد ممکن خودکار باشد؛ مثل اسکریپت‌های self-installer.
یعنی:
- یک فایل install.sh بساز
- یک فایل setup.js یا setup.ts بساز که تنظیمات اولیه را انجام دهد
- اگر Docker استفاده می‌کنی فقط در حد اختیاری باشد، اما نسخه اصلی باید بدون Docker هم راحت نصب شود
- دیتابیس باید به صورت خودکار migrate شود
- فایل .env.example کامل ساخته شود
- seed اولیه برای ساخت ادمین هم وجود داشته باشد
- README کامل با دستورات دقیق نصب و اجرا بنویس

معماری پروژه:
پروژه را ماژولار و تمیز بساز. ساختار پوشه‌ها مشخص و حرفه‌ای باشد. چیزی شبیه:
- /src
  - /config
  - /modules
    - /auth
    - /users
    - /admin
    - /minecraft
    - /wallet
    - /telegram
    - /notifications
    - /uploads
  - /middlewares
  - /utils
  - /views یا /public
  - server.js
- /scripts
  - install.sh
  - init-db.sh
  - create-admin.js
- /prisma یا /migrations
- .env.example
- README.md

قابلیت‌های اصلی سیستم:

1) احراز هویت و ثبت‌نام
- ثبت‌نام با ایمیل
- ثبت‌نام با شماره موبایل
- ثبت‌نام/ورود با تلگرام
- امکان ورود با username/password
- کاربر بتواند یکی یا چند روش ورود را به حسابش متصل کند
- OTP برای موبایل و ایمیل به صورت ماژولار پیاده‌سازی شود
- برای حالت توسعه، providerهای ایمیل و SMS mock داشته باشد
- قابلیت فراموشی رمز عبور
- قابلیت تأیید ایمیل
- قابلیت تأیید شماره موبایل
- محدودسازی تلاش ورود (rate limit)
- reCAPTCHA یا placeholder برای ضد اسپم

2) نقش‌ها و وضعیت حساب
- نقش‌ها:
  - superadmin
  - admin
  - moderator
  - user
- وضعیت حساب:
  - pending
  - approved
  - rejected
  - suspended
- ادمین بتواند کاربر را تأیید یا رد کند
- کاربر تأییدنشده فقط برخی بخش‌ها را ببیند
- badge وضعیت حساب در داشبورد کاربر نمایش داده شود

3) پروفایل کاربر
- نام
- نام خانوادگی
- کشور
- شهر
- نام کاربری سایت
- ایمیل
- شماره موبایل
- Telegram ID
- Telegram username
- Minecraft username
- UUID ماینکرفت (در صورت موجود بودن)
- نوع لانچر
- توضیحات اضافی
- تصویر پروفایل
- آپلود فایل‌های لازم مثل اسکرین‌شات یا مدرک در صورت نیاز

4) اتصال به Minecraft Paper
- یک ماژول مخصوص Minecraft بساز
- بخش admin برای ثبت تنظیمات سرور Paper:
  - server name
  - ip
  - port
  - api key یا secret
  - plugin endpoint
- بخش کاربر برای ثبت Minecraft username
- بخش sync placeholder برای ارتباط با Paper plugin
- API endpoint آماده برای ارتباط پلاگین سرور Paper با سایت بساز
- این endpointها شامل این موارد باشند:
  - بررسی اینکه کاربر تأیید شده یا نه
  - دریافت اطلاعات کاربر بر اساس Minecraft username
  - فعال/غیرفعال بودن دسترسی کاربر
  - وضعیت خرید پلن یا عضویت
- یک نمونه Paper plugin ساده هم در پوشه جداگانه بساز یا حداقل API contract دقیق بنویس
- در پنل ادمین لاگ ارتباطات Paper با سایت ثبت شود

5) کیف پول دیجیتال داخلی
- برای هر کاربر کیف پول داخلی بساز
- فعلاً کیف پول داخلی دیتابیسی باشد
- موجودی
- تراکنش‌ها
- نوع تراکنش:
  - deposit
  - withdraw
  - purchase
  - reward
  - admin_adjustment
- قابلیت افزودن موجودی توسط ادمین
- قابلیت کسر موجودی توسط ادمین
- تاریخچه کامل تراکنش‌ها
- آماده برای اتصال آینده به کریپتو یا TON
- ساختار wallet provider را abstraction کن تا بعداً بتوان به Tonkeeper یا شبکه TON وصل کرد

6) پلن‌ها و خریدها
- بخش پلن‌ها برای خرید:
  - پلن رایگان
  - پلن VIP
  - پلن اشتراک ماهانه
  - پلن خرید آیتم یا سرویس
- هر پلن:
  - title
  - slug
  - description
  - price
  - duration
  - features
  - active
- کاربر بتواند درخواست خرید ثبت کند
- وضعیت سفارش:
  - pending
  - paid
  - failed
  - cancelled
  - completed
- timeline وضعیت سفارش در پنل کاربر نمایش داده شود
- ادمین بتواند سفارش را تأیید کند
- پرداخت داخلی از کیف پول داخلی پشتیبانی شود
- درگاه پرداخت placeholder هم آماده باشد

7) پنل ادمین
- داشبورد آمار:
  - تعداد کاربران
  - تعداد کاربران pending
  - تعداد کاربران approved
  - تعداد خریدها
  - مجموع تراکنش‌ها
  - تعداد ارتباطات Minecraft sync
- مدیریت کاربران
- جستجو و فیلتر
- تغییر نقش
- تغییر وضعیت حساب
- ویرایش موجودی کیف پول
- مدیریت پلن‌ها
- مدیریت سفارش‌ها
- مدیریت تنظیمات سایت
- مدیریت تنظیمات Telegram
- مدیریت تنظیمات Email/SMS
- مشاهده لاگ‌های سیستم
- مشاهده لاگ‌های اتصال سرور Paper
- بخش placeholder برای sync account های Minecraft

8) Telegram
- ورود با تلگرام
- ذخیره Telegram ID و username
- پشتیبانی از Telegram WebApp
- ذخیره اطلاعاتی که Telegram WebApp می‌دهد
- middleware برای اعتبارسنجی داده‌های تلگرام
- صفحه یا endpoint برای تست اتصال تلگرام
- ساختار آماده برای ارسال پیام تبلیغاتی/اطلاع‌رسانی در آینده
- اما ارسال انبوه واقعی را فقط به صورت placeholder و امن پیاده‌سازی کن

9) اعلان‌ها
- ایمیل خوش‌آمدگویی
- ایمیل تأیید حساب
- ایمیل بازیابی رمز
- اعلان تأیید یا رد حساب
- اعلان خرید موفق
- اعلان تغییر موجودی کیف پول
- ساختار ماژولار برای SMS و Telegram notifications

10) امنیت
- helmet
- cors قابل تنظیم
- express-rate-limit
- sanitize input
- csrf protection در فرم‌ها اگر از session/form-based auth استفاده شد
- validation کامل با zod یا joi
- لاگ خطاها
- audit log برای عملیات ادمین
- جلوگیری از دسترسی غیرمجاز به پنل ادمین
- آپلود فایل امن با محدودیت نوع فایل و سایز

11) رابط کاربری
- ظاهری مدرن، تمیز، فارسی و RTL
- responsive برای موبایل
- صفحات:
  - خانه
  - ورود
  - ثبت‌نام
  - فراموشی رمز
  - داشبورد کاربر
  - پروفایل
  - کیف پول
  - خرید پلن
  - سفارش‌های من
  - وضعیت تأیید حساب
  - راهنمای اتصال به سرور
  - پنل ادمین
- در داشبورد کاربر این بخش‌ها باشد:
  - وضعیت حساب
  - اطلاعات پروفایل
  - Minecraft username
  - وضعیت اتصال به سرور
  - موجودی کیف پول
  - خریدهای اخیر
  - اعلان‌ها

12) API
APIهای تمیز و مستند بساز، شامل:
- /api/health
- /api/auth/register
- /api/auth/login
- /api/auth/telegram
- /api/auth/forgot-password
- /api/users/me
- /api/users/update-profile
- /api/wallet
- /api/wallet/transactions
- /api/plans
- /api/orders
- /api/admin/users
- /api/admin/plans
- /api/admin/orders
- /api/admin/wallet
- /api/minecraft/sync/check-user
- /api/minecraft/sync/profile
- /api/minecraft/sync/status

13) دیتابیس
مدل‌های دیتابیس را کامل بساز:
- User
- UserProfile
- UserAuthProvider
- Role
- Wallet
- WalletTransaction
- Plan
- Order
- OrderStatusHistory
- MinecraftProfile
- MinecraftServerConfig
- TelegramAccount
- Notification
- AuditLog
- SystemSetting
- FileUpload

14) نصب خودکار
فایل‌های نصب و راه‌اندازی حتماً ساخته شوند:
- install.sh
  - بررسی نصب بودن node
  - بررسی دیتابیس
  - نصب dependencyها
  - ساخت فایل .env از روی نمونه
  - اجرای migration
  - اجرای seed
  - ساخت ادمین اولیه
  - اجرای پروژه
- scripts/create-admin.js
- scripts/check-env.js
- scripts/init-database.js

همچنین:
- در README دقیق بنویس:
  - پیش‌نیازها
  - نصب روی Ubuntu
  - تنظیم فایل env
  - اجرای migration
  - ساخت admin
  - اجرای dev
  - اجرای production
  - نمونه reverse proxy برای nginx
  - نحوه اتصال plugin سرور Paper به API سایت

15) خروجی نهایی
خروجی باید کامل باشد، نه شبه‌کد.
همه فایل‌ها را بساز.
هیچ بخشی را خالی نگذار.
اگر بخشی نیاز به کلید API خارجی دارد، با mock provider و TODO تمیز پیاده‌سازی کن.
کدها باید runnable باشند.
Build نباید بشکند.
Error handling واقعی باشد.
README کامل و قابل استفاده باشد.

16) نکات بسیار مهم
- پروژه باید برای توسعه آینده مناسب باشد
- هر چیزی که برای اتصال بعدی به DApp، TON wallet، Tonkeeper، Telegram mini app و Paper plugin لازم است، از الان در ساختار دیده شود
- فعلاً تمرکز بر راه‌اندازی ساده، قابل نصب، و قابل توسعه باشد
- سیستم را طوری بنویس که بعداً بشود چند سرور Minecraft مختلف هم به آن اضافه کرد
- متن‌ها و رابط کاربری فارسی باشد
- کامنت‌های کد انگلیسی و تمیز باشند
- نام‌گذاری فایل‌ها و توابع حرفه‌ای باشد

در پایان:
1. کل ساختار پروژه را بده
2. تمام فایل‌های اصلی را کامل بنویس
3. install.sh را کامل بنویس
4. .env.example را کامل بنویس
5. migration/seed را بساز
6. README کامل بده


7. اگر لازم بود plugin contract یا sample plugin برای Paper هم بساز 


#######################################################################################


قوانین خروجی:
- هیچ فایل placeholder خالی نساز
- هیچ بخشی را با عبارت TODO بدون پیاده‌سازی پایه رها نکن
- اگر بخشی به سرویس خارجی وابسته است، mock implementation بساز
- همه importها درست باشند
- همه routeها به controller واقعی وصل باشند
- دیتابیس schema کامل باشد
- migration قابل اجرا باشد
- اگر از Prisma استفاده شد، schema.prisma کامل و معتبر باشد
- اگر از Sequelize استفاده شد، modelها و migrationها کامل باشند
- پروژه با npm install و سپس bash install.sh بالا بیاید
- اگر نیاز به frontend build هست، npm scripts کامل تعریف کن
- package.json کامل و بدون dependency ناقص باشد
- خروجی نهایی را به صورت پروژه کامل چندفایلی تولید کن