StayEase هي منصة حجز فنادق فاخرة ومتكاملة تم بناؤها باستخدام تقنيات الويب الحديثة. تجمع بين تصميم Liquid Glassmorphism الفاخر وBackend قوي لتقديم تجربة استثنائية لكل من المسافرين وشركاء الفنادق.

تفاصيل العمل

# ? StayEase - منصة حجز الفنادق

## نظرة عامة على المشروع

**StayEase** هي منصة حجز فنادق فاخرة ومتكاملة (Full-stack) تم بناؤها باستخدام تقنيات الويب الحديثة. تجمع بين تصميم Liquid Glassmorphism الفاخر وخلفية برمجية (Backend) قوية لتقديم تجربة استثنائية لكل من المسافرين وشركاء الفنادق. المنصة مصممة للتعامل مع سير عمل الحجوزات المعقدة، ومعالجة المدفوعات، وإدارة الفنادق الشاملة.

---

## ? الميزات الأساسية

### **1. ميزات الضيوف**

* **تجربة حجز بديهية**: بحث سهل عن الفنادق واختيار الغرف مع فحص التوفر في الوقت الفعلي.

* **اختيار ذكي للتاريخ**: تقويم تفاعلي مع تحديثات فورية للتوفر وتسعير ديناميكي.

* **معالجة دفع آمنة**: عملية دفع سلسة مدعومة بـ Stripe مع التحقق عبر Webhook.

* **تقييمات ومراجعات الضيوف**: مراجعات موثقة للإقامة مع نظام ملاحظات شامل.

* **إدارة الحجوزات**: عرض وتعديل وإلغاء الحجوزات من لوحة تحكم الحساب.

* **نظام المفضلة**: حفظ الفنادق المفضلة للوصول السريع إليها.

* **التحقق من البريد الإلكتروني**: تسجيل آمن باستخدام Email verification tokens.

### **2. ميزات شركاء الفنادق**

* **لوحة تحكم الشريك**: مركز إدارة شامل لمالكي الفنادق.

* **إدارة الغرف**: محرر متقدم لأنواع الغرف، المرافق، التسعير، والصور.

* **التحكم في التوفر**: إدارة توفر الغرف في الوقت الفعلي مع قفل التواريخ.

* **نظرة عامة على الحجوزات**: تتبع جميع الحجوزات مع إدارة الحالة (مؤكد، ملغي، مكتمل، عدم حضور).

* **نظام تقديم طلبات الشركاء**: عملية انضمام مبسطة لشركاء الفنادق الجدد.

* **التسعير الديناميكي**: دعم استراتيجيات التسعير الموسمي والأساسي.

* **الوصول إلى التحليلات**: عرض مقاييس الحجز وبيانات الأداء.

### **3. ميزات المسؤول (Admin)**

* **إدارة المنصة**: لوحة تحكم كاملة لمشرفي المنصة.

* **مراجعة طلبات الفنادق**: الموافقة على طلبات شركاء الفنادق الجدد أو رفضها.

* **إدارة المستخدمين**: مراقبة أدوار المستخدمين، التحقق من الحسابات، وإدارة الصلاحيات.

### **4. منطق العمل (Business Logic)**

* **إدارة حالة الحجز**: تتبع شامل من "قيد الانتظار" ← "مؤكد" ← "مكتمل/ملغي/عدم حضور".

* **تتبع الضيوف**: نظام القائمة السوداء مع عدادات لإلغاء الحجز وعدم الحضور.

* **مزامنة التوفر**: منع الحجز الزائد (Overbooking) عبر تحديثات التوفر الذرية (Atomic updates).

* **أمن المدفوعات**: دمج Stripe المتوافق مع معايير PCI مع التحقق عبر Webhook.

* **إشعارات البريد الإلكتروني**: رسائل معاملات لتأكيد الحجز، الإلغاء، والتحديثات.

---

## ?️ البنية التقنية

### **مجموعة الواجهة الأمامية (Frontend Stack)**

* **Framework**: Next.js 15 (App Router) مع React 19.

* **Styling**: Tailwind CSS 4 مع مكونات Glassmorphism مخصصة.

* **Animations**: Framer Motion لانتقالات واجهة المستخدم السلسة.

* **Icons**: Lucide React لأيقونات متسقة.

* **Form Handling**: Zod للتحقق من المخططات (Schema validation) وسلامة الأنواع.

* **UI Components**: مكونات مخصصة مبنية على Radix UI (أزرار، حقول إدخال، تقويم، popover، شارات، بطاقات).

### **مجموعة الخلفية البرمجية (Backend Stack)**

* **Runtime**: Node.js مع Next.js Server Actions.

* **Authentication**: Auth.js v5 (NextAuth) مع مزود Google OAuth.

* **API Routes**: نهايات RESTful للمدفوعات، التوفر، الحجوزات، وعمليات الشركاء.

* **Server Actions**: طفرات (Mutations) آمنة من جهة الخادم للحجوزات والمراجعات وإجراءات المستخدمين.

* **Database ORM**: Prisma مع PostgreSQL.

### **قاعدة البيانات**

* **Provider**: PostgreSQL مع تجميع الاتصالات (Prisma Accelerate).

* **Models**:

* User/Profile (مع الأدوار وحالة التحقق).

* Hotel (مع علاقات المالك والتحقق).

* RoomType (مع تتبع التوفر).

* Booking (مع علاقات الدفع والمراجعة).

* Payment (ربط Stripe payment intent).

* Review (مراجعات الإقامة الموثقة).

* RoomAvailability (التوفر المعتمد على التاريخ مع القفل).

* Cancellation (تتبع الاسترداد).

* Favorite (نظام قائمة الرغبات).

* HotelApplication (انضمام الشركاء).

* Account/Session/VerificationToken (دمج Auth.js).

### **معالجة المدفوعات**

* **Gateway**: Stripe مع دمج Webhook.

* **Flow**: إنشاء Payment Intent ← التحصيل عند تأكيد الحجز ← التعامل مع الاسترداد.

* **Security**: تحقق آمن من Webhook مع التحقق من التوقيع.

### **التواصل عبر البريد الإلكتروني**

* **Service**: Nodemailer مع إعدادات SMTP.

* **Templates**: قوالب بريد إلكتروني للمعاملات للتأكيدات والإلغاءات والإشعارات.

* **Use Cases**: التحقق من البريد، تأكيد الحجز، إشعارات الإلغاء.

---

## ? نظام التحكم في الوصول ثلاثي الأدوار

يطبق StayEase نظاماً شاملاً للتحكم في الوصول القائم على الأدوار (RBAC) مع ثلاثة أدوار متميزة للمستخدمين:

### **الدور 1: العميل (Guest)**

**الهدف**: المستخدمون العاديون الذين يحجزون الفنادق ويقيمون فيها.

**الصلاحيات والوصول**:

* تصفح والبحث عن الفنادق المتاحة.

* عرض تفاصيل الفنادق، خيارات الغرف، والأسعار.

* الوصول إلى تدفق الحجز للفنادق المختارة.

* إنشاء وإدارة الحجوزات.

* عرض تاريخ الحجز وحالته.

* إدارة المفضلة.

* ترك مراجعات للإقامات المكتملة.

* الوصول إلى لوحة تحكم الحساب الشخصي عند `/account`.

### **الدور 2: مدير الفندق (Hotel Partner)**

**الهدف**: مالكو ومديرو الفنادق الذين يديرون العقارات على المنصة.

**الصلاحيات والوصول**:

* تقديم طلب شريك ليصبح مالك فندق.

* الوصول إلى لوحة تحكم الشريك الحصرية عند `/partner/dashboard`.

* إنشاء وإدارة فنادق متعددة.

* إضافة وتعديل وإزالة أنواع الغرف.

* إدارة مرافق الغرف واستراتيجيات التسعير.

* التحكم في توفر الغرف على أساس يومي.

* عرض جميع الحجوزات الواردة لفنادقهم.

* تتبع معلومات الدفع والاسترداد.

* مراقبة والرد على مراجعات الضيوف.

### **الدور 3: مدير المنصة (Platform Admin)**

**الهدف**: مشرفو النظام الذين يشرفون على المنصة بأكملها.

**الصلاحيات والوصول**:

* الوصول إلى لوحة تحكم الإدارة الشاملة عند `/admin`.

* مراجعة وقبول/رفض طلبات شركاء الفنادق.

* إدارة جميع حسابات المستخدمين وأدوارهم.

* مراقبة نشاط المنصة والمقاييس.

* التحقق من ملفات الفنادق وشرعيتها.

* التعامل مع النزاعات وشكاوى المستخدمين.

---

## ? تدفق الدفع

1. **بدء الحجز**: يختار المستخدم التواريخ والغرف.

2. **إنشاء نية الدفع**: ينشئ Stripe ملف PaymentIntent عند الدفع.

3. **تأكيد جهة العميل**: يتعامل Stripe.js مع تشفير البطاقة (Tokenization).

4. **تأكيد الخادم**: تحصيل الدفع عند تأكيد الحجز.

5. **التحقق عبر Webhook**: تأكيد حالة الدفع من خلال Stripe webhooks.

6. **التعامل مع الاسترداد**: الإلغاءات تؤدي إلى معالجة استرداد الأموال.

---

## ? ملامح مخطط قاعدة البيانات

### **نموذج المستخدم (Profiles Table)**

نموذج المستخدم هو المركز الأساسي للنظام ثلاثي الأدوار:

* **حقل الدور (Role)**: Enum يدعم ثلاث قيم (customer, hotel_admin, platform_admin).

* **التوثيق**: البريد الإلكتروني، كلمة المرور (المشفرة)، وحسابات OAuth اختيارية.

* **تتبع سلوك الضيوف**: عدادات لإلغاء الحجز وعدم الحضور، وعلامة القائمة السوداء.

* **العلاقات**: الحجوزات، الفنادق المملوكة، المراجعات، والمفصّلة.

### **نموذج الحجز (Booking Model)**

* توليد أرقام مرجعية للتتبع.

* إدارة الحالة (Pending, Confirmed, Cancelled, Completed, No_show).

---

## ? ملامح التصميم

* **Liquid Glassmorphism**: تأثيرات ضبابية (Backdrop blur) ممتازة مع تدرجات سلسة.

* **تصميم متجاوب**: نهج المحمول أولاً مع نقاط انكسار Tailwind CSS.

* **مكونات سهلة الوصول**: واجهة مستخدم متوافقة مع ARIA باستخدام Radix UI primitives.

* **رسوم متحركة سلسة**: Framer Motion لتأثيرات الانتقال.

---

## ? ملخص سير العمل

### سير حجز الضيف

1. البحث عن الفنادق حسب الموقع والتاريخ.

2. عرض الغرف المتاحة والأسعار.

3. إضافة الغرفة إلى العربة.

4. المتابعة للدفع (يتطلب تسجيل الدخول).

5. إدخال تفاصيل الضيف ومعلومات البطاقة.

6. تأكيد الحجز (تحصيل الدفع).

7. استلام بريد تأكيد.

### سير عمل شريك الفندق

1. تقديم طلب شريك.

2. انتظار موافقة المسؤول.

3. إنشاء ملف الفندق مع التفاصيل والصور.

4. إضافة أنواع الغرف مع المرافق والأسعار.

5. إدارة تقويم توفر الغرف.

6. تتبع المدفوعات والمراجعات.

---

## ? فلسفة البنية البرمجية

يتبع **StayEase** ممارسات التطوير الحديثة:

* **Server-First**: استخدام Server Actions للعمليات و API routes للـ webhooks.

* **Type Safety**: استخدام TypeScript من البداية للنهاية لضمان سلامة الكود.

* **الأداء**: Next.js 15 مع App Router لتوجيه مثالي.

* **الأمن**: NextAuth للتوثيق، والتحقق من webhooks للمدفوعات.

ملفات مرفقة

بطاقة العمل

اسم المستقل
عدد الإعجابات
0
عدد المشاهدات
6
تاريخ الإضافة
تاريخ الإنجاز
المهارات