# دليل رفع Smart Pharmacy Hub على موقع رئيسي وربطه بقواعد البيانات

هذا الدليل يشرح طريقة نشر المشروع على استضافة أو خادم رئيسي وربطه بقواعد البيانات.

## 1. محتويات المشروع

```text
web/
```

واجهة الموقع الحالية. يمكن رفعها كواجهة Static على أي استضافة تدعم HTML/CSS/JavaScript.

```text
backend/
```

خادم API باستخدام NestJS. هذا هو الجزء الذي يربط الواجهة بقواعد البيانات.

```text
database/
```

إعداد PostgreSQL وRedis وOpenSearch عبر Docker.

```text
mobile/android
mobile/apple
```

مجلدات منفصلة لتخطيط تطبيق Android وتطبيق Apple/iOS.

## 2. نشر واجهة الويب

إذا كانت الاستضافة عادية مثل cPanel أو Plesk:

1. افتح مجلد `web`.
2. ارفع الملفات التالية إلى `public_html` أو مجلد الموقع الرئيسي:

```text
index.html
server.js
```

ملاحظة: `server.js` مفيد للتشغيل المحلي أو على خادم Node.js. في الاستضافات الثابتة يكفي رفع `index.html`.

## 3. نشر Backend على خادم Node.js

على الخادم:

```bash
cd backend
npm install
npm run build
npm run start
```

يفضل في الإنتاج تشغيله عبر PM2:

```bash
npm install -g pm2
pm2 start dist/main.js --name smart-pharmacy-api
pm2 save
```

## 4. ملف البيئة

انسخ:

```text
backend/.env.example
```

إلى:

```text
backend/.env
```

ثم عدل القيم:

```env
PORT=3000
JWT_SECRET=replace_with_strong_secret
DATABASE_URL=postgresql://USER:PASSWORD@HOST:5432/smart_pharmacy_hub
REDIS_URL=redis://HOST:6379
OPENSEARCH_URL=http://HOST:9200
```

## 5. تشغيل قواعد البيانات

على خادم يدعم Docker:

```bash
cd database
docker compose up -d
```

سيتم إنشاء:

- PostgreSQL
- Redis
- OpenSearch

## 6. ربط الواجهة بالـ API

الواجهة الحالية تعمل كنسخة Frontend تجريبية مستقلة. عند تحويلها إلى إنتاج كامل، اجعل طلبات الواجهة تتجه إلى:

```text
https://api.your-domain.com/v1
```

وفي التطوير:

```text
http://localhost:3000/v1
```

## 7. إعداد الدومين

اقتراح تقسيم الدومينات:

```text
https://your-domain.com
```

واجهة المستخدم.

```text
https://api.your-domain.com
```

خادم API.

```text
https://admin.your-domain.com
```

لوحة الإدارة إذا تم فصلها لاحقا.

## 8. ملاحظات أمان قبل الإنتاج

- غيّر `JWT_SECRET`.
- غيّر كلمة مرور PostgreSQL.
- لا ترفع ملف `.env` إلى GitHub.
- فعّل HTTPS.
- فعّل النسخ الاحتياطي اليومي.
- فعّل صلاحيات المستخدمين حسب الدور.
- لا تستخدم بيانات المرضى الحقيقية إلا بعد تطبيق التشفير وسياسات الخصوصية.

## 9. فحص سريع بعد الرفع

افتح:

```text
https://your-domain.com
```

ثم تحقق من:

- تسجيل الدخول.
- تبديل اللغة عربي/إنجليزي.
- ملف المريض.
- إعادة صرف الدواء.
- التحاليل والأشعة.
- التأمين.
- مركز التنبيهات.

ثم افتح:

```text
https://api.your-domain.com/v1/auth/me
```

للتأكد من أن API يعمل.
