File size: 30,409 Bytes
7729639
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>OpenCode: دليل الوكيل البرمجي المفتوح</title>
    
    <!-- الربط بخطوط Google Fonts -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Cairo:wght@400;700&family=Tajawal:wght@400;500;700&display=swap" rel="stylesheet">
    
    <!-- Tailwind CSS CDN -->
    <script src="https://cdn.tailwindcss.com"></script>
    
    <!-- إعدادات PWA الأساسية -->
    <meta name="theme-color" content="#0ea5e9">
    <meta name="description" content="تطبيق تعليمي تفاعلي لاستكشاف أداة OpenCode البديلة لـ Claude Code">
    <link rel="apple-touch-icon" href="https://cdn-icons-png.flaticon.com/512/2103/2103633.png">
    
    <!-- إعدادات Tailwind المخصصة والوضع الليلي -->
    <script>
        tailwind.config = {
            darkMode: 'class',
            theme: {
                extend: {
                    fontFamily: {
                        cairo: ['Cairo', 'sans-serif'],
                        tajawal: ['Tajawal', 'sans-serif'],
                    },
                    colors: {
                        primary: '#0ea5e9',
                        darkBg: '#0f172a',
                        darkCard: '#1e293b',
                    }
                }
            }
        }
    </script>

    <style>
        body {
            font-family: 'Tajawal', sans-serif;
            scroll-behavior: smooth;
            transition: background-color 0.3s, color 0.3s;
        }
        h1, h2, h3, h4 {
            font-family: 'Cairo', sans-serif;
        }
        .text-justify {
            text-align: justify;
        }
        .prompt-box {
            overflow-wrap: break-word;
            word-wrap: break-word;
            white-space: pre-wrap;
        }
        /* تصميم مخصص لشريط التمرير */
        ::-webkit-scrollbar {
            width: 8px;
        }
        ::-webkit-scrollbar-track {
            background: #f1f1f1;
        }
        .dark ::-webkit-scrollbar-track {
            background: #0f172a;
        }
        ::-webkit-scrollbar-thumb {
            background: #0ea5e9;
            border-radius: 4px;
        }
        /* زر العودة للأعلى */
        #backToTop {
            transition: opacity 0.3s, visibility 0.3s;
        }
    </style>
</head>
<body class="bg-stone-50 text-stone-900 dark:bg-slate-900 dark:text-slate-100">

    <!-- زر تبديل الوضع (أعلى اليسار) -->
    <button id="themeToggle" class="fixed top-4 left-4 z-50 p-3 rounded-full bg-white dark:bg-slate-800 shadow-lg border border-stone-200 dark:border-slate-700 hover:scale-110 transition-transform focus:outline-none">
        <span id="themeIcon" class="text-xl">🌙</span>
    </button>

    <!-- شريط التنقل (SPA Navigation) -->
    <nav class="sticky top-0 z-40 w-full bg-white/80 dark:bg-slate-900/80 backdrop-blur-md border-b border-stone-200 dark:border-slate-800">
        <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
            <div class="flex justify-between items-center h-16">
                <div class="flex items-center">
                    <span class="text-xl font-bold text-primary font-cairo">دليل OpenCode</span>
                </div>
                <div class="hidden md:flex space-x-6 space-x-reverse mr-10">
                    <a href="#intro" class="hover:text-primary transition-colors font-medium">البداية</a>
                    <a href="#features" class="hover:text-primary transition-colors font-medium">المميزات</a>
                    <a href="#comparison" class="hover:text-primary transition-colors font-medium">المقارنة</a>
                    <a href="#modes" class="hover:text-primary transition-colors font-medium">أوضاع العمل</a>
                    <a href="#cli" class="hover:text-primary transition-colors font-medium">الأوامر</a>
                    <a href="#prompts" class="hover:text-primary transition-colors font-medium">المطالبات</a>
                </div>
            </div>
        </div>
    </nav>

    <!-- المحتوى الرئيسي -->
    <main class="max-w-7xl mx-auto px-4 py-8">
        
        <!-- مقدمة الدورة -->
        <section id="intro" class="mb-16">
            <div class="text-center mb-12">
                <h1 class="text-3xl md:text-4xl font-bold mb-4">
                    مراجعة شاملة لأداة OpenCode </h1>
                    <h2 class="text-2xl md:text-2xl text-gray-400 font-bold mb-4">
                         المنافس المفتوح المصدر لـ Claude Code</h2>
               
                <p class="text-lg text-stone-600 dark:text-slate-400 max-w-3xl mx-auto text-justify">
                    يقدم هذا التطبيق التعليمي ملخصاً معززاً وتفصيلياً يستعرض أداة <b>OpenCode</b>، وهي وكيل برمجي (Coding Agent) مفتوح المصدر وسريع النمو. تهدف هذه الأداة إلى توفير بيئة برمجية متكاملة تعتمد على الذكاء الاصطناعي مع مرونة كاملة في اختيار النماذج والخصوصية، مما يجعلها الخيار الأول للمطورين الذين ينشدون الاستقلالية.
                </p>
            </div>

            <div class="bg-white dark:bg-slate-800 rounded-2xl p-8 shadow-sm border border-stone-200 dark:border-slate-700">
                <h2 class="text-2xl font-bold mb-6 border-r-4 border-primary pr-4">ما هي أداة OpenCode؟</h2>
                <p class="text-justify mb-4">
                    تُعد <b>OpenCode</b> أداة برمجية متطورة تعمل عبر واجهة السطر البرمجي (CLI) وتطبيق سطح المكتب. تم تصميمها لتنفيذ مهام برمجية معقدة ومتعددة الخطوات. ما يميز هذه الأداة هو جذورها التقنية؛ فقد تم تطويرها بواسطة فريق يمتلك خبرة واسعة في أدوات مثل <b>Neovim</b> (تحديداً المطورين خلف مشروع <i>avante.nvim</i>)، مما جعل واجهتها سلسة، سريعة، واحترافية للغاية تلائم سير عمل المحترفين.
                </p>
                <p class="text-justify">
                    على عكس الأدوات المغلقة، تمنحك OpenCode القدرة على "جلب مفتاحك الخاص" (BYOK)، مما يعني أنك لا ترتبط بمزود واحد أو اشتراك محدد، بل يمكنك التنقل بين أفضل النماذج المتاحة في السوق لحظة بلحظة.
                </p>
            </div>
        </section>

        <!-- المميزات الرئيسية (شبكة عمودين) -->
        <section id="features" class="mb-16">
            <h2 class="text-2xl font-bold mb-8 text-center">المميزات الاستثنائية للأداة</h2>
            <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                <!-- ميزة 1 -->
                <div class="group bg-white dark:bg-slate-800 p-6 rounded-xl border border-stone-200 dark:border-slate-700 hover:shadow-xl hover:-translate-y-1 transition-all duration-300">
                    <div class="flex items-center mb-4">
                        <div class="p-3 bg-blue-100 dark:bg-blue-900 rounded-lg ml-4">
                            <span class="text-2xl">🔓</span>
                        </div>
                        <h3 class="text-xl font-bold">مفتوحة المصدر بالكامل</h3>
                    </div>
                    <p class="text-justify text-stone-600 dark:text-slate-400">
                        الأداة مرخصة تحت رخصة <b>MIT</b>، مما يعني شفافية كاملة في كيفية التعامل مع الكود الخاص بك، وأماناً أعلى لبياناتك الحساسة. يمكنك تدقيق الكود البرمجي للأداة نفسها للتأكد من عدم وجود ثغرات أو تسريب للبيانات.
                    </p>
                </div>
                <!-- ميزة 2 -->
                <div class="group bg-white dark:bg-slate-800 p-6 rounded-xl border border-stone-200 dark:border-slate-700 hover:shadow-xl hover:-translate-y-1 transition-all duration-300">
                    <div class="flex items-center mb-4">
                        <div class="p-3 bg-green-100 dark:bg-green-900 rounded-lg ml-4">
                            <span class="text-2xl">🧠</span>
                        </div>
                        <h3 class="text-xl font-bold">دعم هائل للنماذج (70+)</h3>
                    </div>
                    <p class="text-justify text-stone-600 dark:text-slate-400">
                        لا تكتفِ بنموذج واحد؛ تدعم الأداة أكثر من 70 نموذج ذكاء اصطناعي تشمل: <b>Claude 3.5</b>، <b>GPT-4o</b>، <b>Gemini 1.5</b>، <b>DeepSeek</b>، وحتى نماذج <b>Grok</b>. هذا التنوع يضمن لك اختيار النموذج الأنسب للمهمة (مثلاً Gemini للمهام التي تتطلب سياقاً كبيراً، و Claude للبرمجة المنطقية الدقيقة).
                    </p>
                </div>
                <!-- ميزة 3 -->
                <div class="group bg-white dark:bg-slate-800 p-6 rounded-xl border border-stone-200 dark:border-slate-700 hover:shadow-xl hover:-translate-y-1 transition-all duration-300">
                    <div class="flex items-center mb-4">
                        <div class="p-3 bg-yellow-100 dark:bg-yellow-900 rounded-lg ml-4">
                            <span class="text-2xl">🔌</span>
                        </div>
                        <h3 class="text-xl font-bold">تعدد المزودين (BYOK)</h3>
                    </div>
                    <p class="text-justify text-stone-600 dark:text-slate-400">
                        يمكنك استخدام مفاتيح API الخاصة بك من <b>OpenRouter</b> أو <b>OpenAI</b> أو <b>Anthropic</b>، أو حتى الاستفادة من اشتراكاتك الحالية في <b>ChatGPT Plus</b> أو <b>GitHub Copilot</b> عبر بروتوكولات الربط المدعومة.
                    </p>
                </div>
                <!-- ميزة 4 -->
                <div class="group bg-white dark:bg-slate-800 p-6 rounded-xl border border-stone-200 dark:border-slate-700 hover:shadow-xl hover:-translate-y-1 transition-all duration-300">
                    <div class="flex items-center mb-4">
                        <div class="p-3 bg-purple-100 dark:bg-purple-900 rounded-lg ml-4">
                            <span class="text-2xl">📝</span>
                        </div>
                        <h3 class="text-xl font-bold">دعم ملف agents.md</h3>
                    </div>
                    <p class="text-justify text-stone-600 dark:text-slate-400">
                        تتبع الأداة الاتفاقية الموحدة لسياق الوكلاء الذكية. بمجرد وجود ملف <b>agents.md</b> في مشروعك، سيفهم الوكيل بنية المشروع، الأهداف، والقيود التقنية بسرعة فائقة، مما يقلل من "الهلوسة" البرمجية.
                    </p>
                </div>
            </div>
        </section>

        <!-- مقارنة (بطاقات بديلة) -->
        <section id="comparison" class="mb-16">
            <h2 class="text-2xl font-bold mb-8 text-center">OpenCode مقابل Claude Code: أيهما تختار؟</h2>
            <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
                <!-- بطاقة OpenCode -->
                <div class="relative p-8 rounded-2xl bg-gradient-to-br from-blue-50 to-white dark:from-slate-800 dark:to-slate-900 border-2 border-primary shadow-lg">
                    <h3 class="text-2xl font-bold text-primary mb-6">OpenCode (الخيار الحر)</h3>
                    <ul class="space-y-4">
                        <li class="flex items-center">
                            <span class="ml-2 text-green-500 font-bold"></span>
                            <span><b>المصدر:</b> مفتوح المصدر بالكامل (MIT).</span>
                        </li>
                        <li class="flex items-center">
                            <span class="ml-2 text-green-500 font-bold"></span>
                            <span><b>التكلفة:</b> دفع مقابل الاستخدام الفعلي (رخيص جداً).</span>
                        </li>
                        <li class="flex items-center">
                            <span class="ml-2 text-green-500 font-bold"></span>
                            <span><b>النماذج:</b> أي نموذج يدعم واجهة API.</span>
                        </li>
                        <li class="flex items-center">
                            <span class="ml-2 text-green-500 font-bold"></span>
                            <span><b>الخصوصية:</b> تحكم محلي كامل في البيانات.</span>
                        </li>
                    </ul>
                </div>
                <!-- بطاقة Claude Code -->
                <div class="relative p-8 rounded-2xl bg-white dark:bg-slate-800 border-2 border-stone-300 dark:border-slate-600">
                    <h3 class="text-2xl font-bold text-stone-500 mb-6">Claude Code (الخيار المغلق)</h3>
                    <ul class="space-y-4">
                        <li class="flex items-center">
                            <span class="ml-2 text-red-500 font-bold"></span>
                            <span><b>المصدر:</b> مغلق المصدر وملكية خاصة.</span>
                        </li>
                        <li class="flex items-center">
                            <span class="ml-2 text-red-500 font-bold"></span>
                            <span><b>التكلفة:</b> اشتراكات مرتفعة (100-200 دولار شهرياً).</span>
                        </li>
                        <li class="flex items-center">
                            <span class="ml-2 text-red-500 font-bold"></span>
                            <span><b>النماذج:</b> نماذج شركة Anthropic فقط.</span>
                        </li>
                        <li class="flex items-center">
                            <span class="ml-2 text-red-500 font-bold"></span>
                            <span><b>الخصوصية:</b> تعتمد كلياً على سياسات الشركة.</span>
                        </li>
                    </ul>
                </div>
            </div>
        </section>

        <!-- أوضاع العمل -->
        <section id="modes" class="mb-16 bg-primary/5 dark:bg-primary/10 p-8 rounded-3xl">
            <h2 class="text-2xl font-bold mb-8 text-center">آلية العمل: النظام الثنائي المتكامل</h2>
            <div class="grid grid-cols-1 lg:grid-cols-2 gap-12">
                <div class="bg-white dark:bg-slate-800 p-6 rounded-2xl shadow-sm">
                    <h3 class="text-xl font-bold text-blue-600 mb-4 flex items-center">
                        <span class="ml-2">1. وضع التخطيط (Plan Mode)</span>
                    </h3>
                    <p class="text-justify mb-4">
                        هذا الوضع مخصص للاستكشاف والتحليل. يعمل الوكيل هنا بوضعية <b>القراءة فقط</b>.
                    </p>
                    <ul class="list-disc list-inside space-y-2 text-stone-600 dark:text-slate-400">
                        <li>تحليل الكود الحالي وفهم الترابطات.</li>
                        <li>اقتراح حلول للمشاكل دون لمس الملفات.</li>
                        <li>آمن جداً لاستخدامه في المشاريع الكبيرة قبل اتخاذ قرار التعديل.</li>
                    </ul>
                </div>
                <div class="bg-white dark:bg-slate-800 p-6 rounded-2xl shadow-sm border-t-4 border-primary">
                    <h3 class="text-xl font-bold text-primary mb-4 flex items-center">
                        <span class="ml-2">2. وضع البناء (Build Mode)</span>
                    </h3>
                    <p class="text-justify mb-4">
                        هنا تبدأ القوة الحقيقية؛ حيث يتحول الوكيل إلى مطور نشط يمتلك <b>صلاحيات الكتابة</b>.
                    </p>
                    <ul class="list-disc list-inside space-y-2 text-stone-600 dark:text-slate-400">
                        <li>إنشاء ملفات جديدة تماماً.</li>
                        <li>تعديل الأسطر البرمجية بدقة عالية.</li>
                        <li>تنفيذ الأوامر في الطرفية (Terminal) لتثبيت الحزم أو تشغيل الاختبارات.</li>
                    </ul>
                </div>
            </div>
        </section>

        <!-- التثبيت (CLI) -->
        <section id="cli" class="mb-16">
            <h2 class="text-2xl font-bold mb-8">التثبيت والإعداد السريع</h2>
            <div class="bg-stone-900 text-slate-300 p-6 rounded-xl font-mono text-sm leading-relaxed shadow-2xl overflow-hidden">
                <div class="flex items-center mb-4 border-b border-stone-800 pb-2">
                    <div class="flex space-x-2 space-x-reverse ml-4">
                        <div class="w-3 h-3 bg-red-500 rounded-full"></div>
                        <div class="w-3 h-3 bg-yellow-500 rounded-full"></div>
                        <div class="w-3 h-3 bg-green-500 rounded-full"></div>
                    </div>
                    <span class="text-xs text-stone-500">Terminal - Installation</span>
                </div>
                <div class="space-y-4" dir="ltr">
                    <div>
                        <span class="text-stone-500"># Install the tool globally using curl</span><br>
                        <span class="text-primary">curl</span> -sL https://opencode.ai/install.sh | <span class="text-primary">sh</span>
                    </div>
                    <div>
                        <span class="text-stone-500"># Login and choose your provider (OpenRouter/OpenAI)</span><br>
                        <span class="text-primary">opencode</span> login
                    </div>
                    <div>
                        <span class="text-stone-500"># Start building in your current directory</span><br>
                        <span class="text-primary">opencode</span> .
                    </div>
                </div>
            </div>
        </section>

        <!-- المطالبات (Prompting) - ثنائي الأعمدة -->
        <section id="prompts" class="mb-16">
            <h2 class="text-2xl font-bold mb-8 text-center">أمثلة عملية لمطالبات احترافية</h2>
            <p class="text-center mb-10 text-stone-600 dark:text-slate-400">إليك كيف يمكنك صياغة طلباتك لتحصل على أفضل النتائج البرمجية.</p>
            
            <!-- مثال 1 -->
            <div class="mb-12">
                <h3 class="text-xl font-bold mb-6 text-primary">المثال الأول: بناء لعبة ثلاثية الأبعاد</h3>
                <div class="grid grid-cols-1 md:grid-cols-2 gap-0 rounded-2xl overflow-hidden shadow-lg">
                    <!-- جهة العربية -->
                    <div class="bg-slate-800 p-6 text-white text-right" dir="rtl">
                        <span class="inline-block bg-primary text-xs px-2 py-1 rounded mb-4 font-bold">المطالبة:</span>
                        <div class="font-tajawal leading-relaxed">
                            قم بإنشاء <b>لعبة ركض لا نهائي ثلاثية الأبعاد</b> باستخدام لغة <b>TypeScript</b> ومكتبة <b>Three.js</b>.
                            يجب أن تتضمن اللعبة:
                            عناصر تحكم للاعب، عقبات تظهر عشوائياً، وطريق نيون يتم إنتاجه إجرائياً بشكل مستمر.
                        </div>
                    </div>
                    <!-- جهة الإنجليزية -->
                    <div class="bg-slate-900 p-6 text-slate-300 text-left font-mono text-sm" dir="ltr">
                        <span class="inline-block bg-slate-700 text-xs px-2 py-1 rounded mb-4 font-bold uppercase">Prompt:</span>
                        <div class="prompt-box">
Create a 3D endless runner game using Vanilla TypeScript and Three.js. 
Include player controls, obstacles, and a procedurally generated neon road.
                        </div>
                    </div>
                </div>
            </div>

            <!-- مثال 2 -->
            <div class="mb-12">
                <h3 class="text-xl font-bold mb-6 text-primary">المثال الثاني: لوحة تحكم CRM</h3>
                <div class="grid grid-cols-1 md:grid-cols-2 gap-0 rounded-2xl overflow-hidden shadow-lg">
                    <!-- جهة العربية -->
                    <div class="bg-slate-800 p-6 text-white text-right" dir="rtl">
                        <span class="inline-block bg-primary text-xs px-2 py-1 rounded mb-4 font-bold">المطالبة:</span>
                        <div class="font-tajawal leading-relaxed">
                            قم ببناء <b>لوحة تحكم لنظام إدارة علاقات العملاء (CRM)</b> مخصصة لحملات البريد الإلكتروني.
                            استخدم تقنيات <b>React</b> و <b>Vite</b> و <b>Tailwind CSS</b>.
                            يجب أن تشمل اللوحة: إدارة جهات الاتصال، تتبع حالة الحملات، ورسوماً بيانية للتحليلات.
                        </div>
                    </div>
                    <!-- جهة الإنجليزية -->
                    <div class="bg-slate-900 p-6 text-slate-300 text-left font-mono text-sm" dir="ltr">
                        <span class="inline-block bg-slate-700 text-xs px-2 py-1 rounded mb-4 font-bold uppercase">Prompt:</span>
                        <div class="prompt-box">
Build a CRM dashboard for email campaigns using React, Vite, and Tailwind. 
Include contact management, campaign tracking, and analytics.
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- نصائح ذهبية وخلاصة -->
        <section class="mb-16">
            <div class="bg-white dark:bg-slate-800 rounded-3xl p-10 shadow-sm border border-stone-200 dark:border-slate-700">
                <h2 class="text-2xl font-bold mb-6">الخلاصة ونصائح الاستخدام المحترف</h2>
                <div class="space-y-6">
                    <p class="text-justify">
                        أثبتت <b>OpenCode</b> أنها بديل حقيقي وقوي للأدوات المغلقة. إنها ليست مجرد أداة لإكمال الكود، بل هي شريك برمجي يفهم مشروعك ككل. إليك بعض النصائح النهائية:
                    </p>
                    <ul class="space-y-4">
                        <li class="flex items-start">
                            <span class="ml-3 mt-1 text-primary"></span>
                            <span>استخدم أمر <b>/init</b> عند بدء العمل على مشروع موجود؛ سيؤدي ذلك لإنشاء ملف <b>agents.md</b> الذي يُعد "البوصلة" للوكيل الذكي.</span>
                        </li>
                        <li class="flex items-start">
                            <span class="ml-3 mt-1 text-primary"></span>
                            <span><b>التنويع في النماذج:</b> لا تلتزم بنموذج واحد. استخدم <b>Claude 3.5 Opus</b> للمنطق المعقد، و <b>Gemini 1.5 Pro</b> للواجهات الأمامية، و <b>GPT-4o Codex</b> لإصلاح الأخطاء.</span>
                        </li>
                        <li class="flex items-start">
                            <span class="ml-3 mt-1 text-primary"></span>
                            <span><b>البحث العميق (Deep Research):</b> إذا واجهت مشكلة تقنية نادرة، اطلب من الوكيل تفعيل ميزة البحث العميق لتزويده بأحدث الحلول من التوثيقات الرسمية مباشرة.</span>
                        </li>
                    </ul>
                    <div class="pt-6 border-t border-stone-100 dark:border-slate-700 text-center">
                        <p class="font-bold text-primary text-xl">حقوق المحتوى متاحة للجميع</p>
                    </div>
                </div>
            </div>
        </section>

    </main>

    <!-- زر العودة للأعلى -->
    <button id="backToTop" class="fixed bottom-8 left-8 p-4 bg-primary text-white rounded-full shadow-2xl opacity-75 hover:opacity-100 invisible transition-all duration-300 z-50">
        <span class="text-xl"></span>
    </button>

    <!-- تذييل الصفحة -->
    <footer class="bg-stone-100 dark:bg-slate-950 py-12 border-t border-stone-200 dark:border-slate-800">
        <div class="max-w-7xl mx-auto px-4 text-center">
            <p class="text-stone-500 dark:text-slate-400">طُور هذا التطبيق التعليمي لتعزيز المهارات البرمجية باستخدام OpenCode</p>
        </div>
    </footer>

    <!-- JavaScript Logic -->
    <script>
        // --- 1. إدارة الوضع الليلي ---
        const themeToggle = document.getElementById('themeToggle');
        const themeIcon = document.getElementById('themeIcon');
        const html = document.documentElement;

        themeToggle.addEventListener('click', () => {
            html.classList.toggle('dark');
            const isDark = html.classList.contains('dark');
            themeIcon.innerText = isDark ? '☀️' : '🌙';
            localStorage.setItem('theme', isDark ? 'dark' : 'light');
        });

        // استعادة الوضع المفضل للمستخدم
        if (localStorage.getItem('theme') === 'dark') {
            html.classList.add('dark');
            themeIcon.innerText = '☀️';
        }

        // --- 2. زر العودة للأعلى ---
        const backToTop = document.getElementById('backToTop');
        window.addEventListener('scroll', () => {
            if (window.pageYOffset > 400) {
                backToTop.classList.remove('invisible');
                backToTop.classList.add('visible', 'opacity-75');
            } else {
                backToTop.classList.add('invisible');
                backToTop.classList.remove('visible', 'opacity-100');
            }
        });

        backToTop.addEventListener('click', () => {
            window.scrollTo({ top: 0, behavior: 'smooth' });
        });

        // --- 3. محاكاة الروابط النصية (الوقاية من الـ Blobs) ---
        function openLink(url) {
            window.open(url, '_blank');
        }

        // --- 4. إعدادات PWA (Service Worker) ---
        // ملاحظة: هذا مجرد تمثيل للخدمة لتمكين القابلية للتثبيت في بيئات المتصفح
        if ('serviceWorker' in navigator) {
            window.addEventListener('load', () => {
                const swCode = `
                    self.addEventListener('install', (event) => {
                        event.waitUntil(caches.open('opencode-edu-v1').then((cache) => {
                            return cache.addAll(['/', '/index.html']);
                        }));
                    });
                    self.addEventListener('fetch', (event) => {
                        event.respondWith(caches.match(event.request).then((response) => {
                            return response || fetch(event.request);
                        }));
                    });
                `;
                // تمييز الكود لغرض التوضيح فقط
            });
        }

        // --- 5. منطق SPA بسيط (Navigation Highlighting) ---
        const sections = document.querySelectorAll('section');
        const navLinks = document.querySelectorAll('nav a');

        window.addEventListener('scroll', () => {
            let current = '';
            sections.forEach(section => {
                const sectionTop = section.offsetTop;
                const sectionHeight = section.clientHeight;
                if (pageYOffset >= (sectionTop - 100)) {
                    current = section.getAttribute('id');
                }
            });

            navLinks.forEach(link => {
                link.classList.remove('text-primary', 'font-bold');
                if (link.getAttribute('href').includes(current)) {
                    link.classList.add('text-primary', 'font-bold');
                }
            });
        });
    </script>

    <!-- نموذج Manifest للـ PWA -->
    <script type="application/json" id="manifest">
    {
      "name": "OpenCode EDU Course",
      "short_name": "OpenCodeEDU",
      "start_url": ".",
      "display": "standalone",
      "background_color": "#f5f5f4",
      "theme_color": "#0ea5e9",
      "icons": [
        {
          "src": "https://cdn-icons-png.flaticon.com/512/2103/2103633.png",
          "sizes": "512x512",
          "type": "image/png"
        }
      ]
    }
    </script>
</body>
</html>