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

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

توثيق شامل لجميع الميزات والصفحات واستدعاءات 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