العودة لقائمة المشاريع
Flutter تعليمي محلي
الميزانية
$500.00 - $1000.00
التصنيف
برمجة، تطوير المواقع والتطبيقات
المهارات المطلوبة
برمجة
هندسة البرمجيات
تطوير البرمجيات
برمجة التطبيقات
تطوير التطبيقات
واجهة برمجة التطبيقات
برمجة أندرويد
إنشاء تطبيق
برمجة
هندسة البرمجيات
تطوير البرمجيات
برمجة التطبيقات
تطوير التطبيقات
واجهة برمجة التطبيقات
برمجة أندرويد
إنشاء تطبيق
الوصف
المطلوب بالضبط
تطبيق Flutter يعمل على Android فقط في هذه المرحلة.
١. يفتح المعلم التطبيق
٢. يمسح QR من الكتاب المدرسي
٣. التطبيق يجلب PDF من رابط الوزارة (ien.edu.sa)
٤. يرسل PDF لـ Claude API مرة واحدة فقط
٥. يستقبل JSON Runtime
٦. يحفظ JSON محلياً على الجهاز
٧. يعرض صفحات الدرس ككتل بصرية
٨. يدعم: تكبير، تصغير، سحب، إفلات
القيود :
لا سيرفر
لا سحابة
لا تسجيل دخول
لا قاعدة بيانات خارجية
كل شيء محلي على الجهاز
المسلّمات التي يوفرها صاحب المشروع:
PDF نموذجي جاهز ✅
JSON Runtime جاهز ✅ (مرفق)
Claude API key للاختبار ✅
المخرج المطلوب:
شاشة واحدة فقط
APK يعمل على جهاز Android حقيقي
ملاحظة مهمة
JSON Runtime مرفق مع هذه الوثيقة كمثال على البنية المطلوبة فقط.
لا يُطلب من المطور فهم كيفية توليده.
المطلوب :
كم التكلفة؟
كم الوقت؟
JSON Runtime جاهز ✅ (مرفق)
{
"lesson": {
"id": "arabic_imla_hamza_mutatarrifa_g4",
"title": "الهمزة المتطرفة",
"subject": "الظاهرة الإملائية — لغة عربية الصف الرابع",
"source": "ien.edu.sa",
"pages": [
78,
79,
80,
81,
82,
83
],
"page_size": {
"width": 637.28,
"height": 764.84
},
"status": "ready",
"ai_role": "منتهي — JSON جاهز للتنفيذ المحلي"
},
"phases": [
{
"phase_id": "01",
"phase": "التهيئة",
"template": "مدخل بصري + سؤال محفز",
"flow": "جذب الانتباه",
"page": 78,
"visual_blocks": [
{
"block_id": "b_78_01",
"type": "عنوان_رئيسي",
"text": "الظاهرةُ الإملائيَّةُ",
"color": "أخضر_زيتوني",
"coords": {
"x": 340.0,
"y": 55.0,
"w": 250.0,
"h": 38.0
},
"z_index": 10,
"action": "إبراز — تكبير تدريجي"
},
{
"block_id": "b_78_02",
"type": "عنوان_درس",
"text": "الهمزةُ المُتطرِّفةُ",
"color": "أحمر",
"coords": {
"x": 200.0,
"y": 105.0,
"w": 240.0,
"h": 32.0
},
"z_index": 10,
"action": "ظهور — نبض بصري"
},
{
"block_id": "b_78_03",
"type": "بطاقة_مثال",
"text": "كُلُّ شَيْءٍ في قُرب الأمِّ جَميلٌ... شاطِئ الأمان... لُؤْلُؤ التربية... العَطَاء",
"color": "أخضر_فاتح_خلفية",
"coords": {
"x": 60.0,
"y": 155.0,
"w": 340.0,
"h": 120.0
},
"z_index": 5,
"action": "ظهور تدريجي — تمييز الكلمات الملونة"
},
{
"block_id": "b_78_04",
"type": "بطاقة_أهداف",
"text": "١. تمييز الهمزة المتطرفة\n٢. تحديد سبب كتابتها\n٣. كتابتها كتابة صحيحة",
"color": "أخضر_حدود",
"coords": {
"x": 420.0,
"y": 155.0,
"w": 175.0,
"h": 130.0
},
"z_index": 5,
"action": "ظهور — قراءة بند بند"
},
{
"block_id": "b_78_05",
"type": "بطاقة_قاعدة",
"text": "سُمِّيَت مُتطرِّفة؛ لأنَّها تكون في طَرَف الكلمة أي نهايتها",
"color": "أخضر_فاتح_حدود",
"coords": {
"x": 100.0,
"y": 330.0,
"w": 440.0,
"h": 38.0
},
"z_index": 5,
"action": "إبراز"
},
{
"block_id": "b_78_06",
"type": "بطاقة_قاعدة",
"text": "نَقصِدُ باليَاء المُناسِبة للكَسرة (النَّبرة) بِدُون نُقَط",
"color": "أخضر_فاتح_حدود",
"coords": {
"x": 100.0,
"y": 385.0,
"w": 440.0,
"h": 38.0
},
"z_index": 5,
"action": "إبراز"
},
{
"block_id": "b_78_07",
"type": "عنوان_قسم",
"text": "أقرَأ وألاحِظ",
"color": "أخضر_زر",
"coords": {
"x": 390.0,
"y": 450.0,
"w": 160.0,
"h": 32.0
},
"z_index": 8,
"action": "إبراز"
}
],
"teaching_content": {
"hook": "لاحظ الكلمات الملونة في النص — أين تقع الهمزة فيها؟",
"bridge": "الهمزة في نهاية الكلمة تسمى المتطرفة"
}
},
{
"phase_id": "02",
"phase": "الشرح",
"pattern": "نمط العرض + نمط التفكير",
"strategy": "الشرح المباشر + المقارنة + التصنيف",
"template": "شرح تدريجي + خريطة مفاهيم",
"steps": [
{
"step": "01",
"page": 78,
"content": "الهمزة المتطرفة تُرسم على الحرف المناسب لحركة الحرف الذي قبلها",
"visual_blocks": [
{
"block_id": "b_78_08",
"type": "أمثلة_ملونة",
"words": [
"شاطِئ",
"لُؤلُؤ",
"نَشَأ",
"العَطَاء"
],
"coords": {
"x": 60.0,
"y": 155.0,
"w": 340.0,
"h": 120.0
},
"z_index": 6,
"action": "تمييز كلمة كلمة بالتتابع"
}
]
},
{
"step": "02",
"page": 79,
"content": "أتأمل الكلمات وأعلل سبب رسم الهمزة",
"visual_blocks": [
{
"block_id": "b_79_01",
"type": "بطاقة_تحليل",
"text": "شاطِئ — الهمزة على ياء لأن الحرف قبلها مكسور",
"coords": {
"x": 60.0,
"y": 140.0,
"w": 520.0,
"h": 32.0
},
"z_index": 5,
"action": "ظهور تدريجي"
},
{
"block_id": "b_79_02",
"type": "بطاقة_تحليل",
"text": "لُؤلُؤ — الهمزة على واو لأن الحرف قبلها مضموم",
"coords": {
"x": 60.0,
"y": 178.0,
"w": 520.0,
"h": 32.0
},
"z_index": 5,
"action": "ظهور تدريجي"
},
{
"block_id": "b_79_03",
"type": "بطاقة_تحليل",
"text": "نَشَأ — الهمزة على ألف لأن الحرف قبلها مفتوح",
"coords": {
"x": 60.0,
"y": 216.0,
"w": 520.0,
"h": 32.0
},
"z_index": 5,
"action": "ظهور تدريجي"
}
]
},
{
"step": "03",
"page": 80,
"content": "خريطة المفاهيم — الاستنتاج الكامل",
"visual_blocks": [
{
"block_id": "b_80_01",
"type": "خريطة_مفاهيم",
"text": "الهمزة المتطرفة",
"coords": {
"x": 220.0,
"y": 55.0,
"w": 200.0,
"h": 38.0
},
"z_index": 10,
"action": "إبراز — مركز الخريطة"
},
{
"block_id": "b_80_02",
"type": "فرع_خريطة",
"text": "ما قبلها ساكن → تُرسم مفردة على السطر",
"coords": {
"x": 380.0,
"y": 120.0,
"w": 200.0,
"h": 80.0
},
"z_index": 8,
"action": "ظهور من اليمين"
},
{
"block_id": "b_80_03",
"type": "فرع_خريطة",
"text": "ما قبلها متحرك:\n- مفتوح → ألف\n- مضموم → واو\n- مكسور → ياء",
"coords": {
"x": 60.0,
"y": 120.0,
"w": 280.0,
"h": 120.0
},
"z_index": 8,
"action": "ظهور من اليسار"
}
]
}
]
},
{
"phase_id": "03",
"phase": "المعالجة والتوضيح",
"template": "كشف الأخطاء + تغذية راجعة",
"page": 80,
"visual_blocks": [
{
"block_id": "b_80_04",
"type": "تفكير_ناقد",
"text": "كتبت نُورة عبارة فيها أخطاء إملائية — أين الأخطاء؟",
"coords": {
"x": 60.0,
"y": 490.0,
"w": 520.0,
"h": 60.0
},
"z_index": 5,
"action": "إبراز — انتظار إجابة"
},
{
"block_id": "b_80_05",
"type": "نص_مكتوب",
"text": "لا تَلجَاء إلى نَفسِك، ولا تَسِرْ وراء عواطِفِك، وأَضِيء قَلبَك بِنُور الإيمان",
"color": "أخضر_فاتح_خلفية",
"coords": {
"x": 100.0,
"y": 560.0,
"w": 440.0,
"h": 65.0
},
"z_index": 5,
"action": "إبراز الكلمات الخاطئة — تمييز لوني"
}
],
"errors": [
{
"خطأ": "تَلجَاء",
"صواب": "تَلجَأ",
"سبب": "الهمزة مفردة على السطر لأن ما قبلها ساكن"
},
{
"خطأ": "أَضِيء",
"صواب": "أَضِئ",
"سبب": "الهمزة مكسورة ما قبلها ساكن"
}
]
},
{
"phase_id": "04",
"phase": "التطبيق والممارسة",
"template": "نشاط فردي + نشاط جماعي",
"activities": [
{
"activity_id": "a_01",
"type": "فردي",
"page": 79,
"instruction": "أرسم الهمزة المتطرفة على الحرف المناسب لحركة الحرف السابق لها",
"words": [
"هَادـ",
"يَبتَدـ",
"يَتَّكـ",
"أُنشـ",
"دَافـ",
"مَبَادـ"
],
"visual_block": {
"block_id": "b_79_04",
"type": "تمرين_فردي",
"coords": {
"x": 60.0,
"y": 350.0,
"w": 520.0,
"h": 200.0
},
"z_index": 5,
"action": "عرض كلمة — انتظار كتابة"
}
},
{
"activity_id": "a_02",
"type": "فردي",
"page": 81,
"instruction": "أصوغ الفعل المضارع من الأفعال الماضية وأقارن رسم الهمزة",
"table": {
"headers": [
"الفعل الماضي",
"سبب رسم الهمزة المتطرفة",
"الفعل المضارع",
"سبب رسم الهمزة المتطرفة في المضارع"
],
"rows": [
"جَزَّأ",
"كَافَأ",
"جَاءَ"
],
"coords": {
"x": 60.0,
"y": 100.0,
"w": 520.0,
"h": 160.0
}
},
"visual_block": {
"block_id": "b_82_01",
"type": "جدول_تفاعلي",
"z_index": 5,
"action": "عرض صف — انتظار تعبئة"
}
},
{
"activity_id": "a_03",
"type": "فردي",
"page": 82,
"instruction": "أصل بين الحروف المفصولة لتكون كلمة واحدة",
"words_split": [
"يَ بْ دَ ءُ",
"يَ نْ شَ ءُ",
"مَ بَ أَ دِ ءُ",
"لُ ءُ لُ ءٌ"
],
"visual_block": {
"block_id": "b_82_02",
"type": "نشاط_وصل",
"coords": {
"x": 110.0,
"y": 290.0,
"w": 420.0,
"h": 150.0
},
"z_index": 5,
"action": "عرض — سحب وإفلات"
}
},
{
"activity_id": "a_04",
"type": "جماعي",
"page": 83,
"instruction": "لعبة الثواني العشر — كتابة كلمات مجموعة فيها همزة متطرفة وتحديد سبب كتابتها",
"words": [
"غِذَاءٌ",
"بُوبُوٌّ",
"قَارِئٌ",
"فِنَاءٌ",
"مَرْفَأً",
"تَبَاطُؤٌ",
"مَوْطِئٌ",
"صَدَأً",
"نُشُوءٌ",
"بَادِئٌ",
"أُمرُؤٌ",
"يعبَأً"
],
"visual_block": {
"block_id": "b_83_01",
"type": "بطاقات_ملونة",
"coords": {
"x": 60.0,
"y": 250.0,
"w": 520.0,
"h": 120.0
},
"z_index": 5,
"action": "إبراز — تصنيف بالسحب"
}
},
{
"activity_id": "a_05",
"type": "أسري",
"page": 83,
"instruction": "أصنف المفردات في مواضعها من الجدول",
"table_headers": [
"همزة على الألف",
"همزة على الواو",
"همزة على الياء",
"همزة على السطر"
],
"visual_block": {
"block_id": "b_83_02",
"type": "جدول_تصنيف",
"coords": {
"x": 60.0,
"y": 440.0,
"w": 520.0,
"h": 160.0
},
"z_index": 5,
"action": "عرض جدول — سحب وإفلات"
}
}
]
},
{
"phase_id": "05",
"phase": "التقويم",
"template": "أسئلة سريعة + تحليل نتائج",
"page": 82,
"questions": [
{
"q_id": "q_01",
"question": "ما سبب رسم الهمزة في كلمة (شاطِئ) على الياء؟",
"answer": "لأن الحرف قبلها مكسور"
},
{
"q_id": "q_02",
"question": "أين تقع الهمزة المتطرفة في الكلمة؟",
"answer": "في نهاية الكلمة"
},
{
"q_id": "q_03",
"question": "إذا كان الحرف قبل الهمزة ساكناً — كيف تُرسم الهمزة؟",
"answer": "مفردة على السطر"
},
{
"q_id": "q_04",
"question": "أكتب مضارع (جَزَّأَ) مع بيان سبب رسم الهمزة",
"answer": "يُجَزِّئُ — على ياء لأن الحرف قبلها مكسور"
}
]
},
{
"phase_id": "06",
"phase": "الإغلاق",
"template": "تلخيص + سؤال ختامي + إغلاق تحفيزي",
"page": 80,
"summary_block": {
"block_id": "b_80_01_summary",
"type": "خريطة_مفاهيم_ختامية",
"text": "الهمزة المتطرفة",
"coords": {
"x": 220.0,
"y": 55.0,
"w": 200.0,
"h": 38.0
},
"z_index": 10,
"action": "إبراز ختامي — عرض الخريطة كاملة"
},
"summary_points": [
"الهمزة المتطرفة تقع في نهاية الكلمة",
"إذا كان ما قبلها ساكن → تُرسم مفردة على السطر",
"إذا كان ما قبلها مفتوح → على ألف",
"إذا كان ما قبلها مضموم → على واو",
"إذا كان ما قبلها مكسور → على ياء بدون نقط"
],
"closing_question": "لماذا كتبنا همزة (جَريء) على ياء وهمزة (نشَأ) على ألف؟",
"motivational": "الإملاء الصحيح احترام للغة وأمانة في الكتابة"
}
],
"runtime_meta": {
"total_visual_blocks": 22,
"pages_covered": [
78,
79,
80,
81,
82,
83
],
"interaction_types": [
"إبراز",
"تكبير_تدريجي",
"ظهور_تدريجي",
"نبض_بصري",
"تمييز_لوني",
"سحب_وإفلات",
"عرض_بند_بند",
"انتظار_إجابة"
],
"tables_count": 3,
"coordinate_source": "pdfplumber — PDF أصلي",
"encoding_note": "الخطوط مضمنة Identity-H — الإحداثيات دقيقة / النصوص تستخدم الصور المرسترة للعرض",
"ai_role": "منتهي بعد توليد هذا الملف",
"runtime_engine": "Flutter — Deterministic Local Runtime"
}
}