إنتقل إلى المحتوى الرئيسي

نظرة عامة على البنية

توثيق شامل لجميع الميزات والصفحات واستدعاءات API والخدمات وتفاعلات قاعدة البيانات.


نظرة عامة على البنية​

شام باص يستخدم Turborepo monorepo مع تطبيقات Next.js منفصلة لكل بوابة وحزم مشتركة للوظائف العامة.

shambus/
├── apps/
│ ├── customer/ # بوابة العميل (Port 3000) - shambus.com
│ ├── dashboard/ # لوحة الشركات (Port 3001) - dashboard.shambus.com
│ ├── admin/ # لوحة الإدارة (Port 3002) - admin.shambus.com
│ ├── docs/ # التوثيق (Port 3003) - docs.shambus.com
│ ├── coming-soon/ # صفحة ثابتة لبعض سيناريوهات النشر
│ └── mobile/
│ ├── customer/ # تطبيق Flutter للركاب (iOS/Android/Web)
│ └── driver/ # تطبيق Flutter للسائق (iOS/Android/Web)
│
├── packages/
│ ├── ui/ # مكونات shadcn مشتركة (29 مكون)
│ ├── types/ # أنواع TypeScript
│ ├── services/ # خدمات الأعمال (14 ملف)
│ ├── database/ # عميل Supabase
│ ├── auth/ # أدوات المصادقة
│ ├── config/ # ثوابت مشتركة
│ ├── utils/ # أدوات التاريخ/التنسيق
│ ├── shared/ # ثوابت متعددة المنصات
│ ├── logger/ # أدوات السجلات
│ └── encryption/ # تشفير البيانات الحساسة
│
├── infrastructure/
│ ├── docker/ # إعدادات Docker
│ └── supabase/ # ترحيلات PostgreSQL
│
├── tests/
│ ├── e2e/ # اختبارات Playwright عبر التطبيقات
│ └── integration/ # اختبارات تكامل على مستوى النظام
│
├── turbo.json # خط أنابيب Turborepo
├── pnpm-workspace.yaml # تعريف مساحة العمل
└── docker-compose.yml # بيئة التطوير

تعيين المنافذ​

التطبيقمنفذ التطويرالنطاق الإنتاجي
Customer3000shambus.com
Dashboard3001dashboard.shambus.com
Admin3002admin.shambus.com
Docs3003docs.shambus.com

تطبيق الموبايل (Flutter)​

الشاشات الرئيسية​

SearchScreen​

  • الملف: apps/mobile/customer/lib/features/search/presentation/screens/search_screen.dart
  • المسار: /home
  • الخدمات: SupabaseService.getCities(), SearchHistoryService, FavoriteRoutesService
  • استدعاءات API: GET /cities

TripResultsScreen​

  • الملف: apps/mobile/customer/lib/features/trips/presentation/screens/trip_results_screen.dart
  • المسار: /trips
  • الخدمات: SupabaseService.searchTrips()
  • استدعاءات API: GET /api/trips
  • الميزات: التنقل بالتاريخ، الفلترة، الترتيب

SeatSelectionScreen​

  • الملف: apps/mobile/customer/lib/features/booking/presentation/screens/seat_selection_screen.dart
  • المسار: /seat-selection/:tripId
  • استدعاءات API: GET /trips/:tripId, GET /bookings?trip_id=:tripId
  • الميزات: مقاعد حسب الجنس، اختيار حتى 10 مقاعد

BookingConfirmationScreen​

  • الملف: apps/mobile/customer/lib/features/booking/presentation/screens/booking_confirmation_screen.dart
  • المسار: /booking/confirmation/:bookingCode
  • الميزات: عرض QR، مؤقت العد التنازلي، مشاركة واتساب

بوابة العميل (Web)​

الموقع: apps/customer/ المنفذ: 3000 النطاق: shambus.com

الصفحات​

الصفحةالمسارالوصف
الرئيسية/صفحة هبوط تسويقية مع بحث سريع وأقسام المنتج
تسجيل الدخول/auth/loginدخول OTP
البحث/tripsنتائج البحث
تفاصيل الرحلة/trips/[id]تفاصيل + مقاعد
الحجز/book/[tripId]إتمام الحجز
حجوزاتي/bookingsقائمة الحجوزات
تفاصيل الحجز/bookings/[id]تفاصيل + QR

لوحة الشركات (Dashboard)​

الموقع: apps/dashboard/ المنفذ: 3001 النطاق: dashboard.shambus.com

الصفحات​

الصفحةالمسارالوصف
الرئيسية/إحصائيات ونظرة عامة
الحجوزات/bookingsإدارة الحجوزات
الرحلات/tripsإدارة الرحلات
الباصات/busesإدارة الأسطول
التحليلات/analyticsتقارير الأداء
الإعدادات/settingsإعدادات الشركة

لوحة الإدارة (Admin)​

الموقع: apps/admin/ المنفذ: 3002 النطاق: admin.shambus.com

الصفحات​

الصفحةالمسارالوصف
الرئيسية/لوحة الإدارة
الشركات/companiesإدارة الشركات
التذاكر/ticketsدعم العملاء
التحليلات/analyticsإحصائيات المنصة
سجل التدقيق/audit-logسجل الإجراءات

الحزم المشتركة​

الحزمةالاستخدام
@shambus/uiمكونات UI (29 مكون)
@shambus/typesأنواع TypeScript
@shambus/servicesخدمات الأعمال
@shambus/databaseعميل Supabase
@shambus/authأدوات المصادقة
@shambus/utilsأدوات مساعدة

مخطط قاعدة البيانات​

الجداول الأساسية​

الجدولالوظيفة
passengersبيانات العملاء
companiesشركات النقل
citiesالمدن (21 مدينة)
routesالمسارات
busesالباصات
tripsالرحلات
bookingsالحجوزات

جداول الدعم​

الجدولالوظيفة
support_ticketsتذاكر الدعم
ticket_messagesالرسائل
trip_feedbackالتقييمات

تدفقات المصادقة​

تدفق OTP للعملاء​

1. إدخال الهاتف → POST /api/auth/customer/send-otp
2. تخزين OTP (صلاحية 5 دقائق)
3. إدخال OTP → POST /api/auth/customer/verify-otp
4. التحقق + إنشاء/تحديث الراكب
5. إنشاء جلسة وإرجاع token

تدفق مصادقة الشركات​

1. البريد/كلمة المرور → Supabase auth
2. التحقق من company_users
3. تعيين session cookie
4. تحميل بيانات الشركة

خرائط التنقل​

تطبيق الموبايل​

SearchScreen (/)
├── TripResultsScreen (/trips)
│ └── TripDetailsScreen (/trip/:id)
│ └── SeatSelectionScreen (/seat-selection/:id)
│ └── BookingScreen (/booking/:id)
│ └── BookingConfirmationScreen

MyBookingsScreen (/my-bookings)
SupportScreen (/support)
ProfileScreen (/profile)

بوابة العميل​

/ (الهبوط + البحث السريع + أقسام التعريف)
├── /trips (البحث)
│ └── /trips/[id] (تفاصيل)
│ └── /book/[tripId] (الحجز)
├── /bookings (حجوزاتي)
│ └── /bookings/[id] (تفاصيل)
└── /customer-auth (المصادقة)

آخر تحديث: يناير 2026