divmagic Make design
SimpleNowLiveFunMatterSimple
تصميم أدوات الربط للتطبيقات طويلة التشغيل: دليل مطور الواجهة الأمامية لوكلاء التطوير المدعومين بالذكاء الاصطناعي
Blogs›التطوير بمساعدة الذكاء الاصطناعي›تصميم أدوات الربط للتطبيقات طويلة التشغيل: دليل مطور الواجهة الأمامية لوكلاء التطوير المدعومين بالذكاء الاصطناعي
التطوير بمساعدة الذكاء الاصطناعي

تصميم أدوات الربط للتطبيقات طويلة التشغيل: دليل مطور الواجهة الأمامية لوكلاء التطوير المدعومين بالذكاء الاصطناعي

تصميم الحزام لتطوير التطبيقات طويلة الأمد: وكلاء الذكاء الاصطناعي، سير عمل الواجهة الأمامية، ومستقبل هندسة واجهات المستخدم

نشر فريق الهندسة في أنثروبيك مؤخرًا استكشافًا متعمقًا لما يسمونه "تصميم الحزام"، وهو الأنماط المعمارية والأدوات التي تسمح لوكلاء الذكاء الاصطناعي بالعمل بشكل موثوق على مدى فترات زمنية ممتدة. لا يتعلق الأمر فقط بإبقاء نافذة طرفية مفتوحة. بل يتعلق ببناء بيئة منظمة حيث يمكن لنموذج الذكاء الاصطناعي التخطيط والتنفيذ والمراقبة والتعافي عبر ساعات أو حتى أيام من العمل التطويري المستمر. بالنسبة لمطوري الواجهة الأمامية، فإن الآثار عميقة. وكيل طويل الأمد يمكنه بناء لوحة تحكم معقدة بتقنية React بشكل تدريجي، أو إعادة هيكلة قاعدة أكواد CSS قديمة، أو ضبط واجهة المستخدم بشكل متكرر بناءً على ملاحظات المستخدم، يمثل تحولًا نموذجيًا.

لكن الوكيل القوي لا يكون فعالًا إلا بقدر فعالية البيئة التي يعمل فيها. هذا هو جوهر تصميم الحزام. فكر فيه كالسقالات حول موقع البناء. الوكيل هو العامل الماهر، لكن بدون سقالات ثابتة، ومواصفات واضحة، ووصول منظم للأدوات، وإدارة للحالة، وحلقات استرداد الأخطاء، لا يمكنه بناء ناطحة سحاب. بالكاد يمكنه تجميع كوخ صغير. في هذا المنشور، سنقوم بتحليل النتائج الرئيسية لأنثروبيك، وترجمتها إلى سير عمل عملي للواجهة الأمامية، وإظهار كيف أن أدوات مثل DivMagic وClaude Code وأحزمة المحطة الطرفية المنظمة تعيد بالفعل تشكيل كيفية بناء تطبيقات الويب طويلة الأمد والإنتاجية.

يكشف بحث أنثروبيك أن التحدي الأساسي ليس "ذكاء" النموذج بل قدرة الوكيل على الحفاظ على خطة متماسكة وقابلة للتنفيذ عبر آلاف الاستدعاءات المتسلسلة للأدوات وعمليات التحقق البشرية المتعددة.

تشريح حزام التطوير: أكثر من مجرد صندوق حماية

عندما يتحدث مهندسو أنثروبيك عن "الحزام"، فإنهم يشيرون إلى حلقة تم تصميمها بعناية. الوكيل موجود داخل بيئة معزولة، مع إمكانية الوصول إلى محطة طرفية، ونظام ملفات، ومجموعة محددة من الأدوات. لا يكتب الكود فقط؛ بل يكتب الكود، ويجري الاختبارات، ويحلل الأخطاء، ويقرأ السجلات، ثم يكتب المزيد من الكود. الحزام هو ما يحمل حالة هذه المحادثة المستمرة بين النموذج والنظام. بالنسبة لمطور الواجهة الأمامية، قد يكون المعادل هو بيئة Node.js مع خادم تطوير قيد التشغيل، وأداة أتمتة متصفح مثل Playwright، وخط أنابيب استبدال الوحدات الساخنة. الحزام يحافظ على تماسك كل شيء.

تسلط أنثروبيك الضوء على أن التسلسل غير المنظم والعشوائي للمطالبات يفشل بشكل كارثي في المهام طويلة الأمد. ينسى النموذج القيود، ويختلق مخرجات الأدوات، أو يعلق في حلقات متكررة. يخفف الحزام المصمم جيدًا من ذلك من خلال عدة آليات: خطط عمل منظمة مخزنة في ملف TODO.md ، وارتكازات قائمة على نقاط التفتيش، وبوابات ردود فعل صريحة مع تدخل بشري في الحلقة. هذا يحول وكيل الذكاء الاصطناعي من مجرد روبوت محادثة بسيط إلى شريك تطويري مرن يمكنه التنقل بشكل مستقل في مشروع واجهة أمامية معقد متعدد الملفات لساعات.

الخصائص الرئيسية للحزام الفعال

يحدد بحث أنثروبيك العديد من الخصائص غير القابلة للتفاوض لحزام على مستوى الإنتاج. تترجم هذه الخصائص مباشرة إلى أفضل الممارسات لأدوات الواجهة الأمامية:

  • الملاحظة: يجب أن يكون الوكيل قادرًا على رؤية عواقب أفعاله. في سياق الواجهة الأمامية، يعني هذا لقطات شاشة للمتصفح بدون واجهة رسومية، وسجلات وحدة التحكم، وتدفقات طلبات الشبكة، كلها تُعرض مرة أخرى على سياق النموذج.
  • الحالة: يحافظ الحزام على نظام ملفات وذاكرة دائمة. بالنسبة لمشروع واجهة مستخدم، هذا هو مستودع Git. يمكن للوكيل إنشاء فروع، والارتكاز، والتراجع.
  • نمطية الأدوات: كل أداة (مثل write_file، run_terminal_command، take_browser_screenshot) لها نطاق واضح ومحدد، مما يقلل من الغموض.
  • حلقات الاسترداد: عندما يفشل بناء أو لا يمر تأكيد اختبار، يغذي الحزام رسالة الخطأ تلك بالضبط إلى الوكيل، وليس رسالة غامضة مثل "حدث خطأ ما".

Bar chart showing that task completion rates on long-running tasks increase dramatically from 15% with no harness to 95% with a full harness and specialized UI tools.

Claude Code والحزام الطرفي: سير عمل جديد للواجهة الأمامية

Claude Code من أنثروبيك هو مثال رئيسي على تصميم الحزام قيد التنفيذ. إنه وكيل يعيش مباشرة في المحطة الطرفية الخاصة بك، ومجهز بمجموعة واسعة من الأدوات. بالنسبة لمطوري الواجهة الأمامية، هذا هو تغيير قواعد اللعبة. يمكنك أن تطلب من Claude Code بدء مشروع Vite جديد، وتثبيت Tailwind CSS، وبناء مكتبة مكونات، وتنفيذ واجهة سحب وإفلات معقدة، كل ذلك بينما يقوم بشكل متكرر بإصلاح أخطاء TypeScript والتكيف مع ملاحظات التصميم الخاصة بك. يوفر الحزام الطرفي البيئة المستقرة؛ يوفر Claude Code العمالة الذكية والمستمرة.

programming, computer, environment, syntax highlight, program, computing, display, hacker, html, web design, development, developer, language, css, code, software, coding, website, programmer, programming, hacker, language, code, code, code, code, code, software, software, coding, coding, coding

ضع في اعتبارك سيناريو شائعًا: بناء لوحة بيانات مع رسوم بيانية تفاعلية متعددة. بدون وكيل، ستقضي ساعات في كتابة الكود الأساسي، وتوصيل Chart.js أو D3، وتصحيح تحويلات البيانات. مع وكيل طويل الأمد في حزام مناسب، يمكنك تحديد التصميم عالي المستوى ومخطط البيانات، وتركه يعمل. يكتب المكونات، ويشغل خادم التطوير، ويكتشف أي حالات تحميل عالقة، ويعيد هيكلة منطق جلب البيانات. المفتاح هو أن الحزام يمنعه من الخروج عن المسار أثناء المحور الحتمي في منتصف التطوير عندما تطلب التغيير من مخطط شريطي إلى مخطط مبعثر.

لمنع تضخم السياق، استخدم خطاف ارتكاز ملخص. بعد جزء كبير من العمل، اطلب من الوكيل تلخيص تغييراته في رسالة ارتكاز Git. يمكن بعد ذلك حقن هذا الملخص في المطالبات المستقبلية للحفاظ على توافق الوكيل.

ترجمة تصميم الحزام إلى بنية SPA للواجهة الأمامية

لا تنطبق مبادئ تصميم الحزام فقط على البنية التحتية لوكلاء الذكاء الاصطناعي. بل تتوافق بشكل مدهش مع بنية الواجهة الأمامية الحديثة، خاصة لتطبيقات الصفحة الواحدة (SPA) التي تحتاج إلى البقاء ذات حالة وسريعة الاستجابة خلال جلسات المستخدم الطويلة. فكر في أداة تصميم ويب متطورة مثل Figma أو لوحة بيانات في الوقت الفعلي. هذه هي تطبيقات طويلة الأمد في حد ذاتها، وتحتاج إلى "حزام" داخلي خاص بها لإدارة الحالة والآثار الجانبية وحدود الأخطاء.

"بنية التطبيق المتينة هي حزام لنية المستخدم. تحافظ على تماسك سير عمله حتى أثناء تنقله عبر مئات التحولات الحالة في جلسة واحدة."

في تطبيق React أو Vue، يترجم هذا الحزام إلى عدة تطبيقات ملموسة. StateManager مثل Redux Toolkit أو Zustand يوفر الحالة الدائمة والقابلة للملاحظة. React Query أو SWR يعملان كحزام تصريحي لحالة الخادم، وإدارة التخزين المؤقت، والتحديثات في الخلفية، ودورات stale-while-revalidate. تعمل حدود الأخطاء كحلقات استرداد، حيث تلتقط مكونًا متعطلًا وتستعيد واجهة المستخدم إلى حالة عمل دون تحديث الصفحة بأكملها. يصبح هيكل التطبيق نفسه حزامًا لمنطق عملك، مما يضمن الاستقرار عبر تفاعل مستخدم طويل الأمد.

الحزام على مستوى المكون: تغليف التعقيد

تؤكد أنثروبيك على نمطية الأدوات. في بيئة المكونات، هذا هو مبدأ المسؤولية الفردية والعزل. المكون المصمم جيدًا هو أداة ضيقة النطاق يمكن للإطار التطبيقي الأكبر تنسيقها. يستقبل المكون الخصائص (مدخلات منظمة)، ويُخرج النتائج (قابلية الملاحظة)، ويُصدر الأحداث (استدعاءات أدوات إلى الإطار الأصلي). من خلال الحفاظ على نمطية المكونات ووضوح إدارة حالتها، تمنع النوع من التدهور السياقي الذي تلاحظه أنثروبيك في وكلاء الذكاء الاصطناعي سيئي التسخير، ولكن في واجهة المستخدم الخاصة بك. لا ينبغي أن يتشابك المكون مع منطق المصادقة. الإطار، طبقة إدارة الحالة في تطبيقك، تحافظ على تعاونهما بأمان مع مرور الوقت.

عنق الزجاجة في واجهة المستخدم: عندما يكون الإطار مثاليًا، لكن التصميم ليس كذلك

حتى مع وجود إطار تطويري مثالي البنية ووكيل ذكاء اصطناعي لا يكل، يبقى عنق زجاجة واحد في الواجهة الأمامية حاسمًا: ترجمة تصميم واجهة المستخدم المرغوب إلى كود جاهز للإنتاج. يمكن للوكيل كتابة TypeScript منطقي وخالٍ من الأخطاء، لكن إذا أمضى ساعات في محاولة مضنية لإعادة إنتاج تدرج لوني معقد، أو شريط تمرير مخصص، أو نموذج Figma الخاص بالمصمم بكسل بكسل، فإن مكاسب الإنتاجية للإطار تتبخر. هذا هو المكان الذي يحتاج فيه المطورون إلى طريقة لاختصار عملية تحويل واجهة المستخدم، وتغذية الإطار بنقاط بداية فورية ودقيقة بدلاً من الأوصاف البصرية الغامضة.

hacking, cyber, blackandwhite, crime, security, internet, computer, hacker, virus, data, network, technology, password, digital, online, attack, protection, hack, laptop, secure, safety, web, information, code, criminal, phishing, business, man, binary, access, malware, firewall, lock, thief, fraud, privacy, system, encryption, black business, black computer, black virus, black laptop, black data, black online, black network, black internet, black digital, black security, black company, black information, black web, black businessman, black code, black safety, black coding, hacking, cyber, hacker, hacker, hacker, hacker, hacker, code, fraud

هذه هي بالضبط الفجوة التي يسدها DivMagic . بينما يوفر إطار طرفية مثل Claude Code الحلقة الذكية لبناء منطق التطبيق، يعمل DivMagic كأداة دقيقة للطبقة البصرية. من خلال السماح لك بنسخ أي عنصر واجهة مستخدم فورًا من أي موقع ويب، واستخراج CSS المحسوب بدقة، وبنية HTML، ورموز التصميم الخاصة به، فإنه يزيل الجزء الأكثر مللاً واستنزافًا للوقت في مشاريع الواجهة الأمامية طويلة الأمد. لم تعد بحاجة لوصف ظل بلغة طبيعية وتأمل أن يفسره الوكيل بشكل صحيح. تقوم بنسخه، ولصقه في مشروعك، وتترك الوكيل يدمجه داخل الإطار الأكبر.

Pie chart illustrating that 40% of a frontend developer's time is still spent on manual CSS styling, highlighting a remaining bottleneck even with AI code assistants.

DivMagic: الأداة المفقودة في سير عمل إطار الذكاء الاصطناعي

في إطار التطوير على طريقة أنثروبيك، أدوات الوكيل هي كل شيء. تتضمن مجموعة الأدوات النموذجية read_file و write_file و run_shell و web_fetch. ما تفتقر إليه هذه الأدوات هو طريقة موثوقة لتفسير القصد التصميمي البصري إلى كود. يمكن للإنسان أن يقول "اجعلها تبدو مثل نموذج الدفع في Stripe"، لكن الوكيل، حتى مع قدرات الرؤية، يكافح لإنتاج نسخة مخلصة وجاهزة للإنتاج من لقطة شاشة فقط. غالبًا ما يكون CSS الناتج منتفخًا، أو غير صحيح دلاليًا، أو يستخدم تباعدًا خاطئًا.

من خلال دمج DivMagic في الإطار كأداة جديدة أو كخطوة معالجة مسبقة يدوية، يتحول سير العمل. يحدد المطور عنصر واجهة مستخدم مرجعي، زر، نافذة منبثقة، بطاقة تسعير. بنقرة واحدة في المتصفح، يلتقط DivMagic أنماطه الحية والمحسوبة. يمكن بعد ذلك حفظ CSS النقي والمعزول مباشرة في ملف المكون في المشروع. يتم بعدها توجيه وكيل الذكاء الاصطناعي، الذي يعمل ضمن إطار الطرفية: "استخدم PricingCard.module.css المحفوظ حديثًا للتصميم. ادمجه مع منطق الفوترة الديناميكي الذي كتبناه للتو." يتولى الوكيل التكامل والحالة ومنطق إمكانية الوصول، ولكن الحمض النووي البصري يتم تقديمه بشكل مثالي من البداية.

يؤدي الجمع بين إطار ذكاء اصطناعي قوي مثل Claude Code وأداة استنساخ واجهة مستخدم دقيقة مثل DivMagic إلى تأثير إنتاجية مركب. لم يعد الإطار مثقلًا بمهام التفسير البصري، مما يسمح له بقضاء مساحة سياقه على مشاكل الهندسة والمنطق المعقدة.

بناء لوحة تحكم طويلة الأمد: تنسيق عملي

دعنا نستعرض مثالًا ملموسًا. افترض أنك بحاجة لبناء لوحة تحكم تحليلات طويلة الأمد لمنصة إنترنت الأشياء. تحتاج لوحة التحكم إلى خلاصات بيانات في الوقت الفعلي، وتصورات بيانات معقدة، ولوحة إدارة مستخدمين متطورة. هذه مهمة تستغرق عدة أيام. إطارك هو حاوية Docker تحتوي على Node.js ومشروع Vite React و Claude Code. سيكون سير عملك:

source, code, software, computer, programming language, data center, programming, server, program, digital, internet, data exchange, computer science, cyber, development, developer, code, code, software, software, software, software, software, data center, data center, programming, programming, programming, server, server, computer science, computer science, cyber, cyber

  1. تهيئة الإطار: إعداد مستودع Git، تثبيت التبعيات، وتكوين خطافات الاختبار والفحص. إنشاء ملف TODO.md سيديره Claude Code بشكل مستقل.
  2. بذر الهوية البصرية: بدلاً من وصف شكل لوحة التحكم، تستخدم DivMagic لنسخ سلسلة من المكونات المصقولة من عدة لوحات تحكم SaaS راقية، شريط جانبي، بطاقة إحصائية، جدول بيانات، وشريط تصفية. تقوم بلصقها في وحدات CSS منفصلة في مشروعك.
  3. تفويض المنطق للوكيل: توجيه الوكيل: "لقد أضفت مكونات مصممة. قم بتنفيذ خلاصة بيانات في الوقت الفعلي باستخدام WebSockets في useWebSocket. املأ مكونات StatCard ببيانات حية من واجهة برمجة التطبيقات الوهمية لدينا. تأكد من أن التنقل في الشريط الجانبي يحدث منطقة المحتوى الرئيسية."
  4. التكرار والمراقبة: يكتب الوكيل الخطافات، ويتصل بتيار البيانات، ويقوم فورًا بتشغيل خادم التطوير. يستخدم Playwright لأخذ لقطة شاشة، ويحلل وحدة التحكم بحثًا عن الأخطاء، ويعيد هيكلة كود معالجة البيانات الخاص به عندما يكتشف إغلاقات قديمة.
  5. اللمسات النهائية: مع ثبات المنطق، تعود إلى واجهة المستخدم. اطلب من الوكيل إضافة زر تبديل الوضع الليلي يؤثر على جميع المكونات المنسوخة بواسطة DivMagic. يقوم بتعديل متغيرات CSS وسياق الحالة الذي حددته. الدورة بأكملها، من المفهوم إلى نموذج أولي يبدو إنتاجيًا ومتصلًا بالبيانات، تستغرق ساعات بدلاً من أيام.

تصميم الإطار لمرونة الواجهة الأمامية

التطبيق طويل الأمد، سواء كان مدفوعًا بالذكاء الاصطناعي أو مستخدم بشري، هو فقط بقدر مرونة معالجة الأخطاء فيه. تناقش أنثروبيك "مشكلة إعادة التعيين"، حيث يفقد الوكيل طويل الأمد سياقه ويجب أن يبدأ من جديد. في تطبيق الواجهة الأمامية، هذا مشابه لخطأ JavaScript غير ممسوك يتسبب في تعطل جزء من واجهة المستخدم وإجبار المستخدم على تحديث الصفحة، مما يفقد عمله غير المحفوظ. تقدم فلسفة تصميم الإطار علاجًا: حدود أخطاء دقيقة، ونقاط تفتيش للحالة، وحلقات استرداد ذاتية الشفاء.

تنفيذ إطار تطويري يعكس هذه المفاهيم يعني كتابة كود يمكن التنبؤ به عند الفشل. بالنسبة لمطوري React، فإن تغليف كل قسم رئيسي من الميزات في مع واجهة مستخدم احتياطية هو نمط إطاري. استمرار شريحة من حالة التطبيق الحرجة في localStorage أو في عامل خدمة هو نمط آخر. يمكن للتطبيق "إعادة تشغيل" شجرة مكونات دون فقدان بيانات النموذج الخاصة بالمستخدم أو سياق التنقل. هذا هو نفس المبدأ الذي يسمح لوكيل الذكاء الاصطناعي باستئناف جلسة برمجة بعد خطأ في الشبكة: الإطار حافظ على الحالة التي كانت مهمة.

اختبار الإطار نفسه

يقوم فريق Anthropic باختبار ضغط لأدوات الربط الخاصة بالوكيل (agent harnesses) عن طريق محاكاة فشل الشبكة، وإعادة تشغيل الوكيل في منتصف المهمة، وإتلاف الملفات الوسيطة. يمكن لمطوري الواجهة الأمامية تطبيق نفس العقلية على عملية ضمان الجودة الخاصة بهم. لا تختبر فقط ما إذا كان المكون يُعرض بشكل صحيح. اختبر ما إذا كان يمكنه التعافي عند فشل مصدر بياناته. قم بحقن مؤشر null في خاصية (prop)، وحاكي قطع اتصال WebSocket، وتأكد من أن "الأداة الرابطة" (harness) (وهي إدارة الحالة وهندسة حدود الأخطاء الخاصة بك) توجه واجهة المستخدم إلى حالة قابلة للاستخدام دون إعادة تحميل كاملة للصفحة. تضمن أداة مثل DivMagic أن حتى واجهة المستخدم الاحتياطية، ربما بطاقة خطأ مصممة بشكل جميل، تكون بنفس جودة بقية التطبيق، لأنه يمكنك التقاط وتكييف أي نمط تصميم للفشل الأنيق من تطبيق إنتاجي قوي على الفور.

"إن مرونة الوكيل الذكي لا تُقاس بمدى نجاحه، بل بمدى أناقته في التعافي. وينطبق الشيء نفسه على كود الواجهة الأمامية الذي ينتجه."

مستقبل أدوات الربط للواجهة الأمامية: التنسيق متعدد الوكلاء

يشير بحث Anthropic إلى مستقبل قريب حيث يتعاون العديد من الوكلاء المتخصصين داخل أداة ربط مشتركة. قد يكون أحد الوكلاء خبيرًا في نظام تصميم CSS، وآخر خبيرًا في منطق TypeScript، وثالثًا مدققًا للاختبار وإمكانية الوصول. سيشتركون جميعًا في مستودع Git ويتنسقون من خلال لوحة مهام مشتركة. بالنسبة لمشروع واجهة أمامية طويل الأمد، هذه هي النهاية المنطقية لتصميم الأداة الرابطة. لن يكون لديك نافذة سياق واحدة مثقلة؛ بل سيكون لديك وكيل مخصص ضيق التركيز لكل طبقة من الطبقات.

في مثل هذا الإعداد متعدد الوكلاء، تصبح أداة مثل DivMagic هي "موفر السياق البصري" المخصص. وكيل التصميم لا يُنشئ CSS من موجه نصي؛ بل يتلقى نسخة طبق الأصل مباشرة من واجهة مستخدم مستهدفة. مهمته بعد ذلك هي تعميم تلك النسخة بذكاء إلى نظام تصميم، واستخراج رموز الألوان، وبناء نظام متغيرات، وضمان إمكانية الوصول. يقوم بتوصيل هذه الأنماط إلى وكيل المنطق، الذي يربطها ببيانات حقيقية. هذا النوع من التنسيق، المبني على مبادئ تصميم الأداة الرابطة، سيحدد الجيل القادم من هندسة الواجهة الأمامية بمساعدة الذكاء الاصطناعي.

الخلاصة: ابنِ الأداة الرابطة، ثم ابنِ التطبيق

إن الغوص العميق لـ Anthropic في تصميم الأداة الرابطة هو قراءة ضرورية لأي مطور واجهة أمامية جاد بشأن الاستفادة من الذكاء الاصطناعي في عمله اليومي. الدرس واضح: توقف عن محاولة العثور على الموجه الشامل المثالي. ابدأ في بناء بيئة مثالية. أداة ربط طرفية موثوقة مع تخطيط منظم، واسترداد الأخطاء، واستدعاءات أدوات حتمية ستضاعف فعالية أي نموذج تضعه بداخلها. عندما تقوم بعد ذلك بتجهيز تلك الأداة الرابطة بأدوات متخصصة ودقيقة مثل DivMagic لحل التحدي الفريد لتنفيذ واجهة المستخدم، فإنك تنشئ خط أنابيب تطوير أسرع وأكثر مرونة وقادر على معالجة عمليات بناء تطبيقات معقدة وطويلة الأمد حقًا.

مستقبل تطوير الواجهة الأمامية لا يتعلق باستبدال المطورين. بل يتعلق بتصميم أداة ربط فعالة لأدوات الذكاء الاصطناعي الخاصة بنا بحيث تنتقل حرفة هندسة واجهة المستخدم من دفع البكسل إلى التنسيق عالي المستوى، وتحديد السلوك والحالة والمرونة. الأداة الرابطة هي بيئة التطوير المتكاملة (IDE) الجديدة.

ابدأ الإنشاء باستخدام DivMagic اليوم

انضم إلى أكثر من 10000 من المطورين والمصممين وأصحاب الأعمال لنسخ التعليمات البرمجية من أي موقع ويب واستخدامها في مشاريعهم الخاصة.

Get DivMagic for 42% off

Limited time deal for 22:45