尚未检测到更新。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 وجرّب الاستعادة فعليًا.