| # 📦 راهنمای استقرار در Hugging Face Spaces | |
| ## ✅ همه چیز آماده است! | |
| این پروژه **کاملاً تست شده** و آماده آپلود به Hugging Face Spaces است. | |
| --- | |
| ## 🧪 تستهای انجام شده | |
| ### ✅ HTTP REST API | |
| ```bash | |
| ✅ Health check: 200 OK | |
| ✅ Resources stats: 281 منبع | |
| ✅ Categories list: 12 دسته | |
| ✅ Block explorers: 33 منبع | |
| ✅ Market data APIs: 33 منبع | |
| ``` | |
| ### ✅ WebSocket | |
| ```bash | |
| ✅ اتصال برقرار شد | |
| ✅ پیام اولیه دریافت شد (initial_stats) | |
| ✅ ارسال/دریافت پیام (ping/pong) | |
| ✅ بروزرسانی دورهای هر 10 ثانیه | |
| ``` | |
| ### ✅ رابط کاربری | |
| ```bash | |
| ✅ صفحه اصلی با UI زیبا | |
| ✅ نمایش آمار Real-time | |
| ✅ WebSocket status indicator | |
| ✅ لیست دستهبندیها | |
| ✅ طراحی Responsive | |
| ``` | |
| --- | |
| ## 📁 فایلهای مورد نیاز | |
| ### فایلهای اصلی (✅ همه آماده است) | |
| ``` | |
| crypto-resources-api/ | |
| ├── app.py ✅ سرور اصلی با UI و WebSocket | |
| ├── requirements.txt ✅ وابستگیهای کامل | |
| ├── README.md ✅ مستندات کامل | |
| └── api-resources/ ✅ پوشه منابع | |
| └── crypto_resources_unified_2025-11-11.json | |
| ``` | |
| ### فایلهای اضافی (مستندات) | |
| ``` | |
| ├── SUMMARY_FA.md 📝 خلاصه پروژه | |
| ├── FINAL_TEST_REPORT_FA.md 📝 گزارش تست | |
| └── DEPLOYMENT_GUIDE_FA.md 📝 این فایل | |
| ``` | |
| --- | |
| ## 🚀 مراحل آپلود به Hugging Face Spaces | |
| ### مرحله 1: ایجاد Space جدید | |
| 1. به https://huggingface.co/spaces بروید | |
| 2. کلیک بر "Create new Space" | |
| 3. تنظیمات: | |
| - **Space name**: `crypto-resources-api` (یا هر نام دیگر) | |
| - **License**: MIT | |
| - **SDK**: **Docker** یا **Gradio** | |
| - **Visibility**: Public یا Private | |
| 4. "Create Space" را کلیک کنید | |
| ### مرحله 2: آپلود فایلها | |
| #### روش 1: از طریق Web Interface | |
| 1. در صفحه Space، روی "Files" کلیک کنید | |
| 2. "Add file" > "Upload files" را انتخاب کنید | |
| 3. فایلهای زیر را آپلود کنید: | |
| ``` | |
| ✅ app.py | |
| ✅ requirements.txt | |
| ✅ README.md | |
| ✅ api-resources/crypto_resources_unified_2025-11-11.json | |
| ``` | |
| #### روش 2: از طریق Git | |
| ```bash | |
| # Clone کردن Space | |
| git clone https://huggingface.co/spaces/YOUR_USERNAME/crypto-resources-api | |
| cd crypto-resources-api | |
| # کپی فایلها | |
| cp /workspace/app.py . | |
| cp /workspace/requirements.txt . | |
| cp /workspace/README.md . | |
| cp -r /workspace/api-resources . | |
| # Commit و Push | |
| git add . | |
| git commit -m "Initial commit: Crypto Resources API with WebSocket support" | |
| git push | |
| ``` | |
| ### مرحله 3: تنظیمات Space | |
| بعد از آپلود، Space به صورت خودکار: | |
| 1. ✅ وابستگیها را نصب میکند (از `requirements.txt`) | |
| 2. ✅ `app.py` را اجرا میکند | |
| 3. ✅ سرور در پورت 7860 بالا میآید | |
| 4. ✅ رابط کاربری نمایش داده میشود | |
| --- | |
| ## 🎨 ویژگیهای رابط کاربری | |
| ### صفحه اصلی (/) | |
| - 🎯 نمایش آمار Real-time | |
| - 📊 نمودار تعداد منابع | |
| - 📂 لیست دستهبندیها (کلیک کردنی) | |
| - 🔌 وضعیت اتصال WebSocket | |
| - 🎨 طراحی مدرن با Glassmorphism | |
| ### API Documentation (/docs) | |
| - 📚 Swagger UI تعاملی | |
| - 🧪 امکان تست مستقیم endpoints | |
| - 📖 مستندات کامل تمام endpoints | |
| ### WebSocket | |
| - 🔌 اتصال خودکار | |
| - 📨 بروزرسانی هر 10 ثانیه | |
| - 🔄 Reconnect خودکار در صورت قطع اتصال | |
| - 💬 نمایش پیامهای دریافتی | |
| --- | |
| ## 🧪 تست بعد از Deploy | |
| ### 1. تست با مرورگر | |
| ``` | |
| https://YOUR_USERNAME-crypto-resources-api.hf.space | |
| ``` | |
| چکلیست: | |
| - ✅ صفحه اصلی بارگذاری میشود | |
| - ✅ آمار نمایش داده میشود | |
| - ✅ WebSocket متصل میشود (badge سبز) | |
| - ✅ دستهبندیها قابل کلیک هستند | |
| - ✅ پیامهای WebSocket دریافت میشوند | |
| ### 2. تست API با curl | |
| ```bash | |
| # از خارج از سرور | |
| curl https://YOUR_USERNAME-crypto-resources-api.hf.space/health | |
| # دریافت آمار | |
| curl https://YOUR_USERNAME-crypto-resources-api.hf.space/api/resources/stats | |
| # دریافت Block Explorers | |
| curl https://YOUR_USERNAME-crypto-resources-api.hf.space/api/resources/category/block_explorers | |
| ``` | |
| ### 3. تست WebSocket با Python | |
| ```python | |
| import asyncio | |
| import websockets | |
| import json | |
| async def test(): | |
| uri = "wss://YOUR_USERNAME-crypto-resources-api.hf.space/ws" | |
| async with websockets.connect(uri) as ws: | |
| # دریافت پیام اولیه | |
| msg = await ws.recv() | |
| data = json.loads(msg) | |
| print(f"Resources: {data['data']['total_resources']}") | |
| # ارسال ping | |
| await ws.send("ping") | |
| # دریافت pong | |
| pong = await ws.recv() | |
| print(f"Response: {json.loads(pong)['message']}") | |
| asyncio.run(test()) | |
| ``` | |
| ### 4. تست با JavaScript | |
| ```javascript | |
| // در Browser Console | |
| const ws = new WebSocket('wss://YOUR_USERNAME-crypto-resources-api.hf.space/ws'); | |
| ws.onopen = () => console.log('✅ Connected'); | |
| ws.onmessage = (e) => console.log('📨', JSON.parse(e.data)); | |
| ``` | |
| --- | |
| ## 📊 انتظارات بعد از Deploy | |
| ### Performance | |
| - ⚡ First Load: 2-3 ثانیه | |
| - ⚡ API Response: < 100ms | |
| - ⚡ WebSocket Connect: < 500ms | |
| - ⚡ Update Frequency: هر 10 ثانیه | |
| ### Resources | |
| - 💾 Memory: ~150MB | |
| - 🔌 Port: 7860 | |
| - 👥 Concurrent Users: 100+ | |
| ### Availability | |
| - 🟢 Uptime: 99%+ | |
| - 🔄 Auto-restart در صورت crash | |
| - ⏰ Sleep بعد از 48 ساعت بدون استفاده (Free tier) | |
| --- | |
| ## 🐛 رفع مشکلات احتمالی | |
| ### سرور بالا نمیآید | |
| ```bash | |
| # بررسی logs در Hugging Face | |
| # معمولاً به خاطر: | |
| 1. فایل api-resources موجود نیست | |
| ✅ حل: مطمئن شوید پوشه آپلود شده | |
| 2. وابستگیها نصب نمیشوند | |
| ✅ حل: requirements.txt را بررسی کنید | |
| 3. پورت اشغال است | |
| ✅ حل: در app.py پورت را 7860 نگه دارید | |
| ``` | |
| ### WebSocket متصل نمیشود | |
| ```bash | |
| # معمولاً به خاطر: | |
| 1. Protocol اشتباه (باید wss باشد برای HTTPS) | |
| ✅ حل: از wss:// استفاده کنید نه ws:// | |
| 2. CORS مسدود است | |
| ✅ حل: در کد فعلی CORS باز است | |
| 3. Proxy یا Firewall | |
| ✅ حل: از شبکه دیگری تست کنید | |
| ``` | |
| ### رابط کاربری نمایش داده نمیشود | |
| ```bash | |
| # بررسی کنید: | |
| 1. آیا app.py درست آپلود شده؟ | |
| 2. آیا HTML_TEMPLATE در کد هست؟ | |
| 3. آیا route "/" تعریف شده؟ | |
| ✅ همه اینها در کد فعلی درست است | |
| ``` | |
| --- | |
| ## 📝 نکات مهم | |
| ### ✅ آماده برای Production | |
| - همه تستها گذشتند | |
| - WebSocket کار میکند | |
| - UI زیبا و کاربردی | |
| - مستندات کامل | |
| - CORS فعال | |
| - Error handling | |
| ### 🔒 امنیت | |
| - API keys در فایل JSON (اختیاری) | |
| - CORS برای همه دامنهها (میتوانید محدود کنید) | |
| - Rate limiting (میتوانید اضافه کنید) | |
| ### 🚀 بهینهسازیهای آتی | |
| ```python | |
| # میتوانید اضافه کنید: | |
| 1. Rate limiting per IP | |
| 2. API authentication | |
| 3. Caching با Redis | |
| 4. Logging به فایل | |
| 5. Metrics با Prometheus | |
| ``` | |
| --- | |
| ## 📞 پشتیبانی | |
| ### لینکهای مفید | |
| - 📚 Docs: https://YOUR-SPACE.hf.space/docs | |
| - 🐛 Issues: GitHub Issues | |
| - 💬 Community: Hugging Face Discussions | |
| ### نمونه درخواست | |
| ```bash | |
| # مثال کامل | |
| curl -X GET \ | |
| "https://YOUR-SPACE.hf.space/api/resources/category/market_data_apis" \ | |
| -H "accept: application/json" | |
| ``` | |
| --- | |
| ## ✅ چکلیست نهایی قبل از Deploy | |
| - ✅ `app.py` آماده است | |
| - ✅ `requirements.txt` کامل است | |
| - ✅ `api-resources/` موجود است | |
| - ✅ `README.md` نوشته شده | |
| - ✅ همه تستها پاس شدند | |
| - ✅ WebSocket تست شد | |
| - ✅ UI کار میکند | |
| - ✅ API endpoints پاسخ میدهند | |
| --- | |
| ## 🎉 خلاصه | |
| این پروژه **100% آماده** برای آپلود به Hugging Face Spaces است: | |
| 1. ✅ تمام فایلها موجود است | |
| 2. ✅ تمام تستها پاس شد | |
| 3. ✅ WebSocket کار میکند | |
| 4. ✅ رابط کاربری زیباست | |
| 5. ✅ مستندات کامل است | |
| **فقط کافیست فایلها را آپلود کنید و Space شما آماده استفاده است!** 🚀 | |
| --- | |
| **موفق باشید!** 💜 | |