# 🚀 النشر على Streamlit Community Cloud (مجاني) التطبيق ينشر برابط عام. الملفات الكبيرة (النماذج + الـ embeddings) تُخزَّن على **Hugging Face Hub** (لأن GitHub المجاني يسمح بـ 1GB فقط)، والكود على **GitHub**، والتقييمات في **Supabase**. ``` GitHub (الكود) → Streamlit Cloud (يشغّل التطبيق) │ ├─ ينزّل النماذج/الـ embeddings من Hugging Face Hub └─ يحفظ التقييمات في Supabase ``` --- ## 1) رفع الملفات الكبيرة إلى Hugging Face Hub 1. أنشئي حساب على (مجاني). 2. أنشئي **Access Token**: الصورة الشخصية → Settings → Access Tokens → New token (نوع **Write**). انسخيه. 3. في الطرفية (من مجلد `reverse-dictionary/backend`): ```bash export HF_TOKEN=hf_xxxxxxxx # التوكن من الخطوة 2 export HF_DATA_REPO="USERNAME/reverse-dictionary-assets" # بدّلي USERNAME .venv/bin/python scripts/upload_assets.py ``` 4. بعد الرفع: افتحي المستودع على HF → **Settings** → اجعليه **Public**. > هذا يرفع ~1.7GB مرة واحدة. المستودع العام لا يحتاج توكن عند التنزيل. --- ## 2) إعداد قاعدة التقييمات (DATABASE_URL) أنشئي قاعدة على **SQLite Cloud** واحصلي على رابط الاتصال (يبدأ بـ `sqlitecloud://...?apikey=...`). الجداول تُنشأ تلقائيًا. (يدعم الكود أيضًا Supabase عبر رابط `postgresql://`.) --- ## 3) رفع الكود على GitHub من جذر المشروع (`semantic-search-system`): ```bash git add -A git commit -m "تجهيز للنشر على Streamlit Cloud" git branch -M main git remote add origin https://github.com/USERNAME/REPO.git # بدّلي git push -u origin main ``` > الملفات الكبيرة مُستثناة من Git (في `.gitignore`) — لا تُرفع على GitHub. --- ## 4) النشر على Streamlit Cloud 1. ادخلي وسجّلي دخول بحساب GitHub. 2. **Create app** → **Deploy a public app from GitHub**. 3. عبّئي: - **Repository:** مستودعك على GitHub. - **Branch:** `main`. - **Main file path:** `reverse-dictionary/frontend/streamlit_app.py` - **Advanced settings → Python version:** `3.11` 4. في **Advanced settings → Secrets**، الصقي: ```toml HF_DATA_REPO = "USERNAME/reverse-dictionary-assets" DATABASE_URL = "postgresql://postgres.xxxx:PASSWORD@...pooler.supabase.com:6543/postgres" ``` 5. **Deploy!** > أول تشغيل بطيء: يثبّت المكتبات ثم ينزّل ~1.7GB من HF Hub. الإقلاعات اللاحقة أسرع. --- ## 5) متابعة التقييمات من لوحة **Supabase → Table Editor → ratings** تشوفين كل التقييمات وتصدّرينها CSV. --- ## ⚠️ ملاحظات - **الذاكرة:** Streamlit Cloud المجاني محدود الذاكرة. خفّفنا الاستهلاك (نماذج مُكمَّمة + `mmap` للـ embeddings). لو ظهر خطأ ذاكرة (الرسالة "Oh no"/إعادة تشغيل متكررة)، الحل الأأمن هو **Hugging Face Spaces** (ذاكرته 16GB) بنفس هذي الملفات. - **عند تحديث الكود:** ادفعي على GitHub، و Streamlit Cloud يعيد النشر تلقائيًا. - **عند تحديث النماذج/الـ embeddings:** أعيدي تشغيل `upload_assets.py`، ثم أعيدي تشغيل التطبيق من لوحة Streamlit Cloud (Reboot) لإعادة التنزيل.