72 lines
4.5 KiB
Markdown
72 lines
4.5 KiB
Markdown
# Slash.sa — منصة إدارة الأسطول واللوجستيات
|
|
|
|
منصة ويب متكاملة لإدارة عمليات الأسطول واللوجستيات، مبنية بلغة عربية أولًا (Arabic-first)
|
|
باتجاه RTL كامل، وموجهة للسوق السعودي. تشمل المنصة إدارة المركبات والسائقين والفروع
|
|
والطلبات والرحلات وسجل الصيانة، مع لوحات تحكم منفصلة حسب دور المستخدم (مشرف / عميل / مستخدم ميداني).
|
|
|
|
## المتطلبات الأساسية
|
|
|
|
- Node.js 20.9 أو أحدث
|
|
- npm (أو أي package manager متوافق)
|
|
|
|
## التقنيات المستخدمة
|
|
|
|
| الطبقة | التقنية |
|
|
| -------------------- | ------------------------------------------ |
|
|
| الإطار | Next.js 16 (App Router) |
|
|
| اللغة | TypeScript |
|
|
| التنسيق | Tailwind CSS v4 |
|
|
| النماذج والتحقق | react-hook-form + yup |
|
|
| الأيقونات | lucide-react (صفحات التسويق) / Tabler Icons Webfont (لوحة التحكم) |
|
|
| المصادقة | JWT + HttpOnly cookie + middleware للحماية |
|
|
|
|
## هيكل المشروع (مختصر)
|
|
app/
|
|
├── (صفحات تسويقية) home, features/app, how_work, prices, frequently_asked_questions
|
|
├── dashboard/ لوحة التحكم (محمية بواسطة middleware)
|
|
│ ├── cars, drivers, orders, trips, clients, branches, roles, audit, users
|
|
├── login, register صفحات المصادقة
|
|
├── api/proxy/[...path] بروكسي موحّد لكل طلبات الـ backend
|
|
└── components/layout Navbar, Sidebar, Topbar (تُستخدم عبر الصفحات يدويًا)
|
|
src/
|
|
├── Components/ مكوّنات لوحة التحكم (مقسّمة حسب الوحدة: Car, Driver, Order...)
|
|
├── hooks/ منطق جلب البيانات والطفرات (Create/Update/Delete) لكل وحدة
|
|
├── services/ طبقة استدعاء الـ API (كل وحدة لها service منفصل)
|
|
├── types/ تعريفات TypeScript لكل نموذج بيانات
|
|
├── validations/ مخططات yup للتحقق من صحة النماذج
|
|
└── lib/ دوال مساعدة (auth, session, formatters, order-status)
|
|
## التشغيل محليًا
|
|
|
|
```bash
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
افتح [http://localhost:3000](http://localhost:3000) في المتصفح.
|
|
|
|
## الأوامر المتاحة
|
|
|
|
| الأمر | الوصف |
|
|
| ---------------- | --------------------------------------- |
|
|
| `npm run dev` | تشغيل بيئة التطوير (Webpack) |
|
|
| `npm run build` | بناء نسخة الإنتاج |
|
|
| `npm run start` | تشغيل نسخة الإنتاج المبنية |
|
|
| `npm run lint` | فحص الكود بواسطة ESLint |
|
|
|
|
## ملاحظات النشر (Deployment)
|
|
|
|
- المنصة مبنية على Next.js App Router وتعمل على أي بيئة تدعم Node.js 20.9+ (مثل Vercel).
|
|
- كل طلبات الـ backend تمر عبر `app/api/proxy/[...path]/route.ts`، فتأكد من ضبط الـ backend base URL بشكل صحيح قبل النشر.
|
|
- التوثيق (Authentication) يعتمد على HttpOnly cookie تُضبط عبر `app/api/auth/set-cookie`، وتُمسح عبر `app/api/clear-cookie` — تأكد من تفعيل `Secure` في بيئة الإنتاج (يتم تلقائيًا حسب `NODE_ENV`).
|
|
- الحماية على مستوى الراوت تتم عبر `middleware.ts` — راجع الـ `matcher` فيه عند إضافة مسارات محمية جديدة.
|
|
|
|
## المساهمة (Contributing)
|
|
|
|
1. أنشئ فرعًا جديدًا من `main` باسم واضح للتغيير (مثال: `feature/car-maintenance-filters`).
|
|
2. اتبع نفس أسلوب الكود الموجود: RTL-first، CSS custom property tokens بدل الألوان الثابتة، وهيكلة hooks/services/types/validations لكل وحدة جديدة.
|
|
3. شغّل `npm run lint` قبل فتح Pull Request.
|
|
4. اكتب وصفًا واضحًا للتغيير وربطه بأي تذكرة (issue) ذات صلة.
|
|
|
|
## الترخيص
|
|
|
|
جميع الحقوق محفوظة © 2026 Slash.sa |