hollow-flutter هو تطبيق متكامل يُبنى من الصفر لإدارة «مركز السنة للعلوم الشرعية وتأهيل الدعاة» في عتق – شبوة. يهدف التطبيق إلى تنظيم العمل التعليمي في المركز عبر إدارة المعلمين والطلاب والدروس اليومية والمتون والأوراد القرآنية والتقارير، مع فصل واضح للصلاحيات بين المدير والمعلم والمشرف.
الجمهور المستهدف: المدير المسؤول عن إدارة المركز وحساباته، والمعلمون الذين يديرون الطلاب ويسجّلون الدروس والحضور، والمشرفون من المعلمين الذين يتابعون سجلات المتون والأوراد ويسجّلون الأعمال نيابة عن المعلمين.
النية الجوهرية للمنتج: أن يكون التطبيق سجلًا رقميًا دقيقًا ومنظمًا للعمل التعليمي في مركز شرعي، بواجهة عربية كاملة باتجاه RTL، وهوية بصرية هادئة (أخضر داكن ولمسات ذهبية)، مع الاعتماد على عدد الصفحات المسجلة فعليًا كمقياس وحيد لتقدم الورد القرآني.
التطبيق مبني بـ Flutter وDart، ويعمل على Android وFlutter Web. يستخدم Firebase Authentication لتسجيل الدخول، وCloud Firestore لتخزين البيانات، وProvider لإدارة الحالة، وSharedPreferences للإعدادات المحلية، وfl_chart للرسوم البيانية.
الأدوار الحالية:
المسارات التعليمية الخمسة: مفاتيح الطلب، معارج التحصيل – المستوى الأول، معارج التحصيل – المستوى الثاني، معارج التحصيل – المستوى الثالث، القرآن الكريم.
الاستثناءات الضيقة: لا تُستخدم صور محمية أو صور خارجية غير مرخصة، ولا تُثبَّت أسماء أشخاص في الواجهة، ولا تُخزَّن كلمات المرور كنص صريح، ولا تُوضع مفاتيح أو أسرار Firebase في الشيفرة المنشورة، ولا يُنفَّذ نشر فعلي أو رفع إلى مستودع بعيد دون إذن صريح.
التطبيق مملوك بالكامل للمركز، ويُبنى من الصفر دون الاعتماد على أي شيفرة سابقة. الهوية مملوكة للتطبيق عبر Firebase Authentication، حيث يسجّل المدير والمعلم والمشرف الدخول بحسابات أنشأها المدير مسبقًا. لا يوجد تسجيل ذاتي عام؛ فالحسابات تُنشأ أو تُدعى من قبل المدير قبل أول استخدام.
حدود التسليم الحالية: تشمل جميع الوظائف المذكورة في هذا المستند: إدارة الحسابات، إدارة الطلاب، تسجيل الدروس والحضور، تسجيل المتون والأوراد، التقارير والرسوم البيانية، المسارات التعليمية الخمسة، وقواعد Firestore المحدودة الصلاحيات.
حدود مستقبلية: لا توجد متطلبات مستقبلية صريحة في المصدر. أي توسعات مستقبلية (مثل إشعارات، أو تطبيق iOS، أو تكامل مع أنظمة خارجية) تبقى خارج نطاق هذا المستند حتى يطلبها المستخدم صراحة.
نقطة إعداد Firebase: إذا تعذّر إعداد Firebase دون بيانات تخص المالك، يُنشأ نقطة إعداد واضحة تشرح بدقة القيم المطلوبة (مثل apiKey, projectId, appId)، ولا يُدَّعى أن الاتصال يعمل قبل اختباره.
لا ينطبق — لم يُقدَّم أي توجيه مرجعي من نوع content_source.
As a مدير المركز I should أن يكون لدي تطبيق متكامل مبني من الصفر لإدارة المركز so that أتمكن من إدارة المعلمين والطلاب والدروس والمتون والأوراد القرآنية والتقارير.
As a مطوّر I should أن أبني المشروع من الصفر دون فحص مستودع موجود أو الاعتماد على شيفرة سابقة so that يكون الكود نظيفًا ومملوكًا بالكامل للمركز.
As a مطوّر I should أن أستخدم Flutter وDart وFirebase Authentication وCloud Firestore وProvider وSharedPreferences وfl_chart so that يلبي التطبيق المتطلبات التقنية.
As a مستخدم I should أن أرى واجهة عربية بالكامل باتجاه RTL so that تكون تجربة الاستخدام طبيعية بالعربية.
As a مستخدم I should أن أرى تصميمًا متجاوبًا للهاتف والويب مع دعم الوضعين الفاتح والداكن so that أستخدم التطبيق على أي جهاز وبأي إضاءة.
As a مستخدم I should أن أرى هوية بصرية هادئة (أخضر داكن ولمسات ذهبية) وخط عربي واضح مثل IBM Plex Sans Arabic so that تناسب الواجهة مركزًا شرعيًا.
As a مستخدم I should أن أرى شاشة دخول ولوحات رئيسية وقوائم ونماذج إدخال وتقارير so that أتمكن من إنجاز مهامي.
As a مستخدم I should أن أرى حالات التحميل والبيانات الفارغة والأخطاء وانقطاع الإنترنت برسائل واضحة so that أفهم ما يحدث وأتخذ الإجراء المناسب.
As a مستخدم I should أن أرى شعارًا مؤقتًا بسيطًا قابلًا للاستبدال so that لا نستخدم صورًا محمية أو غير مرخصة.
As a مستخدم I should أن أرى أسماء المستخدمين ديناميكية من بيانات Firestore so that لا تُثبَّت أسماء أشخاص في الواجهة.
As a مدير I should أن أنشئ حسابات المعلمين وأعدّلها وأعطّلها وأحذفها so that أدير المعلمين في المركز.
As a مدير I should أن أعيّن معلمًا مسؤولًا عن المتون والأوراد القرآنية so that يكون هناك مشرف مسؤول.
As a مدير I should أن أعيد تعيين كلمات مرور المعلمين بأمان so that يستعيد المعلمون وصولهم.
As a مدير I should أن أستعرض المعلمين والطلاب والمستويات والسجلات so that أتابع حالة المركز.
As a مدير I should أن أعرض تقارير شاملة حسب المعلم والطالب والمستوى والتاريخ so that أحلّل أداء المركز.
As a معلم I should أن أدير الطلاب التابعين لي so that أنظّم تعليمهم.
As a معلم I should أن أسجّل الدروس اليومية وأربطها بالطلاب والمستوى والتاريخ so that يكون هناك سجل دقيق.
As a معلم I should أن أسجّل الحضور والغياب so that أتابع انتظام الطلاب.
As a معلم I should أن أستعرض سجل الدروس والتقارير الخاصة بطلابي so that أتابع تقدمهم.
As a معلم مخوّل I should أن أسجّل المتون والأوراد so that أوثّق إنجاز الطلاب.
As a مشرف I should أن أرى واجهة للوصول إلى قائمة المعلمين والطلاب so that أتابع السجلات.
As a مشرف I should أن أتابع سجلات المعلمين والطلاب ضمن الصلاحيات المحددة لي so that أراقب الجودة.
As a مشرف I should أن أسجّل عملًا نيابة عن معلم مع حفظ اسم المعلم المقصود وإظهار ذلك بوضوح so that يكون السجل دقيقًا.
As a مستخدم I should أن أرى المسارات الخمسة (مفاتيح الطلب، معارج التحصيل ١/٢/٣، القرآن الكريم) so that أتنقل بينها.
As a مستخدم I should أن أرى لكل مسار طلابه وسجلاته وتقاريره مع إمكانية الانتقال إلى تفاصيله so that أتابع كل مسار.
As a مستخدم I should أن أسجّل الدخول بأمان وأن تُستعاد جلستي so that لا أحتاج لتسجيل الدخول في كل مرة.
As a مستخدم I should أن أوجَّه بعد تسجيل الدخول إلى الواجهة المناسبة لدوري so that أصل بسرعة لما يخصني.
As a مدير أو معلم I should أن أدير ملفات المعلمين والطلاب so that تكون البيانات محدّثة.
As a معلم I should أن أضيف طالبًا وأعدّله وأنقله بين المستويات مع المحافظة على سجله so that يتابع الطالب مساره دون فقدان تاريخه.
As a معلم I should أن أتابع الحضور والغياب وسجل كل طالب so that أعرف انتظامه.
As a مستخدم I should أن أصفّي التقارير حسب التاريخ والمعلم والطالب والمستوى so that أحصل على ما أحتاجه.
As a مستخدم I should أن أرى ملخصات إحصائية ورسومًا بيانية مفهومة so that أفهم البيانات بسرعة.
As a مستخدم I should أن أرى تأكيدًا قبل الحذف أو أي إجراء حساس مع إظهار نتيجة العملية so that أتجنب الأخطاء.
As a مستخدم I should أن يعتمد تسجيل الورد ومؤشر تقدم الطالب على عدد الصفحات المسجلة فقط so that يكون المقياس دقيقًا.
As a مطوّر I should أن أنشئ نماذج بيانات واضحة للمستخدم والمعلم والطالب والدرس والمتن والورد القرآني والتقارير so that يكون الكود منظمًا.
As a مطوّر I should أن أفصل الواجهات عن الخدمات وأضع عمليات Firebase في طبقة خدمات مستقلة so that يكون الكود قابلًا للصيانة.
As a مدير I should أن تكون قواعد Firestore محدودة الصلاحيات so that تكون البيانات آمنة.
As a مطوّر I should أن أتحقق من الصلاحية على قاعدة البيانات وليس بإخفاء الأزرار فقط so that تكون الحماية حقيقية.
As a مطوّر I should أن لا أخزّن كلمات المرور كنص صريح ولا أضع مفاتيح أو أسرار Firebase في الشيفرة المنشورة so that تكون البيانات آمنة.
As a مطوّر I should أن أضيف بيانات تجريبية اختيارية للتطوير فقط مع فصلها بوضوح عن بيانات الإنتاج so that أختبر التطبيق دون تلويث الإنتاج.
As a مطوّر I should أن أنشئ بنية مشروع واضحة تشمل core وmodels وservices وscreens وwidgets وtest so that يكون الكود منظمًا.
As a مطوّر I should أن أكتب كودًا كاملًا قابلًا للبناء لا تصاميم أو شرح فقط so that يكون التطبيق قابلًا للتشغيل.
As a مطوّر I should أن أضيف ملف README يشرح المتطلبات وتشغيل التطبيق وإعداد Firebase so that يفهم المطوّرون كيفية التشغيل.
As a مطوّر I should أن أضيف قواعد Firestore وخطوات نشرها so that يمكن نشر القواعد.
As a مطوّر I should أن أضيف اختبارات للوظائف الأساسية والصلاحيات ثم أشغّل التحليل والبناء so that يكون الكود موثوقًا.
As a مطوّر I should أن أنشئ نقطة إعداد واضحة عند تعذّر إعداد Firebase دون بيانات المالك مع شرح القيم المطلوبة so that يعرف المالك ما يجب إضافته.
As a مطوّر I should أن لا أنفّذ نشرًا فعليًا ولا أرفع المشروع إلى مستودع بعيد دون إذن صريح so that لا تحدث تغييرات غير مصرّح بها.
As a مدير I should أن أنشئ حسابات المعلمين أو أدعوهم قبل أول استخدام so that يتمكنوا من الدخول.
As a مستخدم I should أن أسجّل الدخول ويتم التحقق من جلستي قبل الوصول إلى البيانات المحمية so that تكون البيانات آمنة.
As a مطوّر I should أن أطبّق قواعد Firestore للتحقق من الدور ونطاق الوصول so that لا يُكتفى بإخفاء عناصر الواجهة.
As a مدير I should أن أعيّن المشرف قبل منحه صلاحيات المتون والأوراد أو التسجيل نيابة عن معلم so that تكون الصلاحيات صحيحة.
As a مشرف I should أن يُحفظ المعلم المقصود عند تسجيل العمل بالنيابة ويظهر في السجل so that يكون السجل دقيقًا.
As a مستخدم I should أن يُحسب تقدم الورد القرآني من مجموع الصفحات المسجلة فعليًا فقط so that يكون المقياس دقيقًا.
سياق المنتج: المدير هو المسؤول الأعلى عن المركز، ويدير جميع الجوانب الإدارية والتعليمية. يستخدم التطبيق لإنشاء حسابات المعلمين، وتعيين المشرف، وإعادة تعيين كلمات المرور، واستعراض البيانات، وعرض التقارير الشاملة.
الهدف الأساسي: أن يكون لديه رؤية كاملة عن المركز وأن يدير المعلمين والطلاب والمستويات والسجلات بكفاءة.
المسؤوليات المقبولة:
المدخلات والقرارات: بيانات المعلمين الجدد، قرارات التعيين، طلبات إعادة تعيين كلمات المرور، معايير التصفية في التقارير.
التفاعلات: يتفاعل مع المعلمين (بإنشاء حساباتهم وتعيينهم)، ومع المشرف (بتعيينه)، ومع البيانات (بالاستعراض والتحليل).
النجاح الملحوظ: جميع الحسابات منشأة وصحيحة، والمشرف معيّن، والتقارير معروضة بدقة.
ما يميّز هذا الدور: المدير هو الوحيد الذي يملك صلاحية إدارة الحسابات والإعدادات العامة، وهو الوحيد الذي يرى تقارير شاملة عن جميع المعلمين والطلاب.
سياق المنتج: المعلم هو المسؤول المباشر عن تعليم الطلاب التابعين له. يستخدم التطبيق لإدارة طلابه، وتسجيل الدروس اليومية، وتسجيل الحضور والغياب، واستعراض السجلات والتقارير، وتسجيل المتون والأوراد إذا كان مخوّلًا.
الهدف الأساسي: أن يدير تعليم طلابه بكفاءة وأن يوثّق تقدمهم بدقة.
المسؤوليات المقبولة:
المدخلات والقرارات: بيانات الطلاب، تفاصيل الدروس، حالات الحضور، إنجازات الطلاب في المتون والأوراد.
التفاعلات: يتفاعل مع طلابه (بإدارتهم وتسجيل تقدمهم)، ومع المدير (بتلقي التعيينات)، ومع المشرف (عند تسجيل المشرف نيابة عنه).
النجاح الملحوظ: جميع الدروس والحضور والأوراد مسجّلة بدقة، وسجلات الطلاب محدّثة.
ما يميّز هذا الدور: المعلم هو الوحيد الذي يسجّل الدروس اليومية والحضور بشكل مباشر، ويرى سجلات طلابه فقط. قد يكون مخوّلًا أو غير مخوّل بتسجيل المتون والأوراد.
سياق المنتج: المشرف هو معلم يعيّنه المدير مسؤولًا عن المتون والأوراد القرآنية. يستخدم التطبيق للوصول إلى قوائم المعلمين والطلاب، ومتابعة السجلات ضمن صلاحياته، وتسجيل الأعمال نيابة عن المعلمين.
الهدف الأساسي: أن يتابع جودة تسجيل المتون والأوراد وأن يسجّل الأعمال نيابة عن المعلمين عند الحاجة.
المسؤوليات المقبولة:
المدخلات والقرارات: اختيار المعلم المقصود، تفاصيل العمل المسجّل نيابة عنه، معايير المتابعة.
التفاعلات: يتفاعل مع المدير (الذي عيّنه)، ومع المعلمين (الذين يسجّل نيابة عنهم)، ومع الطلاب (بمتابعة سجلاتهم).
النجاح الملحوظ: السجلات المسجّلة نيابة عن المعلمين محفوظة باسم المعلم المقصود ومعروضة بوضوح.
ما يميّز هذا الدور: المشرف هو معلم له صلاحيات إضافية محددة، وأهم ما يميّزه هو قدرته على تسجيل الأعمال نيابة عن المعلمين مع الحفاظ على دقة الإسناد.
المصدر الإلهامي: Peter Saville — «قطعة مرمّزة واحدة، صمت لا ينتهي».
العنوان الرئيسي: سجل محكوم — الأخضر الداكن والذهبي كهوية المركز، والصمت كخلفية.
| الدور | القيمة | الاستخدام |
|---|---|---|
| الخلفية | #F4F1E9 | أرضية ورقية |
| السطح | #FFFFFF | بطاقات السجل |
| النص | #12211C | حبر السلطة |
| الأساسي | #0F3D2E | الأخضر الداكن — قاعدة الرأس، الأزرار الأساسية، رمز كل مسار |
| التمييز | #B08A3E | الذهبي — اللون الوحيد الدقيق، يُستخدم فقط على رمز المسار النشط، رقم عدد الصفحات، وخط شعري واحد لكل شاشة |
| الباهت | #7C8A82 | التسميات والبيانات الوصفية والحالات غير النشطة |
| الدور | القيمة |
|---|---|
| الخلفية | #0C1512 |
| السطح | #12211C |
| النص | #F4F1E9 |
| الأساسي | #0F3D2E |
| التمييز | #B08A3E (دون تغيير) |
| الباهت | #7C8A82 |
التباين: #12211C على #F4F1E9 ≈ 14:1؛ #F4F1E9 على #0F3D2E ≈ 11:1؛ #B08A3E على #0F3D2E ≈ 4.8:1 (يُستخدم بأحجام عرض كبيرة فقط).
tnum).مقياس معياري 1.25 على أساس 16px:
#0F3D2E بشفافية 20% تفصل كل كتلة بيانات وصفية.#F4F1E9 إلى #FFFFFF.المدخل العام (Landing): أرضية #F4F1E9 بعرض كامل، مع قاعدة خضراء داكنة 2px تمتد بعرض نافذة العرض أسفل الرأس مباشرة.
في الثلث العلوي، محاذاة يمين:
أسفل القاعدة، الرقم البطولي:
أسفل كليهما، صف محكوم واحد من ثلاث أزواج بيانات وصفية — عدد الطلاب، عدد الدروس اليوم، نسبة الحضور — مفصولة بخطوط شعرية، بلا بطاقة، بلا ظل، بلا أيقونة.
الإجراء الوحيد هو مستطيل أخضر داكن مسطح، بعرض كامل على الموبايل و240px على الديسكتوب، مكتوب عليه «تسجيل درس اليوم»، مثبّت أسفل الرقم بفجوة 24px.
لا شيء آخر ينافس: لا تدرج، لا شكل، لا لون ثانٍ، لا صورة بطولية.
Interaction Model: Static (direction)
Motion Tempo: still
Hero Dimensionality: flat
#F4F1E9، قاعدة خضراء 2px، سطر الدور الذهبي، اسم المركز، الرقم البطولي، القرص الدائري، صف البيانات الوصفية الثلاثي، الزر الأخضر.prefers-reduced-motion، يُرسم القرص والرقم بقيمتهما النهائية فورًا دون عدّ أو رسم.بنية المشروع:
core: الثوابت، الألوان، والثيمات.models: نماذج البيانات (المستخدم، المعلم، الطالب، الدرس، المتن، الورد القرآني، التقارير).services: المصادقة وFirestore والخدمات.screens: شاشات الدخول والإدارة والمعلم والتقارير.widgets: مكونات واجهة مشتركة.test: اختبارات أساسية للنماذج والصلاحيات والمنطق.[Assumption — required_inference][Assumption — required_inference][Assumption — explicit][Assumption — explicit][Assumption — required_inference][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit][Constraint — explicit]No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!