المطلوب بالضبط
تطبيق 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"
}
}
| تاريخ التسجيل | |
| معدل التوظيف | |
| المشاريع المفتوحة | 0 |
| مشاريع قيد التنفيذ | 0 |
| التواصلات الجارية | 1 |
مرحبا، اطلعت على التفاصيل وJSON Runtime المرفق. المشروع واضح ومحدد وهذا ممتاز. أقدر أنجز التطبيق خلال 8 أيام عمل بتكلفة 630 دولار، يشمل: مسح QR، جلب PDF، إرساله...
مرحبا، يمكنني تنفيذ التطبيق باستخدام Flutter وفق المتطلبات المطلوبة، مع ربط قارئ QR والتعامل مع Claude API وحفظ البيانات محليا وعرضها بشكل تفاعلي على أجهزة Andr...
السلام عليكم ورحمة الله وبركاته، اطلعت على تفاصيل المشروع وفهمت المتطلبات بالكامل، وأستطيع تنفيذ التطبيق باستخدام Flutter وفق المواصفات المطلوبة بحيث يعمل على A...
السلام عليكم ورحمة الله وبركاته، اطلعت على تفاصيل المشروع بشكل كامل وفهمت آلية العمل المطلوبة من قراءة QR وحتى بناء واجهة الدرس اعتمادا على JSON Runtime محليا د...
السلام عليكم أنا منصور محمد، مهندس برمجيات ومطور Flutter، واطلعت على التفاصيل التقنية المرفقة الخاصة بالتعامل مع ملفات PDF واستخراج الإحداثيات والجداول وتشغيل ا...
السلام عليكم، طلعت على المشروع بالتفصيل وقرأت الـ JSON Runtime المرفق الفكرة واضحة وممتازة. عندي خبرة في Flutter على Android، ربط Claude API، وعرض بيانات JSON ك...
السلام عليكم، أنا عمر رجب، Software Engineer / Flutter Developer، وعندي خبرة قوية جدا في تطوير تطبيقات Flutter على Android و iOS، وبقدر أنفذ المطلوب بجودة عالية...
السلام عليكم ورحمة الله وبركاته، اطلعت على تفاصيل المشروع بالكامل، وأرى أن المطلوب واضح ومحدد بشكل ممتاز، خصوصا أن: - PDF جاهز. - JSON Runtime جاهز. - Claude AP...
سلام عليكم، المطلوب واضح جدا، وفكرته ممتازة كـ MVP محلي بالكامل (Local Runtime) يعتمد على السرعة والأداء العالي بدون تعقيد السيرفرات وقواعد البيانات. الشغل هيتأ...
مرحبا، اطلعت على المواصفات والـ JSON Runtime المرفق، وفهمت أن المطلوب ليس مجرد قارئ PDF، بل تطبيق Android تفاعلي يعتمد على: قراءة QR من الكتاب. جلب ملف PDF من م...
مرحبا، اطلعت على تفاصيل المشروع بالكامل، وأستطيع تنفيذ التطبيق باستخدام Flutter لأجهزة Android وفق المتطلبات المذكورة. ما سأقوم بتنفيذه: قراءة QR Code واستخراج ...
مرحبا أستاذ مانع، اطلعت على تفاصيل مشروع تطبيق Flutter الخاص بعرض المحتوى التعليمي عبر QR وجلب PDF ثم تحويله إلى Runtime JSON وعرضه بشكل تفاعلي. معك محمود سمير ...