راهنمای نصب بازارینو روی هاست cPanel
=====================================
نیازها: PHP نسخه 7.4 یا بالاتر (ترجیحاً 8.1+) و یک دیتابیس MySQL/MariaDB.
فایل‌های Node.js و Netlify دیگر لازم نیستند.

۱) ساخت دیتابیس
   cPanel > MySQL Database Wizard
   - یک دیتابیس بسازید (مثلاً bazarino) و یک کاربر با رمز قوی، و گزینه ALL PRIVILEGES را بدهید.
   - نام نهایی دیتابیس و کاربر با پیشوند نام کاربری cPanel ساخته می‌شود (مثلاً myuser_bazarino).
     همان را یادداشت کنید.
   - جدول‌ها را لازم نیست دستی بسازید؛ اولین بار که سایت باز شود خودکار ساخته می‌شوند.
     (اگر خواستید دستی بسازید، فایل schema.sql را در phpMyAdmin > Import اجرا کنید.)

۲) آپلود فایل‌ها
   cPanel > File Manager > پوشه public_html (یا پوشه‌ی دامنه‌ی bazarino-shop.ir)
   - فایل ZIP را آپلود و Extract کنید.
   - حتماً Settings > Show Hidden Files را روشن کنید تا فایل .htaccess دیده شود.
   - فایل index.html باید مستقیم داخل public_html باشد، نه داخل یک پوشه‌ی دیگر.

۳) تنظیمات
   فایل config.sample.php را به config.php تغییر نام بدهید و Edit کنید:
     db_name / db_user / db_pass  ← مشخصات دیتابیس مرحله ۱
     auth_secret                  ← یک رشته‌ی تصادفی بلند (حداقل ۳۲ حرف). بعد از راه‌اندازی عوض نکنید.
     admin_phone / admin_password ← شماره و رمز ورود مدیر
     base_url                     ← https://bazarino-shop.ir
   پوشه‌ی storage باید قابل نوشتن باشد (معمولاً 755 کافی است؛ اگر آپلود عکس خطا داد 775).

۴) نسخه PHP
   cPanel > Select PHP Version: نسخه 8.1 (یا 8.0 / 7.4) را انتخاب کنید و در Extensions این‌ها فعال باشند:
   pdo, pdo_mysql, mysqlnd, mbstring, json, openssl

۵) SSL
   cPanel > SSL/TLS Status > Run AutoSSL برای bazarino-shop.ir
   وقتی گواهی فعال شد، در فایل .htaccess سه خط کامنت‌شده‌ی بخش «force https» را از حالت کامنت (#) دربیاورید.

۶) تست
   - https://bazarino-shop.ir/api?op=catalog   ← باید {"shops":[],"products":[]} نشان دهد.
   - https://bazarino-shop.ir/bazarino-control-8f3k2   ← ورود مدیر با شماره و رمز config.php
   - https://bazarino-shop.ir/sitemap.xml

ورود کاربران و پیامک:
   - برای ارسال خودکار، ابتدا اطلاعات پنل سرویس پیامک را بگیرید و در config.php وارد کنید.
   - اگر سرویس کاوه‌نگار است: sms_provider = kavenegar، مقدار sms_api_key و sms_template را تنظیم کنید.
     قالب پیامک باید متغیر token را در متن داشته باشد.
   - برای درگاه سازگار با API عمومی JSON: sms_provider = generic_json، مقدار sms_api_url و sms_api_key را تنظیم کنید.
     این حالت یک POST با JSON شامل to، message و sender و هدر Authorization: Bearer می‌فرستد؛ قرارداد دقیق ارائه‌دهنده باید با آن سازگار باشد.
   - اگر sms_provider خالی باشد، درخواست کد ثبت می‌شود اما پیامک خودکار ارسال نمی‌شود؛ تا زمان تنظیم درگاه، مسیر دستی مدیر باقی می‌ماند.
   - کد ۶ رقمی ۵ دقیقه اعتبار دارد؛ محدودیت ارسال مجدد و تعداد تلاش‌ها فعال است.

کاتالوگ نمایشی: فایل demo-catalog.js شامل ۵۰۰ فروشگاه و ۸ محصول برای هر فروشگاه است. این محصولات صرفاً نمایشی‌اند و امکان خرید ندارند؛ محصولات واقعی فروشندگان از دیتابیس می‌آیند.
موجودی: هنگام ثبت سفارش واقعی، موجودی هر محصول در همان تراکنش کم می‌شود و اگر موجودی کافی نباشد کل سفارش برگشت می‌خورد.

خطایابی: اگر خطای ۵۰۰ دیدید، فایل error_log داخل public_html (یا cPanel > Errors) علت را نشان می‌دهد.
نکته‌ی امنیتی: config.php را هرگز در جای عمومی منتشر نکنید.
