# راهنمای بالا آوردن پروژه روی cPanel

## پیش‌نیاز
هاست شما باید از "Setup Node.js App" پشتیبانی کند (اکثر هاست‌های cPanel مدرن با CloudLinux این قابلیت را دارند). اگر در منوی cPanel آیکون **"Setup Node.js App"** را نمی‌بینید، هاست شما Node.js را پشتیبانی نمی‌کند و باید یا هاست عوض کنید یا از یک VPS استفاده کنید.

## مرحله ۱: آماده‌سازی فایل‌ها روی سیستم خودتان
قبل از آپلود، بهتر است یک‌بار به صورت لوکال build بگیرید تا مطمئن شوید خطایی نیست:
```bash
npm install
npm run build
```
اگر بدون خطا build شد، آماده آپلود هستید.

## مرحله ۲: ساخت اپ Node.js در cPanel
1. وارد cPanel شوید و **Setup Node.js App** را باز کنید.
2. روی **Create Application** بزنید.
3. تنظیمات:
   - **Node.js version**: یک نسخه ۱۸ یا بالاتر انتخاب کنید (هرچه به ۲۰ نزدیک‌تر بهتر).
   - **Application mode**: Production
   - **Application root**: مثلاً `quiz-app` (پوشه‌ای داخل هاست، مثلاً `/home/USERNAME/quiz-app`)
   - **Application URL**: دامنه یا ساب‌دامنه‌ای که می‌خواهید سایت روی آن بالا بیاید
   - **Application startup file**: `server.js`
4. روی **Create** کلیک کنید. cPanel یک virtualenv مخصوص Node می‌سازد و مسیر «Application root» را به شما نشان می‌دهد.

## مرحله ۳: آپلود فایل‌ها
فایل `quiz-app.zip` (بدون `node_modules`) را از طریق **File Manager** در همان Application root که ساختید آپلود و Extract کنید. یا با git/SFTP کپی کنید.

## مرحله ۴: نصب پکیج‌ها
در همان صفحه Setup Node.js App، یک دکمه **"Run NPM Install"** هست — روی آن بزنید تا `node_modules` نصب شود. (این کار از همان virtualenv و nodeenv مخصوص cPanel استفاده می‌کند.)

اگر ترمینال cPanel در دسترس دارید، می‌توانید دستور command که cPanel نشان می‌دهد (چیزی شبیه `source /home/USERNAME/nodevenv/quiz-app/18/bin/activate && cd /home/USERNAME/quiz-app`) را اجرا کنید و سپس:
```bash
npm install
npx prisma generate
npx prisma db push
```

## مرحله ۵: متغیرهای محیطی
در همان صفحه Setup Node.js App، بخش **Environment Variables** را باز کنید و اضافه کنید:
```
DATABASE_URL=file:./prisma/dev.db
NODE_ENV=production
```

## مرحله ۶: build نهایی
از طریق ترمینال (با virtualenv فعال طبق مرحله ۴):
```bash
npm run build
```

## مرحله ۷: استارت
در صفحه Setup Node.js App روی **Restart** بزنید. اپ باید از طریق `server.js` بالا بیاید و روی دامنه‌ای که مشخص کردید در دسترس باشد.

## نکات مهم
- **دیتابیس SQLite**: فایل `dev.db` داخل پوشه پروژه ساخته می‌شود. مطمئن شوید پوشه `prisma/` قابل نوشتن (writable) است — معمولاً روی cPanel همینطور است چون مالک فایل‌ها همان یوزر هاست است.
- اگر ترافیک بالا دارید یا چند نسخه از اپ همزمان اجرا می‌شود، SQLite مناسب production سنگین نیست؛ برای آن حالت بهتر است به MySQL/PostgreSQL که خود cPanel می‌سازد مهاجرت کنید (کافیست `datasource db` در `prisma/schema.prisma` را عوض کنید).
- بعد از هر تغییر در کد، دوباره باید `npm run build` بزنید و از پنل Restart کنید.
- اگر خطای "Cannot find module 'next'" گرفتید یعنی npm install درست انجام نشده یا از virtualenv اشتباه استفاده کرده‌اید.
