Netnyahoo
Real Chromium for the Mac, free and open source: Arc's sidebar and Dia's polish, with no account. Immune to ads, trackers and prosecution.
كواشف نظامية سعودية: اعرف مستحق الحضانة ونوع مدة عقدك، مع المادة النظامية التي بُنيت عليها النتيجة.
Translation pending
OtherTypeScript · JavaScriptGitHub @yasir2002011-artOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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 وجرّب الاستعادة فعليًا.