لحظة الحقيقة في أي نظام حجز ليست حين يعمل، بل حين يضغط شخصان على «احجز» للغرفة نفسها في الثانية نفسها، أو حين ينجح الدفع ويسقط الخادم قبل أن تُحفظ الفاتورة.
TravelEase واجهة برمجية (API) كاملة لحجز الفنادق، بنيتها وحدي على المعمارية النظيفة (Clean Architecture) — وأعرضها هنا لأنها العمل الوحيد لديّ الذي راجعه مهندسان كبيران من خارجي، سطراً بسطر، وأعطياه تقييماً مكتوباً.
━━ مراجعة مستقلة، لا شهادة من صاحبها ━━
خضع المشروع لمراجعة كود من مهندسَين كبيرين في شركة Foothill Technology Solutions:
• 5 / 5 — التوثيق، وترقيم الصفحات، وسجلات النظام.
• 4 / 5 — تصميم REST، ونظافة الكود، واختبارات الوحدة، وتصميم قاعدة البيانات، ومعالجة الأخطاء.
• من نص التقييم: "Overall, this is a solid project with good engineering practices. The RESTful design is excellent."
• وأشادا تحديداً بتطبيق CQRS ومبادئ SOLID ونمط المستودع العام.
ملف التقييم الأصلي مرفق في المعرض للاطلاع عليه كاملاً.
━━ ما يفعله النظام ━━
• بحث عن الفنادق بالمدينة والتقييم وسعة الغرفة وتواريخ الدخول والخروج.
• إدارة كاملة للمدن والفنادق والغرف وأنواعها ومرافقها والخصومات.
• حجز مع منع الحجز المزدوج: الغرفة المحجوزة في مدى تاريخي لا تُحجز مرتين.
• دفع عبر Stripe، ثم فاتورة PDF مُولَّدة تُرسل إلى بريد الضيف عبر SendGrid.
• تقييمات للفنادق، وصور مرفوعة إلى Cloudinary لا إلى قرص الخادم.
• مصادقة بـ JWT وتشفير كلمات المرور بـ Argon2، مع صلاحيات ملكية هرمية: من يملك الفندق يديره، ولا يديره غيره.
━━ لماذا هذه البنية ━━
الشيفرة مقسَّمة إلى 11 وحدة عمل مستقلة (فنادق، غرف، حجوزات، مدفوعات، تقييمات…)، وكل وحدة مقسَّمة داخلياً إلى أوامر واستعلامات ومعالِجات وعقود بيانات ومدقّقات.
النتيجة: 54 معالِجاً، كل واحد منها يفعل شيئاً واحداً — «أنشئ فندقاً»، «ابحث عن غرف متاحة». وحين يصلك بلاغ عن خلل في الخصومات تفتح ملفاً واحداً، لا صنفاً بألفي سطر يخدم عشرين عملية.
هذا ما يجعل المشروع قابلاً للتسليم إلى مطوّر آخر بلا شرح طويل — وهو ما لاحظه المراجعان.
━━ الجودة ━━
• 207 اختباراً آلياً موزّعة على 75 ملفاً، تغطي المعالِجات والمدقّقات ومسارات الحجز والدفع.
• 13 متحكّماً بإصدارات مرقّمة (API Versioning)، فلا يكسر تعديلٌ لاحقٌ عميلاً قديماً.
• ترقيم صفحات حقيقي مع ترويسة X-Pagination — نال 5/5 في المراجعة.
• تسجيل منظّم بـ Serilog لكل طلب وخطأ — نال 5/5 كذلك.
• تحقّق من المدخلات بـ FluentValidation قبل أن تصل إلى منطق العمل.
• توثيق تفاعلي كامل عبر Swagger، يجرّب منه أي مطوّر كل نقطة نهاية بلا كتابة سطر.
━━ التقنيات ━━
C# · ASP.NET Core 8 · Entity Framework Core · SQL Server · MediatR · AutoMapper · FluentValidation · Serilog · Stripe · SendGrid · Cloudinary · JWT · Argon2 · xUnit · Moq · Docker · Swagger
━━ النشر ━━
مُهيّأ للعمل داخل حاويات Docker، فيُشغَّل بأمر واحد على أي خادم بلا إعداد يدوي.