尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗منصة سعودية تساعد المستخدم على فهم موقفه النظامي وترتيب خطواته، عبر أدوات أسئلة وأجوبة مبنية على محركات قرار مُدارة ومراجَعة قانونيًا.
npm install
cp .env.example .env.local # ثم عدّل القيم
npm run dev
الموقع: http://localhost:3000 · لوحة الإدارة: http://localhost:3000/admin
| المتغيّر | الغرض |
|---|---|
ADMIN_PASSWORD | كلمة مرور لوحة الإدارة — غيّرها قبل النشر |
ADMIN_SESSION_SECRET | مفتاح توقيع جلسة الإدارة (نص عشوائي طويل) |
NEXT_PUBLIC_SITE_URL | عنوان الموقع |
لا توجد أي مفاتيح داخل كود الواجهة.
app/ الصفحات العامة + لوحة الإدارة + مسارات API
components/ مكوّنات الواجهة (بلا أي منطق قانوني)
lib/ store · engine (مشغّل القرار) · custody (وحدة الحضانة) · hijri · auth · analytics
types/ تعريفات كل الكيانات
data/ البيانات — منفصلة تمامًا عن الكود
engines/ محرك لكل ملف (أدوات شجرة الأسئلة)
engine-versions/ أرشيف الإصدارات السابقة
modules/ قواعد الوحدات البرمجية
الأسئلة والقواعد والنتائج والمصادر النظامية لا توجد داخل كود الواجهة إطلاقًا. كلها في data/engines/*.json. يمكن تعديل شجرة القرار أو إنشاء نسخة جديدة منها دون لمس تصميم الموقع.
عند الانتقال إلى قاعدة بيانات حقيقية، التغيير محصور في lib/store.ts وحده.
كل محرك يحمل: معرّفًا ثابتًا، اسمًا، مجالًا قانونيًا، أسئلة وخيارات، مسارًا تاليًا لكل إجابة، شروط ظهور، نتائج، أسباب النتيجة، الوقائع الناقصة، المصادر النظامية، تاريخ آخر مراجعة، اسم المراجع، رقم الإصدار، الحالة (مسودة/تحت المراجعة/منشور/موقوف)، مدة سريان الإصدار، وسجل تعديلات.
فحص السلامة: lib/engine.ts يتحقق قبل النشر من ترابط الشجرة — فروع تشير إلى عناصر غير موجودة، نتائج غير قابلة للوصول، نتائج بلا مصدر، مصادر غير متحقق منها، مراجعة قانونية ناقصة. النتائج تظهر في صفحة المحرك داخل لوحة الإدارة.
الإصدارات: تغيير رقم الإصدار يؤرشف الإصدار الحالي في data/engine-versions/ تلقائيًا ويضيف قيدًا في سجل التعديلات، فيبقى الرجوع ممكنًا.
engine-contract-type)يوجّه المستخدم إلى نوع مدة عقده، بثلاثة أنواع نتائج: محدد المدة · غير محدد المدة · تحتاج مراجعة محامٍ.
غير السعودي (م.37): العقد يجب أن يكون مكتوبًا ومحدد المدة.
السعودي (م.55):
«غير متأكد» في أي سؤال → مراجعة محامٍ، ولا يُصدر الكاشف نتيجة عندئذٍ.
المادة 77 مرفقة مع نتائج التكييف: التعويض في غير محدد المدة أجر 15 يومًا عن كل سنة خدمة، وفي محدد المدة أجر المدة الباقية، وبحد أدنى أجر شهرين.
المحرك بحالة مسودة، ويظهر للمستخدم بتنبيه واضح.
مؤسسة قانونية هادئة: مساحات واسعة، حبر كحلي، ولون تمييز واحد هو الذهبي. الألوان التسعة والخطوط معرّفة في مكان واحد: app/globals.css (--bg --surface --ink --ink-2 --gold --gold-soft --text --muted --line)، وسلالم Tailwind (brand-* gold-* slate-*) موجّهة إليها، فيتغيّر الموقع كله من ذلك الملف. ألوان الحالة (أخضر/أصفر/أحمر) محصورة في نتائج الكواشف لأنها تحمل معنى قانونيًا.
الخط: IBM Plex Sans Arabic للواجهة، وNoto Kufi Arabic لاسم المنصة بجانب الشعار.
الشعار: درع ذهبي بداخله ميزان تمسك عموده قبضة — المستخدم يمسك ميزان العدل بيده. يُعرض على خلفية الحبر (الرأس والتذييل). المصادر في brand/ (الأصل في brand/original، والمشتقات في brand/option-3)، وما يستخدمه الموقع في public/brand وapp/icon.png. المكوّن: components/Logo.tsx.
الخطاب: يُخاطَب الزائر بصيغة المذكّر دائمًا. أما مطابقة التذكير والتأنيث داخل النتائج (الأم/الجدة) فتتبع القاعدة النحوية.
كل أداة في المنصة تجيب عن سؤال واحد محدد وتوجّه المستخدم إلى موقفه النظامي مع مستنده — لا «موجّه مسار» يسرد الخيارات دون أن يصل إلى شيء. وإذا لم تكفِ المعطيات فالمخرج الصريح هو «تحتاج مراجعة محامٍ»، لا نتيجة مظنونة.
لكن المنصة لا تحكم ولا تُصدر قرارًا. النتيجة استرشادية دائمًا: تبيّن ما يقضي به النظام في الغالب بناءً على ما أدخله المستخدم، وللقضاء أن يخالفها. ولذلك يُمنع في نصوص الواجهة استعمال ألفاظ الحسم والقطع («تحسم»، «نتيجة قاطعة»، «المستحق للحضانة» مجردة)، ويُستعمل بدلها: يوجّهك، استرشادية، غالبًا، مع التذكير بأنها لا تُغني عن استشارة محامٍ مرخّص.
kind: "module")بعض الأدوات لا تكفيها شجرة أسئلة خطية: تحتاج حسابات، أو مخرجات متعددة، أو مصفوفة مرشّحين. هذه تُبنى كوحدة لها كود مخصّص، مع بقاء نصوصها وحدودها ومواد استنادها بيانات في data/modules/.
custody-checker)يحدّد المستحق للحضانة لكل محضون على حدة، وفق نظام الأحوال الشخصية (المواد 124–135):
استثناء مصلحة المحضون: سببان يجوز للمحكمة استثناؤهما — زواج الحاضنة (126/1) والسكوت عن المطالبة (128/3) — ويظهران للمستخدم موسومين بذلك.
تنبيه للمطوّر: أحكام الحضانة موزّعة بين النظام واللائحة التنفيذية. لا يكفي الرجوع إلى النظام وحده — فقاعدة العامين ليست فيه بل في اللائحة.
«غير متأكد» لا تُرجَّح ضد صاحبها، بل تُسجَّل كنقطة تحتاج تحققًا وتُرفع راية مراجعة محامٍ.
الأعمار تُحسب بالسنوات الهجرية (تقويم أم القرى) في lib/hijri.ts.
الوحدة بحالة مسودة بانتظار اعتماد المراجع القانوني. تُدار حوكمتها من /admin/engines.
/api/track يقبل أحداثًا من قوائم مغلقة فقط (lib/metrics-schema.ts)، فلا يمكن تسريب نص حر أو إجابة./api/referral يتجاهل sharedSummary عمدًا — المنصة لا تنقل ملخص القضية.دالة واحدة في المتصفح track(event, props) (lib/track.ts) ترسل إلى /api/track، والخادم يزيد عدّاد اليوم في جدول واحد:
metrics_daily (date, event, props_json, count) -- المفتاح: (date, event, props_json)
lib/metrics-schema.ts. أي قيمة خارج القوائم ترفض الحدث كله. لإضافة حدث جديد يُضاف هناك أولًا.data/metrics.json بديلًا محليًا غير مرفوع.عدّاد الاستخدام العام «استُخدمت X مرة» على بطاقة كل أداة وصفحتها: يُحتسب الاستخدام مرة لكل تبويب متصفح (بدء الكاشف الداخلي، أو فتح الخدمة الخارجية)، فتحديث الصفحة لا يزيده. يبدأ من صفر فعليًا ولا يوجد حقل لإدخال رقم. لا يظهر قبل الحد الأدنى (افتراضيًا 20، يُغيَّر من تبويب «الاستخدام») ويمكن إخفاؤه لكل أداة. القراءة العامة: /api/tools/{slug}/uses (مخزّنة مؤقتًا 10 دقائق).
الاختبار: node scripts/metrics-privacy.test.mjs للمخطط، ومع عنوان خادم محلي للاختبار الحي (حمولات خبيثة، كوكي وعنوان مزروعان، تزامن، ثم فحص كل صف مخزَّن).
ثلاثة أنواع منفصلة: google / lawyer / sponsor. كل إعلان يحمل علامة «إعلان» أو «محتوى مدفوع» ظاهرة، ومعزول بصريًا.
قاعدة مفروضة في الكود: إعلانات Google محجوبة في أي أداة allowGoogleAds = false (الحضانة وفسخ النكاح مثلًا) حتى لو أُضيف الإعلان من اللوحة. صفحة النتيجة تبقى نظيفة.
المحامي المعلن (sponsored) والترشيح غير المدفوع (recommended) مميّزان بشارتين مختلفتين دائمًا.
علاقة متعدد-إلى-متعدد عبر lawyer-assignments: المحامي الواحد بعدة أدوات، والأداة الواحدة بعدة محامين، مع تخصيص بحسب النتيجة والمنطقة والمدينة ونوع القضية، ومدة إعلانية، وأولوية ظهور، وإيقاف دون حذف البيانات.
X-Robots-Tag).audit-log.dangerouslySetInnerHTML — لا مجال لحقن HTML من المقالات.http/https — يمنع javascript: وdata:.X-Frame-Options وX-Content-Type-Options وReferrer-Policy.ADMIN_PASSWORD وADMIN_SESSION_SECRET إلى قيم قوية.AdminUser).data وجرّب الاستعادة فعليًا.