نظرة عامة على البنية
توثيق شامل لجميع الميزات والصفحات واستدعاءات 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 # بيئة التطوير
تعيين المنافذ
| التطبيق | منفذ التطوير | النطاق الإنتاجي |
|---|---|---|
| Customer | 3000 | shambus.com |
| Dashboard | 3001 | dashboard.shambus.com |
| Admin | 3002 | admin.shambus.com |
| Docs | 3003 | docs.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