import React, { useState, useEffect, useRef } from 'react'; import { Terminal, Code, Layout, Cpu, Layers, Moon, Sun, ChevronRight, ChevronLeft, Send, Play, Save, Download, Copy, X, Settings, User, LogOut, History, FileUp, Mic, MicOff, Volume2, VolumeX, Image, BarChart3, Sparkles, Loader, AlertCircle, CheckCircle, Info, HelpCircle, Plus, Trash2, Folder } from 'lucide-react'; // Mock API keys - in a real application, these would be securely stored const API_KEYS = { openai: "sk-...", // OpenAI API key placeholder deepseek: "dsk-...", // DeepSeek API key placeholder minimax: "mm-...", // MiniMax API key placeholder }; export default function M1AIWebsite() { // Core state const [darkMode, setDarkMode] = useState(false); const [activeService, setActiveService] = useState('chatgpt'); const [activeTool, setActiveTool] = useState('chat'); const [sidebarOpen, setSidebarOpen] = useState(true); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [notification, setNotification] = useState(null); const [isAuthenticated, setIsAuthenticated] = useState(true); // For demo purposes const [showSettings, setShowSettings] = useState(false); const [showUserMenu, setShowUserMenu] = useState(false); // Chat state const [prompt, setPrompt] = useState(''); const [conversations, setConversations] = useState({ chatgpt: [{ role: 'system', content: 'مرحبًا بك في ChatGPT. كيف يمكنني مساعدتك اليوم؟' }], deepseek: [{ role: 'system', content: 'مرحبًا بك في DeepSeek. كيف يمكنني مساعدتك اليوم؟' }], minimax: [{ role: 'system', content: 'مرحبًا بك في MiniMax. كيف يمكنني مساعدتك اليوم؟' }] }); const [isRecording, setIsRecording] = useState(false); const [isMuted, setIsMuted] = useState(false); const [savedConversations, setSavedConversations] = useState([ { id: 1, title: 'محادثة عن تطوير الويب', service: 'chatgpt', date: '2023-06-15' }, { id: 2, title: 'تحليل البيانات', service: 'deepseek', date: '2023-06-18' }, { id: 3, title: 'إنشاء تطبيق موبايل', service: 'minimax', date: '2023-06-20' } ]); const [showConversationHistory, setShowConversationHistory] = useState(false); // Code editor state const [code, setCode] = useState('// اكتب الكود الخاص بك هنا\nconsole.log("مرحبًا بالعالم!");'); const [codeOutput, setCodeOutput] = useState(''); const [codeLanguage, setCodeLanguage] = useState('javascript'); const [savedSnippets, setSavedSnippets] = useState([ { id: 1, title: 'مثال Hello World', language: 'javascript', code: 'console.log("مرحبًا بالعالم!");' }, { id: 2, title: 'دالة فيبوناتشي', language: 'python', code: 'def fibonacci(n):\n a, b = 0, 1\n for _ in range(n):\n yield a\n a, b = b, a + b\n\nprint(list(fibonacci(10)))' } ]); // Website builder state const [websiteDescription, setWebsiteDescription] = useState(''); const [generatedWebsite, setGeneratedWebsite] = useState(null); const [websiteTemplates, setWebsiteTemplates] = useState([ { id: 1, name: 'متجر إلكتروني', category: 'تجارة' }, { id: 2, name: 'مدونة شخصية', category: 'محتوى' }, { id: 3, name: 'موقع شركة', category: 'أعمال' }, { id: 4, name: 'منصة تعليمية', category: 'تعليم' } ]); const [selectedTemplate, setSelectedTemplate] = useState(null); const [savedWebsites, setSavedWebsites] = useState([ { id: 1, title: 'متجر الإلكترونيات', template: 'متجر إلكتروني', date: '2023-06-22' }, { id: 2, title: 'مدونتي الشخصية', template: 'مدونة شخصية', date: '2023-06-25' } ]); // Dashboard state const [usageStats, setUsageStats] = useState({ apiCalls: { chatgpt: 45, deepseek: 23, minimax: 12 }, tokensUsed: { chatgpt: 12500, deepseek: 8700, minimax: 3200 }, websitesGenerated: 8, codeExecutions: 34 }); // Settings state const [settings, setSettings] = useState({ apiKeys: { ...API_KEYS }, theme: 'auto', language: 'ar', fontSize: 'medium', autoSave: true, voiceEnabled: true }); // Refs const chatContainerRef = useRef(null); const fileInputRef = useRef(null); useEffect(() => { // Check system preference for dark mode if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { setDarkMode(true); } // Scroll chat to bottom when messages change if (chatContainerRef.current) { chatContainerRef.current.scrollTop = chatContainerRef.current.scrollHeight; } }, [conversations]); const toggleDarkMode = () => { setDarkMode(!darkMode); }; const showNotification = (message, type = 'info', duration = 3000) => { setNotification({ message, type }); setTimeout(() => setNotification(null), duration); }; // API call to OpenAI const callOpenAI = async (messages) => { try { setLoading(true); setError(null); // In a real application, this would be an actual API call // const response = await fetch('https://api.openai.com/v1/chat/completions', { // method: 'POST', // headers: { // 'Content-Type': 'application/json', // 'Authorization': `Bearer ${settings.apiKeys.openai}` // }, // body: JSON.stringify({ // model: 'gpt-4', // messages: messages, // temperature: 0.7 // }) // }); // if (!response.ok) throw new Error('فشل الاتصال بـ OpenAI API'); // const data = await response.json(); // return data.choices[0].message.content; // Simulating API response for demo await new Promise(resolve => setTimeout(resolve, 1000)); return "هذه استجابة من نموذج ChatGPT. في التطبيق الحقيقي، سيتم استدعاء OpenAI API باستخدام المفتاح المخزن في إعدادات التطبيق. يمكنك تخصيص سلوك النموذج وإعداداته من خلال لوحة الإعدادات."; } catch (err) { setError(err.message || 'حدث خطأ أثناء الاتصال بـ OpenAI API'); throw err; } finally { setLoading(false); } }; // API call to DeepSeek const callDeepSeek = async (messages) => { try { setLoading(true); setError(null); // In a real application, this would be an actual API call // const response = await fetch('https://api.deepseek.com/v1/chat', { // method: 'POST', // headers: { // 'Content-Type': 'application/json', // 'Authorization': `Bearer ${settings.apiKeys.deepseek}` // }, // body: JSON.stringify({ // messages: messages, // model: 'deepseek-chat', // temperature: 0.7 // }) // }); // if (!response.ok) throw new Error('فشل الاتصال بـ DeepSeek API'); // const data = await response.json(); // return data.response; // Simulating API response for demo await new Promise(resolve => setTimeout(resolve, 1200)); return "هذه استجابة من نموذج DeepSeek. في التطبيق الحقيقي، سيتم استدعاء DeepSeek API باستخدام المفتاح المخزن في إعدادات التطبيق. نموذج DeepSeek يتميز بقدرات متقدمة في فهم اللغة الطبيعية والتعلم العميق."; } catch (err) { setError(err.message || 'حدث خطأ أثناء الاتصال بـ DeepSeek API'); throw err; } finally { setLoading(false); } }; // API call to MiniMax const callMiniMax = async (messages) => { try { setLoading(true); setError(null); // In a real application, this would be an actual API call // const response = await fetch('https://api.minimax.chat/v1/text/generation', { // method: 'POST', // headers: { // 'Content-Type': 'application/json', // 'Authorization': `Bearer ${settings.apiKeys.minimax}` // }, // body: JSON.stringify({ // messages: messages, // model: 'minimax-pro', // temperature: 0.7 // }) // }); // if (!response.ok) throw new Error('فشل الاتصال بـ MiniMax API'); // const data = await response.json(); // return data.reply; // Simulating API response for demo await new Promise(resolve => setTimeout(resolve, 800)); return "هذه استجابة من نموذج MiniMax. في التطبيق الحقيقي، سيتم استدعاء MiniMax API باستخدام المفتاح المخزن في إعدادات التطبيق. نموذج MiniMax يتميز بسرعة الاستجابة وكفاءة استخدام الموارد."; } catch (err) { setError(err.message || 'حدث خطأ أثناء الاتصال بـ MiniMax API'); throw err; } finally { setLoading(false); } }; const handleSendMessage = async () => { if (!prompt.trim()) return; const newMessage = { role: 'user', content: prompt }; const updatedConversations = { ...conversations }; updatedConversations[activeService] = [...updatedConversations[activeService], newMessage]; setConversations(updatedConversations); setPrompt(''); try { let response; if (activeService === 'chatgpt') { response = await callOpenAI(updatedConversations.chatgpt); } else if (activeService === 'deepseek') { response = await callDeepSeek(updatedConversations.deepseek); } else { response = await callMiniMax(updatedConversations.minimax); } const aiResponse = { role: 'system', content: response }; updatedConversations[activeService] = [...updatedConversations[activeService], aiResponse]; setConversations(updatedConversations); // Update usage stats const updatedStats = { ...usageStats }; updatedStats.apiCalls[activeService] += 1; updatedStats.tokensUsed[activeService] += Math.floor(prompt.length * 1.3) + Math.floor(response.length * 1.3); setUsageStats(updatedStats); // Auto-save conversation if enabled if (settings.autoSave && updatedConversations[activeService].length > 3) { const title = updatedConversations[activeService][1].content.slice(0, 30) + '...'; const newSavedConversation = { id: savedConversations.length + 1, title, service: activeService, date: new Date().toISOString().split('T')[0] }; setSavedConversations([...savedConversations, newSavedConversation]); showNotification('تم حفظ المحادثة تلقائيًا', 'success'); } } catch (err) { showNotification(`خطأ: ${err.message}`, 'error'); } }; const handleStartVoiceRecording = () => { if (!settings.voiceEnabled) { showNotification('الرجاء تمكين ميزة الصوت في الإعدادات أولاً', 'warning'); return; } setIsRecording(true); // In a real application, this would use the Web Speech API showNotification('جاري الاستماع...', 'info'); // Simulate voice recognition after 3 seconds setTimeout(() => { setPrompt(prompt + 'هذا نص تم التعرف عليه من الصوت '); setIsRecording(false); showNotification('تم التعرف على الصوت بنجاح', 'success'); }, 3000); }; const handleStopVoiceRecording = () => { setIsRecording(false); showNotification('تم إيقاف التسجيل الصوتي', 'info'); }; const handleToggleMute = () => { setIsMuted(!isMuted); showNotification(isMuted ? 'تم تشغيل الصوت' : 'تم كتم الصوت', 'info'); }; const handleRunCode = async () => { setLoading(true); setError(null); try { // In a real application, this would send the code to a secure execution environment // const response = await fetch('https://api.m1ai.com/execute-code', { // method: 'POST', // headers: { 'Content-Type': 'application/json' }, // body: JSON.stringify({ code, language: codeLanguage }) // }); // if (!response.ok) throw new Error('فشل تنفيذ الكود'); // const data = await response.json(); // setCodeOutput(data.output); // Simulate code execution await new Promise(resolve => setTimeout(resolve, 1500)); // Update usage stats const updatedStats = { ...usageStats }; updatedStats.codeExecutions += 1; setUsageStats(updatedStats); if (codeLanguage === 'javascript') { try { // Safely evaluate JavaScript in a controlled environment // This is just for demo purposes - in a real app, never eval user code directly const output = []; const mockConsole = { log: (...args) => output.push(args.join(' ')), error: (...args) => output.push(`Error: ${args.join(' ')}`), warn: (...args) => output.push(`Warning: ${args.join(' ')}`) }; // Create a safe evaluation context const safeEval = new Function('console', ` try { ${code} return { success: true, output: [] }; } catch (error) { return { success: false, error: error.message }; } `); const result = safeEval(mockConsole); if (result.success) { setCodeOutput(output.join('\n') || 'تم تنفيذ الكود بنجاح (بدون مخرجات)'); showNotification('تم تنفيذ الكود بنجاح', 'success'); } else { setCodeOutput(`خطأ: ${result.error}`); showNotification('حدث خطأ أثناء تنفيذ الكود', 'error'); } } catch (err) { setCodeOutput(`خطأ في تنفيذ الكود: ${err.message}`); showNotification('حدث خطأ أثناء تنفيذ الكود', 'error'); } } else if (codeLanguage === 'python') { setCodeOutput('مخرجات تنفيذ كود Python (محاكاة):\n>>> ' + code.split('\n')[0] + '\n' + (code.includes('print') ? 'مرحبًا بالعالم!' : 'تم تنفيذ الكود بنجاح')); showNotification('تم تنفيذ كود Python بنجاح', 'success'); } else { setCodeOutput(`تم تنفيذ كود ${codeLanguage} بنجاح (محاكاة)`); showNotification(`تم تنفيذ كود ${codeLanguage} بنجاح`, 'success'); } } catch (err) { setError(err.message || 'حدث خطأ أثناء تنفيذ الكود'); setCodeOutput(`خطأ: ${err.message}`); showNotification('حدث خطأ أثناء تنفيذ الكود', 'error'); } finally { setLoading(false); } }; const handleSaveCodeSnippet = () => { if (!code.trim()) { showNotification('لا يمكن حفظ مقتطف كود فارغ', 'warning'); return; } const title = prompt('أدخل عنوانًا لمقتطف الكود:') || 'مقتطف كود بدون عنوان'; const newSnippet = { id: savedSnippets.length + 1, title, language: codeLanguage, code }; setSavedSnippets([...savedSnippets, newSnippet]); showNotification('تم حفظ مقتطف الكود بنجاح', 'success'); }; const handleFileUpload = (event) => { const file = event.target.files[0]; if (!file) return; const reader = new FileReader(); reader.onload = (e) => { try { setCode(e.target.result); showNotification(`تم تحميل الملف ${file.name} بنجاح`, 'success'); // Try to detect language from file extension const extension = file.name.split('.').pop().toLowerCase(); const languageMap = { 'js': 'javascript', 'py': 'python', 'html': 'html', 'css': 'css', 'java': 'java', 'cpp': 'cpp', 'c': 'c', 'php': 'php', 'rb': 'ruby', 'go': 'go', 'rs': 'rust', 'ts': 'typescript' }; if (languageMap[extension]) { setCodeLanguage(languageMap[extension]); } } catch (err) { showNotification('فشل قراءة الملف', 'error'); } }; reader.readAsText(file); }; const handleGenerateWebsite = async () => { if (!websiteDescription.trim() && !selectedTemplate) { showNotification('الرجاء إدخال وصف للموقع أو اختيار قالب', 'warning'); return; } setLoading(true); setError(null); try { // In a real application, this would call an API to generate the website // const response = await fetch('https://api.m1ai.com/generate-website', { // method: 'POST', // headers: { 'Content-Type': 'application/json' }, // body: JSON.stringify({ // description: websiteDescription, // template: selectedTemplate ? selectedTemplate.id : null // }) // }); // if (!response.ok) throw new Error('فشل إنشاء الموقع'); // const data = await response.json(); // setGeneratedWebsite(data.website); // Simulate website generation await new Promise(resolve => setTimeout(resolve, 2000)); // Update usage stats const updatedStats = { ...usageStats }; updatedStats.websitesGenerated += 1; setUsageStats(updatedStats); // Generate HTML based on description or template let templateHTML = ''; let templateCSS = ''; if (selectedTemplate) { if (selectedTemplate.id === 1) { // E-commerce template templateHTML = generateEcommerceTemplate(); } else if (selectedTemplate.id === 2) { // Blog template templateHTML = generateBlogTemplate(); } else if (selectedTemplate.id === 3) { // Business template templateHTML = generateBusinessTemplate(); } else if (selectedTemplate.id === 4) { // Education template templateHTML = generateEducationTemplate(); } } else { // Generate based on description templateHTML = generateWebsiteFromDescription(websiteDescription); } setGeneratedWebsite({ html: templateHTML, css: templateCSS, js: '' }); showNotification('تم إنشاء الموقع بنجاح', 'success'); } catch (err) { setError(err.message || 'حدث خطأ أثناء إنشاء الموقع'); showNotification('حدث خطأ أثناء إنشاء الموقع', 'error'); } finally { setLoading(false); } }; const handleSaveWebsite = () => { if (!generatedWebsite) { showNotification('لا يوجد موقع لحفظه', 'warning'); return; } const title = prompt('أدخل عنوانًا للموقع:') || 'موقع بدون عنوان'; const newWebsite = { id: savedWebsites.length + 1, title, template: selectedTemplate ? selectedTemplate.name : 'مخصص', date: new Date().toISOString().split('T')[0] }; setSavedWebsites([...savedWebsites, newWebsite]); showNotification('تم حفظ الموقع بنجاح', 'success'); }; const handleDownloadWebsite = () => { if (!generatedWebsite) { showNotification('لا يوجد موقع لتنزيله', 'warning'); return; } // In a real application, this would create a zip file with HTML, CSS, and JS files const blob = new Blob([generatedWebsite.html], { type: 'text/html' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'website.html'; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); showNotification('تم تنزيل الموقع بنجاح', 'success'); }; const handleUpdateSettings = (newSettings) => { setSettings({ ...settings, ...newSettings }); showNotification('تم تحديث الإعدادات بنجاح', 'success'); setShowSettings(false); }; const handleLogout = () => { // In a real application, this would handle the logout process setIsAuthenticated(false); showNotification('تم تسجيل الخروج بنجاح', 'info'); }; // Website template generators const generateEcommerceTemplate = () => { return ` متجر إلكتروني

تسوق بثقة مع أفضل المنتجات

اكتشف تشكيلة واسعة من المنتجات عالية الجودة بأسعار تنافسية

تسوق الآن

منتجات مميزة

سماعات لاسلكية

199 ريال

أضف إلى السلة

ساعة ذكية

299 ريال

أضف إلى السلة

حقيبة ظهر

149 ريال

أضف إلى السلة

كاميرا رقمية

599 ريال

أضف إلى السلة
🚚

شحن سريع

توصيل لجميع أنحاء المملكة خلال 2-3 أيام عمل

🔒

دفع آمن

طرق دفع متعددة وآمنة لراحتك

↩️

استرجاع سهل

استرجاع المنتجات خلال 14 يوم من الشراء

`; }; const generateBlogTemplate = () => { return ` مدونتي الشخصية

مدونتي الشخصية

مساحة لمشاركة أفكاري وتجاربي في مجال التكنولوجيا والتطوير

استكشف المقالات

أحدث المقالات

`; }; const generateBusinessTemplate = () => { return ` شركة التقنية المتطورة

حلول تقنية مبتكرة لنمو أعمالك

نقدم خدمات تكنولوجية متكاملة تساعد الشركات على النمو والتطور في العصر الرقمي

فريق العمل

خدماتنا

نقدم مجموعة متنوعة من الخدمات التقنية المتكاملة لتلبية احتياجات عملائنا

💻

تطوير المواقع والتطبيقات

نقوم بتصميم وتطوير مواقع الويب وتطبيقات الجوال بأحدث التقنيات لتوفير تجربة مستخدم مميزة.

🔍

تحسين محركات البحث

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

📊

التسويق الرقمي

نقدم استراتيجيات تسويقية متكاملة عبر مختلف المنصات الرقمية لزيادة الوعي بعلامتك التجارية.

🛡️

أمن المعلومات

نوفر حلول أمنية متطورة لحماية بياناتك ومعلوماتك من التهديدات الإلكترونية.

☁️

خدمات الحوسبة السحابية

نساعدك على الانتقال إلى السحابة وإدارة بنيتك التحتية بكفاءة وأمان.

📱

استشارات تقنية

نقدم استشارات متخصصة لمساعدتك على اتخاذ القرارات التقنية الصحيحة لنمو أعمالك.

فريق العمل

من نحن

شركة التقنية المتطورة هي شركة رائدة في مجال تقديم الحلول التقنية المتكاملة للشركات والمؤسسات. تأسست الشركة عام 2010 على يد مجموعة من الخبراء في مجال تكنولوجيا المعلومات.

نؤمن بأن التكنولوجيا هي المحرك الأساسي للتطور والنمو في عصرنا الحالي، ولذلك نسعى دائمًا لتقديم أحدث الحلول التقنية التي تساعد عملائنا على تحقيق أهدافهم وتطوير أعمالهم.

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

500+
عميل راضٍ
1000+
مشروع مكتمل
50+
خبير تقني
10+
سنوات خبرة

آراء العملاء

نفخر بثقة عملائنا وشهاداتهم حول خدماتنا

"تعاملنا مع شركة التقنية المتطورة كان تجربة رائعة. قاموا بتطوير موقعنا الإلكتروني بشكل احترافي وبجودة عالية، مما ساهم في زيادة مبيعاتنا بنسبة 40% خلال الأشهر الستة الأولى."

أحمد محمد

المدير التنفيذي، شركة الأفق للتجارة

"استفدنا كثيرًا من خدمات التسويق الرقمي التي قدمتها شركة التقنية المتطورة. فريق العمل محترف ومتعاون، والنتائج كانت أفضل مما توقعنا."

سارة عبدالله

مديرة التسويق، مؤسسة النور التعليمية

هل أنت مستعد لتطوير أعمالك؟

تواصل معنا اليوم للحصول على استشارة مجانية ومعرفة كيف يمكننا مساعدتك

`; }; const generateEducationTemplate = () => { return ` أكاديمية التعلم الذكي

تعلم مهارات المستقبل مع خبراء متميزين

منصة تعليمية متكاملة تقدم دورات احترافية في مختلف المجالات التقنية والإدارية

طلاب يتعلمون

دوراتنا المميزة

اختر من بين مجموعة متنوعة من الدورات التعليمية عالية الجودة

تطوير الويب

تطوير الويب الشامل من الصفر إلى الاحتراف

12 أسبوع 36 درس مبتدئ
499 ريال
التسجيل الآن
الذكاء الاصطناعي

أساسيات الذكاء الاصطناعي وتعلم الآلة

8 أسابيع 24 درس متوسط
699 ريال
التسجيل الآن
إدارة الأعمال

إدارة المشاريع الاحترافية PMP

10 أسابيع 30 درس متقدم
899 ريال
التسجيل الآن
عرض جميع الدورات

لماذا تختار أكاديميتنا؟

نقدم تجربة تعليمية فريدة ومميزة لطلابنا

👨‍🏫

مدربون خبراء

يقدم الدورات نخبة من المدربين المتخصصين ذوي الخبرة العملية الواسعة في مجالاتهم.

🎓

شهادات معتمدة

احصل على شهادات معتمدة تعزز من سيرتك الذاتية وتزيد من فرصك الوظيفية.

💻

تعلم تفاعلي

منصة تعليمية تفاعلية تتيح لك التعلم بأسلوب عملي من خلال المشاريع والتطبيقات.

🔄

محتوى متجدد

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

فريق التدريب

تعرف على نخبة المدربين المتميزين في أكاديميتنا

د. أحمد محمد

خبير تطوير الويب

مطور ويب محترف مع خبرة أكثر من 10 سنوات في تطوير تطبيقات الويب وتدريس البرمجة.

م. سارة عبدالله

متخصصة في الذكاء الاصطناعي

باحثة ومتخصصة في مجال الذكاء الاصطناعي وتعلم الآلة مع خبرة في العديد من المشاريع البحثية.

أ. خالد العمري

خبير إدارة المشاريع

مستشار ومدرب معتمد في إدارة المشاريع مع خبرة أكثر من 15 عامًا في قيادة المشاريع الكبرى.

آراء طلابنا

اطلع على تجارب طلابنا السابقين مع دوراتنا التعليمية

"استفدت كثيرًا من دورة تطوير الويب الشامل. المحتوى كان منظم بشكل رائع والمدرب كان متمكن جدًا من المادة العلمية. أنصح بشدة بهذه الدورة لكل من يرغب في تعلم تطوير الويب."

محمد السالم

مطور ويب

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

نورة الأحمد

مهندسة برمجيات

10,000+
طالب
50+
دورة تدريبية
25+
مدرب خبير
95%
نسبة رضا الطلاب

ابدأ رحلة التعلم اليوم

اشترك في نشرتنا البريدية للحصول على آخر الأخبار والعروض الخاصة