/** * Offline-First IndexedDB Database Engine for SiteClone Pro v20 */ import { WebsiteClone, WebsiteMonitor, EncryptedKey, EmailAccount, BuiltSite, PlatformAccount, AutomationWorkflow, AuditLogItem, CloudPlatform, AppSettings } from "../types"; const DB_NAME = "SiteCloneProDB"; const DB_VERSION = 1; let useFallback = false; const fallbackSettings: Record = {}; function loadFromLocalStorage(storeName: string): any[] { try { const data = localStorage.getItem(`siteclone_fallback_${storeName}`); if (data) { const parsed = JSON.parse(data); if (Array.isArray(parsed)) return parsed; } } catch (e) { console.warn("localStorage is not available:", e); } if (storeName === "platforms") { return [...PRE_POPULATED_PLATFORMS]; } return []; } function saveToLocalStorage(storeName: string, data: any[]) { try { localStorage.setItem(`siteclone_fallback_${storeName}`, JSON.stringify(data)); } catch (e) { console.warn("localStorage is not available for writing:", e); } } export function initIndexedDB(): Promise { return new Promise((resolve, reject) => { if (typeof window === "undefined" || !window.indexedDB) { console.warn("IndexedDB not supported, falling back."); useFallback = true; reject("IndexedDB not supported"); return; } try { const request = window.indexedDB.open(DB_NAME, DB_VERSION); request.onerror = (event) => { console.warn("Database failed to open, falling back.", event); useFallback = true; reject(request.error || new Error("Failed to open IndexedDB")); }; request.onsuccess = (event) => { resolve(request.result); }; request.onupgradeneeded = (event) => { const db = request.result; // 1. Clones Store if (!db.objectStoreNames.contains("clones")) { const store = db.createObjectStore("clones", { keyPath: "id" }); store.createIndex("url", "url", { unique: false }); store.createIndex("createdAt", "createdAt", { unique: false }); } // 2. Monitors Store if (!db.objectStoreNames.contains("monitors")) { const store = db.createObjectStore("monitors", { keyPath: "id" }); store.createIndex("url", "url", { unique: false }); store.createIndex("status", "status", { unique: false }); } // 3. Encrypted Keys Store if (!db.objectStoreNames.contains("keys")) { const store = db.createObjectStore("keys", { keyPath: "id" }); store.createIndex("name", "name", { unique: false }); store.createIndex("status", "status", { unique: false }); } // 4. Emails Store if (!db.objectStoreNames.contains("emails")) { const store = db.createObjectStore("emails", { keyPath: "id" }); store.createIndex("provider", "provider", { unique: false }); store.createIndex("email", "email", { unique: false }); store.createIndex("status", "status", { unique: false }); } // 5. Sites Store if (!db.objectStoreNames.contains("sites")) { const store = db.createObjectStore("sites", { keyPath: "id" }); store.createIndex("name", "name", { unique: false }); store.createIndex("platform", "platform", { unique: false }); store.createIndex("status", "status", { unique: false }); } // 6. Platform Accounts Store if (!db.objectStoreNames.contains("accounts")) { const store = db.createObjectStore("accounts", { keyPath: "id" }); store.createIndex("platform", "platform", { unique: false }); store.createIndex("status", "status", { unique: false }); } // 7. Workflows Store if (!db.objectStoreNames.contains("workflows")) { const store = db.createObjectStore("workflows", { keyPath: "id" }); store.createIndex("name", "name", { unique: false }); store.createIndex("status", "status", { unique: false }); } // 8. Platforms Info Store if (!db.objectStoreNames.contains("platforms")) { const store = db.createObjectStore("platforms", { keyPath: "id" }); store.createIndex("category", "category", { unique: false }); store.createIndex("name", "name", { unique: false }); } // 9. Audit Logs Store if (!db.objectStoreNames.contains("auditLog")) { const store = db.createObjectStore("auditLog", { keyPath: "id" }); store.createIndex("timestamp", "timestamp", { unique: false }); store.createIndex("action", "action", { unique: false }); } // 10. Settings Store if (!db.objectStoreNames.contains("settings")) { db.createObjectStore("settings"); } }; } catch (e) { console.warn("Caught IndexedDB constructor error, falling back:", e); useFallback = true; reject(e); } }); } // Low level general operations helper export class DBService { static async getDB(): Promise { if (useFallback) { throw new Error("Using fallback storage"); } return initIndexedDB(); } static async getAll(storeName: string): Promise { if (useFallback) { return loadFromLocalStorage(storeName) as T[]; } try { const db = await this.getDB(); return new Promise((resolve, reject) => { const transaction = db.transaction(storeName, "readonly"); const store = transaction.objectStore(transaction.objectStoreNames[0] || storeName); const request = store.getAll(); request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } catch (e) { console.warn(`Error in DBService.getAll for ${storeName}, falling back:`, e); useFallback = true; return loadFromLocalStorage(storeName) as T[]; } } static async get(storeName: string, id: string): Promise { if (useFallback) { const list = loadFromLocalStorage(storeName); return list.find((item: any) => item.id === id) as T | undefined; } try { const db = await this.getDB(); return new Promise((resolve, reject) => { const transaction = db.transaction(storeName, "readonly"); const store = transaction.objectStore(storeName); const request = store.get(id); request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } catch (e) { console.warn(`Error in DBService.get for ${storeName}, falling back:`, e); useFallback = true; const list = loadFromLocalStorage(storeName); return list.find((item: any) => item.id === id) as T | undefined; } } static async put(storeName: string, item: T & { id: string }): Promise { if (useFallback) { const list = loadFromLocalStorage(storeName); const index = list.findIndex((i: any) => i.id === item.id); if (index >= 0) { list[index] = item; } else { list.push(item); } saveToLocalStorage(storeName, list); return; } try { const db = await this.getDB(); return new Promise((resolve, reject) => { const transaction = db.transaction(storeName, "readwrite"); const store = transaction.objectStore(storeName); const request = store.put(item); request.onsuccess = () => resolve(); request.onerror = () => reject(request.error); }); } catch (e) { console.warn(`Error in DBService.put for ${storeName}, falling back:`, e); useFallback = true; const list = loadFromLocalStorage(storeName); const index = list.findIndex((i: any) => i.id === item.id); if (index >= 0) { list[index] = item; } else { list.push(item); } saveToLocalStorage(storeName, list); } } static async delete(storeName: string, id: string): Promise { if (useFallback) { const list = loadFromLocalStorage(storeName); const filtered = list.filter((item: any) => item.id !== id); saveToLocalStorage(storeName, filtered); return; } try { const db = await this.getDB(); return new Promise((resolve, reject) => { const transaction = db.transaction(storeName, "readwrite"); const store = transaction.objectStore(storeName); const request = store.delete(id); request.onsuccess = () => resolve(); request.onerror = () => reject(request.error); }); } catch (e) { console.warn(`Error in DBService.delete for ${storeName}, falling back:`, e); useFallback = true; const list = loadFromLocalStorage(storeName); const filtered = list.filter((item: any) => item.id !== id); saveToLocalStorage(storeName, filtered); } } static async clearStore(storeName: string): Promise { if (useFallback) { saveToLocalStorage(storeName, storeName === "platforms" ? [...PRE_POPULATED_PLATFORMS] : []); return; } try { const db = await this.getDB(); return new Promise((resolve, reject) => { const transaction = db.transaction(storeName, "readwrite"); const store = transaction.objectStore(storeName); const request = store.clear(); request.onsuccess = () => resolve(); request.onerror = () => reject(request.error); }); } catch (e) { console.warn(`Error in DBService.clearStore for ${storeName}, falling back:`, e); useFallback = true; saveToLocalStorage(storeName, storeName === "platforms" ? [...PRE_POPULATED_PLATFORMS] : []); } } // Settings specific helpers static async getSetting(key: string): Promise { if (useFallback) { try { const val = localStorage.getItem(`siteclone_fallback_settings_${key}`); if (val) return JSON.parse(val) as T; } catch (e) { return fallbackSettings[key]; } return undefined; } try { const db = await this.getDB(); return new Promise((resolve) => { const transaction = db.transaction("settings", "readonly"); const store = transaction.objectStore("settings"); const request = store.get(key); request.onsuccess = () => resolve(request.result); request.onerror = () => resolve(undefined); }); } catch (e) { console.warn(`Error in DBService.getSetting for ${key}, falling back:`, e); useFallback = true; try { const val = localStorage.getItem(`siteclone_fallback_settings_${key}`); if (val) return JSON.parse(val) as T; } catch { return fallbackSettings[key]; } return undefined; } } static async putSetting(key: string, value: T): Promise { if (useFallback) { try { localStorage.setItem(`siteclone_fallback_settings_${key}`, JSON.stringify(value)); } catch (e) { fallbackSettings[key] = value; } return; } try { const db = await this.getDB(); return new Promise((resolve, reject) => { const transaction = db.transaction("settings", "readwrite"); const store = transaction.objectStore("settings"); const request = store.put(value, key); request.onsuccess = () => resolve(); request.onerror = () => reject(request.error); }); } catch (e) { console.warn(`Error in DBService.putSetting for ${key}, falling back:`, e); useFallback = true; try { localStorage.setItem(`siteclone_fallback_settings_${key}`, JSON.stringify(value)); } catch { fallbackSettings[key] = value; } } } } // Pre-populated 50+ Premium Platforms list export const PRE_POPULATED_PLATFORMS: CloudPlatform[] = [ // 1. AI Coding & Assist { id: "copilot", name: "GitHub Copilot", category: "ai", url: "https://github.com", consoleUrl: "https://github.com/settings/copilot", description: "مساعد التكويد الذكي الأكثر شهرة لكتابة وتوقع التعليمات البرمجية", freeLimit: "تجريبي مجاني 30 يوم" }, { id: "cursor", name: "Cursor AI", category: "ai", url: "https://cursor.sh", consoleUrl: "https://cursor.sh", description: "محرر أكواد ذكي متفرع من VS Code يدعم الذكاء الاصطناعي بشكل كامل", freeLimit: "50 طلب gpt-4 مجاناً شهرياً" }, { id: "windsurf", name: "Windsurf (Codeium)", category: "ai", url: "https://codeium.com/windsurf", consoleUrl: "https://codeium.com/windsurf", description: "أول بيئة تطوير تفاعلية تدمج الوكيل الذكي ومساعد التكويد الفوري", freeLimit: "استخدام مجاني فردي غير محدود" }, { id: "trae", name: "Trae", category: "ai", url: "https://trae.sh", consoleUrl: "https://trae.sh", description: "منصة التكويد الذكية الصاعدة لبناء النماذج وتصميم المشاريع فورياً", freeLimit: "مستوى مجاني سخي للغاية" }, { id: "pieces", name: "Pieces for Developers", category: "ai", url: "https://pieces.app", consoleUrl: "https://pieces.app", description: "إدارة وحفظ لقطات الأكواد وتنظيمها باستخدام الذكاء الاصطناعي التوليدي", freeLimit: "متاح مجاناً للمطورين للأبد" }, { id: "cody", name: "Sourcegraph Cody", category: "ai", url: "https://sourcegraph.com/cody", consoleUrl: "https://sourcegraph.com/cody", description: "مساعد قراءة وفهم وتصحيح الأكواد الضخمة والمستودعات في ثوانٍ", freeLimit: "مستوى مجاني بمحددات مريحة" }, { id: "tabnine", name: "Tabnine", category: "ai", url: "https://tabnine.com", consoleUrl: "https://tabnine.com", description: "أقدم محركات التنبؤ المبرمجة بالتعليمات البرمجية مع حماية للخصوصية", freeLimit: "مستوى برونزي مجاني للأبد" }, { id: "codewhisperer", name: "Amazon CodeWhisperer", category: "ai", url: "https://aws.amazon.com/codewhisperer", consoleUrl: "https://console.aws.amazon.com", description: "مساعد تكويد ذكي مُدرب بالكامل داخل سحابة أمازون ويب سيرفيسز AWS", freeLimit: "مجاني بالكامل للاستخدام الفردي" }, { id: "jetbrains_ai", name: "JetBrains AI Assistant", category: "ai", url: "https://jetbrains.com/ai", consoleUrl: "https://jetbrains.com/ai", description: "مساعد البرمجة الذكي المدمج في جميع بيئات JetBrains الشهيرة", freeLimit: "فترة تجريبية مجانية 7 أيام" }, { id: "replit_agent", name: "Replit Agent", category: "ai", url: "https://replit.com", consoleUrl: "https://replit.com", description: "وكيل ذكي مذهل يبني تطبيقات كاملة ويشغلها لك من الصفر", freeLimit: "رصيد تجريبي شهري متاح" }, { id: "claude_code", name: "Claude Code", category: "ai", url: "https://anthropic.com/claude", consoleUrl: "https://console.anthropic.com", description: "أداة تكويد سريعة عبر الكوماند لاين مباشرة من أنثروبيك", freeLimit: "تجريبي مجاني بمحددات مرنة" }, { id: "aider", name: "Aider AI", category: "ai", url: "https://aider.chat", consoleUrl: "https://aider.chat", description: "مساعد تكويد يعمل في مبنى الكوماند لاين مباشرة للربط مع مستودع Git", freeLimit: "أداة مفتوحة المصدر مجانية بالكامل" }, { id: "continue_dev", name: "Continue.dev", category: "ai", url: "https://continue.dev", consoleUrl: "https://continue.dev", description: "امتداد ذكي مفتوح المصدر لدمج أي نموذج لغوي (LLM) مع VS Code", freeLimit: "مفتوح المصدر ومجاني 100%" }, { id: "cline", name: "Cline", category: "ai", url: "https://github.com/cline/cline", consoleUrl: "https://github.com/cline/cline", description: "الوكيل البرمجي الذكي المذهل لتنفيذ المهام الصعبة في VS Code تلقائيًا", freeLimit: "مفتوح المصدر ومتاح مجاناً كلياً" }, { id: "roo_code", name: "Roo Code", category: "ai", url: "https://roocode.com", consoleUrl: "https://roocode.com", description: "شوكة مطورة من وكلاء التكويد تمنح تحكماً هائلاً في قراءة الملفات وبنائها", freeLimit: "مجاني بالكامل ومفتوح المصدر" }, { id: "pear_ai", name: "PearAI", category: "ai", url: "https://trypear.ai", consoleUrl: "https://trypear.ai", description: "محرر أكواد مفتوح المصدر مصمم لإتاحة دمج الذكاء الاصطناعي بسهولة", freeLimit: "مستوى تأسيسي مجاني" }, { id: "supermaven", name: "Supermaven", category: "ai", url: "https://supermaven.com", consoleUrl: "https://supermaven.com", description: "أسرع أداة ذكية لتوقع الأكواد بنافذة سياق عملاقة تبلغ 300 ألف توكن", freeLimit: "مجاني بالكامل للاستخدام الفردي الأساسي" }, { id: "poolside", name: "Poolside", category: "ai", url: "https://poolside.ai", consoleUrl: "https://poolside.ai", description: "منصة ذكاء اصطناعي واعدة ومصممة خصيصاً للبرمجيات وتوليد الأكواد", freeLimit: "تجريبي للمطورين الأوائل" }, { id: "blackbox_ai", name: "Blackbox AI", category: "ai", url: "https://blackbox.ai", consoleUrl: "https://blackbox.ai", description: "البحث الذكي الفوري وتوليد وتحويل الأكواد بمجرد الكتابة والدردشة", freeLimit: "استخدام مجاني يومي سخي جداً" }, { id: "codeium", name: "Codeium", category: "ai", url: "https://codeium.com", consoleUrl: "https://codeium.com", description: "مساعد برمجة ذكي مجاني يغطي أكثر من 70 لغة مع ميزات هائلة", freeLimit: "مجاني بالكامل للأفراد للأبد" }, // 2. Cloud IDEs { id: "idx", name: "Project IDX (Google)", category: "ide", url: "https://idx.dev", consoleUrl: "https://idx.google.com", description: "بيئة غوغل البرمجية السحابية السريعة والحديثة المدعومة بالذكاء لتطبيقات الويب والموبايل", freeLimit: "مجاني للأبد بحساب Google" }, { id: "codespaces", name: "GitHub Codespaces", category: "ide", url: "https://github.com/features/codespaces", consoleUrl: "https://github.com/codespaces", description: "بيئة تطوير سحابية متكاملة تماماً ومهيأة للتشغيل الفوري من مستودعك", freeLimit: "60 ساعة شهرياً مجاناً" }, { id: "codesandbox", name: "CodeSandbox", category: "ide", url: "https://codesandbox.io", consoleUrl: "https://codesandbox.io/dashboard", description: "بيئة متكاملة لفرق تطوير مشاريع الويب التفاعلية الحديثة", freeLimit: "3 مشاريع سحابية مجانية" }, { id: "stackblitz", name: "StackBlitz", category: "ide", url: "https://stackblitz.com", consoleUrl: "https://stackblitz.com", description: "محرر سريع يدعم تقنية WebContainers لتشغيل Node.js مباشرة في متصفحك", freeLimit: "متاح مجاناً للمشاريع العامة بلا حدود" }, { id: "replit", name: "Replit", category: "ide", url: "https://replit.com", consoleUrl: "https://replit.com/~", description: "بيئة تطوير تفاعلية متكاملة شهيرة للبرمجة والمشاركة الفورية بالتكنولوجيا", freeLimit: "مشروع سحابي نشط مجاناً" }, { id: "glitch", name: "Glitch", category: "ide", url: "https://glitch.com", consoleUrl: "https://glitch.com/dashboard", description: "منصة ممتعة لتصميم وتعديل ونشر تطبيقات Node.js بنقرة واحدة وتشاركية", freeLimit: "استضافة وتكامل تطبيقات عامة مجاناً" }, { id: "gitpod", name: "Gitpod", category: "ide", url: "https://gitpod.io", consoleUrl: "https://gitpod.io/workspaces", description: "تطوير مشروعاتك داخل بيئات عمل معزولة ومؤتمتة بالكامل عبر الويب", freeLimit: "50 ساعة شهرياً مجاناً" }, { id: "bolt_new", name: "Bolt.new", category: "ide", url: "https://bolt.new", consoleUrl: "https://bolt.new", description: "محرر ويب ثوري من StackBlitz يقوم ببناء، تثبيت، وتشغيل تطبيقات الويب كاملة", freeLimit: "رصيد تجريبي سخي للتوليد" }, { id: "lovable", name: "Lovable.dev", category: "ide", url: "https://lovable.dev", consoleUrl: "https://lovable.dev", description: "منصة ويب ذكية لتصميم واجهات تطبيقات متكاملة بلغة واضحة دون جهد", freeLimit: "توليد مجاني محدود في الاشتراك الأساسي" }, { id: "tempo", name: "Tempo Labs", category: "ide", url: "https://tempolabs.com", consoleUrl: "https://tempolabs.com", description: "محرر أكواد مرئي يسمح بتعديل وتطوير مكونات React والواجهات بسرعة", freeLimit: "نسخة تجريبية للمطورين مجاناً" }, { id: "same_dev", name: "Same.dev", category: "ide", url: "https://same.dev", consoleUrl: "https://same.dev", description: "بيئات تطوير سحابية مطابقة تماماً للمواصفات الحقيقية للإنتاج والتوزيع", freeLimit: "مستوى مجاني محدود" }, { id: "base44", name: "Base44", category: "ide", url: "https://base44.com", consoleUrl: "https://base44.com", description: "بناء تطبيقات الويب والواجهات الخلفية بسرعة وكفاءة عبر أدوات سحابية متطورة", freeLimit: "تجريبي مجاناً بلا بطاقة ائتمان" }, { id: "v0ByVercel", name: "v0 by Vercel", category: "ide", url: "https://v0.dev", consoleUrl: "https://v0.dev", description: "محرك لتصميم صفحات ومكونات واجهات الويب المبنية على ريكت و تيلوند", freeLimit: "رصيد متجدد مجاناً شهرياً" }, // 3. AI Platforms { id: "openai", name: "OpenAI Developer Platform", category: "ai", url: "https://openai.com", consoleUrl: "https://platform.openai.com", description: "الحصول على مفاتيح API لنماذج الذكاء الاصطناعي GPT-4o و gpt-3.5", freeLimit: "رصيد 5 دولار مجاني" }, { id: "gemini", name: "Google AI Studio", category: "ai", url: "https://ai.studio", consoleUrl: "https://aistudio.google.com", description: "الوصول المباشر لنماذج غوغل الحديثة Gemini 1.5 Pro & Flash مجاناً", freeLimit: "15 طلب بالدقيقة مجاني بالكامل" }, { id: "kimi", name: "Kimi Web", category: "ai", url: "https://kimi.moonshot.cn", consoleUrl: "https://kimi.moonshot.cn", description: "مساعد ذكاء اصطناعي رائد في معالجة وفهم الملفات والنصوص الطويلة والمعقدة", freeLimit: "استخدام مجاني لخدمة الكيمي" }, { id: "anthropic", name: "Anthropic Console", category: "ai", url: "https://anthropic.com", consoleUrl: "https://console.anthropic.com", description: "بوابة المطورين لنماذج Claude 3.5 Sonnet و Opus للمطورين", freeLimit: "مستوى برونزي تجريبي" }, { id: "perplexity", name: "Perplexity AI", category: "ai", url: "https://perplexity.ai", consoleUrl: "https://perplexity.ai", description: "محرك البحث الذكي الهجين القائم على المعالجة اللغوية للنماذج المتقدمة", freeLimit: "عمليات بحث ذكية يومية غير محدودة" }, { id: "grok", name: "Grok (xAI)", category: "ai", url: "https://x.ai", consoleUrl: "https://console.x.ai", description: "مساعد ذكاء متصل بالزمن الحقيقي بالبيانات على منصة X الشهيرة", freeLimit: "متاح لمشتركي المنصة والمطورين للاختبار" }, { id: "mistral", name: "Mistral AI Console", category: "ai", url: "https://mistral.ai", consoleUrl: "https://console.mistral.ai", description: "منصة فرنسية رائدة تتيح نماذج ذكاء اصطناعي مفتوحة المصدر وفائقة السرعة", freeLimit: "مستوى استخدام تجريبي محدود" }, { id: "cohere", name: "Cohere", category: "ai", url: "https://cohere.com", consoleUrl: "https://dashboard.cohere.com", description: "نماذج لغوية متخصصة في التصنيف والتلخيص والبحث الدلالي الفائق", freeLimit: "رصيد مجاني سخي للغاية للمشروعات الفردية" }, { id: "huggingface", name: "Hugging Face Spaces", category: "ai", url: "https://huggingface.co", consoleUrl: "https://huggingface.co/spaces", description: "مجتمع نماذج الذكاء لرفع وتجريب واختيار آلاف النماذج المفتوحة", freeLimit: "استضافة النماذج مجاناً بالكامل" }, { id: "replicate", name: "Replicate Platform", category: "ai", url: "https://replicate.com", consoleUrl: "https://replicate.com/explore", description: "بوابة التشغيل والاستدعاء الفوري لنماذج الذكاء عبر الـ Cloud API", freeLimit: "دفع بالثانية مع تجربة مجانية ممتازة" }, { id: "langchain", name: "LangChain (Smith)", category: "ai", url: "https://langchain.com", consoleUrl: "https://smith.langchain.com", description: "منصة المراقبة وبناء السلاسل البرمجية لوكلاء الذكاء الاصطناعي الحديثة", freeLimit: "مستويات تتبع مجانية للأبد للمطورين" }, { id: "llamaindex", name: "LlamaIndex Cloud", category: "ai", url: "https://llamaindex.ai", consoleUrl: "https://cloud.llamaindex.ai", description: "تنظيم وهيكلة وتوجيه قواعد البيانات الخاصة للربط مع نماذج الذكاء", freeLimit: "مجاني لمشروعاتك الفردية والتطوير" }, // 4. Databases { id: "supabase", name: "Supabase", category: "database", url: "https://supabase.com", consoleUrl: "https://supabase.com/dashboard", description: "بديل فايربيس المذهل مبني على بنية PostgreSQL مرنة وقوية", freeLimit: "مشروعين مجانيين بالكامل 500MB للأبد" }, { id: "neon", name: "Neon Postgres", category: "database", url: "https://neon.tech", consoleUrl: "https://console.neon.tech", description: "قاعدة بيانات بوستجرس سريعة في السحاب تدعم فروع الأكواد الفورية والتوسع التلقائي", freeLimit: "قادمة مع خادم مجاني 0.5 CPU" }, { id: "planetscale", name: "PlanetScale", category: "database", url: "https://planetscale.com", consoleUrl: "https://app.planetscale.com", description: "قاعدة بيانات MySQL هائلة الأداء قائمة على تقنية توزيع البيانات Vitess", freeLimit: "تجريبي مجاناً للأعضاء الجدد" }, { id: "turso", name: "Turso SQLite", category: "database", url: "https://turso.tech", consoleUrl: "https://turso.tech", description: "قواعد بيانات SQLite موزعة في السحاب لسرعة خيالية في التطبيقات الطرفية", freeLimit: "500 قاعدة بيانات في خطة الهواة مجاناً" }, { id: "xata", name: "Xata database", category: "database", url: "https://xata.io", consoleUrl: "https://app.xata.io", description: "قاعدة بيانات ويب سريعة تدمج قدرات البحث النصي الكامل ونماذج الذكاء", freeLimit: "خطة تجريبية 15 جيجا مجاناً" }, { id: "convex", name: "Convex Cloud", category: "database", url: "https://convex.dev", consoleUrl: "https://dashboard.convex.dev", description: "قاعدة بيانات ديناميكية وتفاعلية ممتازة لتطبيقات الويب النشطة بالزمن الحقيقي", freeLimit: "سخية كلياً للبدايات" }, { id: "fauna", name: "FaunaDB", category: "database", url: "https://fauna.com", consoleUrl: "https://dashboard.fauna.com", description: "قاعدة بيانات مرنة ومأمونة جغرافياً ومرتبطة بلغة استعلام ذكية", freeLimit: "خطط تطوير مجانية للأبد مريحة" }, { id: "surrealdb", name: "SurrealDB Cloud", category: "database", url: "https://surrealdb.com", consoleUrl: "https://surrealdb.cloud", description: "قاعدة بيانات عابرة للمواصفات والنوعية تدمج البحث الرسومي والوثائقي", freeLimit: "خطط تطوير برونزية ممتازة" }, { id: "appwrite", name: "Appwrite", category: "database", url: "https://appwrite.io", consoleUrl: "https://cloud.appwrite.io", description: "لوحة تحكم فنية كاملة توفر لك خادم خلفي، مع قاعدة وقدرات أمان", freeLimit: "مستوى مجاني كامل للمطورين للأبد" }, { id: "pocketbase", name: "PocketBase (SaaS)", category: "database", url: "https://pocketbase.io", consoleUrl: "https://pocketbase.io", description: "قاعدة بيانات خفيفة مفتوحة المصدر تجمع الأمان والـ Realtime كملف واحد", freeLimit: "مجاني ومفتوح المصدر في الاستضافة الذاتية" }, { id: "mongodb_atlas", name: "MongoDB Atlas", category: "database", url: "https://mongodb.com/atlas", consoleUrl: "https://cloud.mongodb.com", description: "النسخة الرسمية السحابية المدارة لأضخم قواعد البيانات الوثائقية", freeLimit: "512MB تخزين دائم ومجاني بالكامل" }, { id: "redis_cloud", name: "Redis Cloud", category: "database", url: "https://redis.io", consoleUrl: "https://app.redislabs.com", description: "قاعدة بيانات في الذاكرة لتسريع تخزين الجلسات والكاش وإدارة البيانات المؤقتة", freeLimit: "قاعدة بيانات واحدة 30MB مجاناً" }, { id: "upstash", name: "Upstash Redis & Kafka", category: "database", url: "https://upstash.com", consoleUrl: "https://console.upstash.com", description: "قواعد بيانات كاش ورسائل لاسلكية بلا مخدمات تدفع بقدر استهلاكك فقط", freeLimit: "10 آلاف استعلام يومي مجاناً" }, { id: "cockroachlabs", name: "CockroachDB Serverless", category: "database", url: "https://cockroachlabs.com", consoleUrl: "https://cockroachlabs.cloud", description: "بناء وتوسيع قواعد البيانات الموزعة عالمياً والموثوقة فائق التنظيم والأمان", freeLimit: "10 جيجا بايت تخزين دائم ومجاني" }, { id: "yugabyte", name: "YugabyteDB Managed", category: "database", url: "https://yugabyte.com", consoleUrl: "https://yugabyte.com", description: "قاعدة بيانات SQL موزعة ومفتوحة المصدر متوافقة تماماً مع PostgreSQL", freeLimit: "مستوى سحابي مجاني للمطورين" }, { id: "tidb", name: "TiDB Serverless", category: "database", url: "https://pingcap.com/tidb-serverless", consoleUrl: "https://tidbcloud.com", description: "قاعدة بيانات سحابية متطورة للغاية تدمج معالجة البيانات وتحليلها فوراً", freeLimit: "5 جيجابايت مساحة مجانية مستمرة" }, { id: "clickhouse", name: "ClickHouse Cloud", category: "database", url: "https://clickhouse.com", consoleUrl: "https://clickhouse.cloud", description: "قاعدة عمودية فائقة السرعة لتحليل واستخراج ملايين السجلات بالإحصاءات", freeLimit: "فترة تجريبية برصيد 300 دولار" }, { id: "timescale", name: "TimescaleDB Cloud", category: "database", url: "https://timescale.com", consoleUrl: "https://portal.timescale.cloud", description: "قاعدة بيانات ممتازة لتخزين وتحليل سلاسل البيانات الزمنية والتحليلات", freeLimit: "فترة تجريبية 30 يوم" }, { id: "influxdb", name: "InfluxDB Cloud", category: "database", url: "https://influxdata.com", consoleUrl: "https://cloud2.influxdata.com", description: "أشهر قواعد البيانات لمعالجة بيانات الاستشعار، المقاييس والأتمتة الزمنية", freeLimit: "خطة تطوير مجانية مأمونة" }, // 5. Deployment { id: "vercel", name: "Vercel Hosting", category: "deployment", url: "https://vercel.com", consoleUrl: "https://vercel.com/dashboard", description: "سحابة النشر الأولى لتطبيقات React و Next.js مع تكامل النطاقات فورياً", freeLimit: "مجاني تماماً للمشاريع الفردية" }, { id: "netlify", name: "Netlify Cloud", category: "deployment", url: "https://netlify.com", consoleUrl: "https://app.netlify.com", description: "أداة النشر والابتكار السريع للمواقع والتطبيقات الثابتة والخلفية", freeLimit: "100 جيجا بايت ترافيك مجاني شهري" }, { id: "render", name: "Render Cloud", category: "deployment", url: "https://render.com", consoleUrl: "https://dashboard.render.com", description: "بديل هيروكو الرائد لنشر ملفات الويب الثابتة والخوادم وقواعد البيانات", freeLimit: "موقع وخدمات ويب وخوادم مجانية للأبد" }, { id: "railway", name: "Railway.app", category: "deployment", url: "https://railway.app", consoleUrl: "https://railway.app/dashboard", description: "منصة رائعة لبناء وإطلاق مشاريع البرمجيات والحاويات السحابية بنقرة واحدة", freeLimit: "رصيد شهري متجدد للاستخدام المجاني" }, { id: "fly_io", name: "Fly.io", category: "deployment", url: "https://fly.io", consoleUrl: "https://fly.io/dashboard", description: "نشر تطبيقات الويب والخوادم على مقربة من المستخدمين بأداء مميز", freeLimit: "3 حاويات صغيرة وعرض متجدد مجاناً" }, { id: "surge", name: "Surge Command Static", category: "deployment", url: "https://surge.sh", consoleUrl: "https://surge.sh", description: "أبسط وسيلة لنشر مواقع الويب الساكنة بالكامل عبر الكوماند لاين مباشرة", freeLimit: "استضافة مجانية للأبد بمجال مخصص" }, { id: "githubpages", name: "GitHub Pages", category: "deployment", url: "https://pages.github.com", consoleUrl: "https://github.com", description: "نشر المواقع الاستاتيكية والواجهات فوراً من وسم المستودع الخاص بك على غيت هاب", freeLimit: "مجاني بالكامل للأبد بلا ليميت" }, { id: "koyeb", name: "Koyeb Hosting", category: "deployment", url: "https://koyeb.com", consoleUrl: "https://app.koyeb.com", description: "منصة حديثة وسريعة جداً لتشغيل حاويات Docker والوظائف الموزعة عالمياً", freeLimit: "جهاز صغير وخطة مجانية للأبد شهرياً" }, { id: "cyclic", name: "Cyclic.sh", category: "deployment", url: "https://cyclic.sh", consoleUrl: "https://cyclic.sh", description: "بناء ونشر تطبيقات Node.js و واجهات البرمجة بلا خوادم وبسرعة فائقة", freeLimit: "3 مشاريع وربط قواعد البيانات مجاناً" }, { id: "digitalocean", name: "DigitalOcean App Platform", category: "deployment", url: "https://digitalocean.com", consoleUrl: "https://cloud.digitalocean.com", description: "المنصة السحابية الموثوقة لنشر وإدارة البرمجيات والتطبيقات في ثوانٍ", freeLimit: "استضافة 3 مواقع ويب مجاناً" }, { id: "heroku", name: "Heroku App Services", category: "deployment", url: "https://heroku.com", consoleUrl: "https://dashboard.heroku.com", description: "المنصة العريقة والشهيرة في تسهيل النشر وقواعد البيانات وإضافات الخدمات", freeLimit: "يتطلب بطاقة حالياً للتسجيل" }, // 6. Monitoring & Analytics { id: "uptime_robot", name: "UptimeRobot Monitor", category: "monitoring", url: "https://uptimerobot.com", consoleUrl: "https://uptimerobot.com/dashboard", description: "مراقبة سلامة واستمرارية عمل المواقع وإرسال رسائل بريد عند التعطل", freeLimit: "50 مراقبة مجانية كل 5 دقائق" }, { id: "better_stack", name: "Better Stack Analytics", category: "monitoring", url: "https://betterstack.com", consoleUrl: "https://betterstack.com", description: "مراقبة حية، صفحات فحص عامة، وإدارة مناوبات المشرفين والمطورين", freeLimit: "10 مراقبي أداء مجاناً تماماً" }, { id: "site24x7", name: "Site24x7 Core", category: "monitoring", url: "https://site24x7.com", consoleUrl: "https://site24x7.com", description: "توفير مراقبة شاملة لتطبيقات الموبايل والويب والبنية التحتية والمخدمات", freeLimit: "30 يوم تجربة مجانية ممتازة" }, { id: "sentry", name: "Sentry Error Tracking", category: "monitoring", url: "https://sentry.io", consoleUrl: "https://sentry.io/welcome", description: "التقاط وتتبع الأخطاء والثغرات في تطبيقات الويب في الزمن الحقيقي وتصحيحها", freeLimit: "5000 حدث وخطأ تتبع مجاني شهرياً" }, { id: "logrocket", name: "LogRocket Session", category: "monitoring", url: "https://logrocket.com", consoleUrl: "https://logrocket.com", description: "تسجيل جلسات المستخدمين للويب وتقفي الأثر وحل مشاكل تجربة الاستخدام", freeLimit: "1000 جلسة مجانية شهرياً للأبد" }, { id: "posthog", name: "PostHog Analytics", category: "monitoring", url: "https://posthog.com", consoleUrl: "https://us.posthog.com", description: "صندوق أدوات متكامل للتحليلات الطليعية وحفظ الجلسات وإطلاق الميزات بذكاء", freeLimit: "مليون حدث مجاني تماماً كل شهر" }, { id: "datadog", name: "Datadog", category: "monitoring", url: "https://datadoghq.com", consoleUrl: "https://app.datadoghq.com", description: "مراقبة على مستوى المؤسسات تجمع بيانات التسجيل والمخدمات وأداء التطبيقات", freeLimit: "فترة تجريبية 14 يوماً بكامل المزايا" }, { id: "newrelic", name: "New Relic", category: "monitoring", url: "https://newrelic.com", consoleUrl: "https://one.newrelic.com", description: "عرض وتحليل أداء المنظومة البرمجية وقراءة السجلات من شاشة واحدة شاملة", freeLimit: "100GB شهرياً من قراءة البيانات مجاناً" }, { id: "grafana", name: "Grafana Cloud", category: "monitoring", url: "https://grafana.com", consoleUrl: "https://grafana.com/products/cloud", description: "استعلام وعرض البيانات والمقاييس عبر لوحات تحكم ديناميكية تفاعلية مبهرة", freeLimit: "خطة سحابية مجانية تدعم 3 أعضاء" }, { id: "prometheus", name: "Prometheus", category: "monitoring", url: "https://prometheus.io", consoleUrl: "https://prometheus.io", description: "تخزين ومسح مقاييس الأداء واستخدام الذاكرة والمعالج في قواعد زمنية متخصصة", freeLimit: "مفتوح المصدر ومجاني بالكامل ذاتياً" }, // 7. Workflow Automation { id: "n8n_cloud", name: "n8n Automation", category: "workflows", url: "https://n8n.io", consoleUrl: "https://n8n.io", description: "بديل زابيير الشهير لتصميم وربط تدفقات البيانات بدون قيود وبمرونة برمجية", freeLimit: "مفتوح المصدر في الاستضافة الذاتية" }, { id: "make", name: "Make.com (Integromat)", category: "workflows", url: "https://make.com", consoleUrl: "https://eu1.make.com", description: "أجمل منصة مرئية لتصميم وربط آلاف التطبيقات ونقل البيانات المعقفة", freeLimit: "1000 عملية تشغيل مجانية شهرياً للأبد" }, { id: "zapier", name: "Zapier Connect", category: "workflows", url: "https://zapier.com", consoleUrl: "https://zapier.com/dashboard", description: "عملاق الاتصالات بين تطبيقات الويب لتصميم مهام ربط بريدية وإدارية نشطة", freeLimit: "100 مهمة مجانية في الشهر ومسارات مرنة" }, { id: "pipedream", name: "Pipedream Developer", category: "workflows", url: "https://pipedream.com", consoleUrl: "https://pipedream.com", description: "منصة أتمتة موجهة للمبرمجين تمكنهم من دمج أكواد Node و Python و Go", freeLimit: "333 دقيقة تشغيل مجانية شهرياً" }, { id: "nodered", name: "Node-RED Flow", category: "workflows", url: "https://nodered.org", consoleUrl: "https://nodered.org", description: "ماتريكس برمجة مرئي يربط الأجهزة المادية وواجهات برمجة التطبيقات وخدمات الويب", freeLimit: "مجاني ومفتوح المصدر للتثبيت المحلي والسحابي" }, { id: "ifttt", name: "IFTTT Platforms", category: "workflows", url: "https://ifttt.com", consoleUrl: "https://ifttt.com/home", description: "مساعد الربط الفوري للأتمتة الخفيفة وخدمات المنزل الذكي والأجهزة المحمولة", freeLimit: "دعم لحد 3 اتصالات مجانية مخصصة" }, { id: "temporal", name: "Temporal Cloud", category: "workflows", url: "https://temporal.io", consoleUrl: "https://temporal.io", description: "أتمتة الأعمال وضمان تشغيل الأكواد المعقدة ومقاومة الأخطاء وإعادة المحاولة", freeLimit: "مستويات تطوير مجانية محلياً بالكامل" }, { id: "prefect", name: "Prefect Engine", category: "workflows", url: "https://prefect.io", consoleUrl: "https://prefect.io", description: "إدارة تشغيل، تتبع وتنفيذ تدفقات علم البيانات والأكواد السيرية الضخمة", freeLimit: "خطة هواة مجانية سخية شهرياً للأبد" }, { id: "airflow", name: "Apache Airflow", category: "workflows", url: "https://airflow.apache.org", consoleUrl: "https://airflow.apache.org", description: "المنصة الأكثر اعتمادية لكتابة وجدولة ومراقبة مهام البيانات المعقدة وعمليات ETL", freeLimit: "أداة مفتوحة المصدر مجانية بالكامل ومستقلة" }, // 8. Emails Providers { id: "gmail", name: "Google Gmail", category: "email", url: "https://gmail.com", consoleUrl: "https://mail.google.com", description: "بريد غوغل الغني بالمميزات وتخزين سحابي وافر", freeLimit: "15 جيجابايت تخزين مجاني مشتَرك" }, { id: "proton", name: "ProtonMail", category: "email", url: "https://proton.me", consoleUrl: "https://mail.proton.me", description: "بريد سويسري مشفر بالكامل يراعي خصوصيتك أولاً", freeLimit: "500 ميجابايت مساحة بريد حرة" }, { id: "outlook", name: "Microsoft Outlook", category: "email", url: "https://outlook.com", consoleUrl: "https://outlook.live.com", description: "بريد مايكروسوفت العملي المتكامل مع طقم أوفيس", freeLimit: "15 جيجابايت مساحة بريد تواصل مجاني" }, { id: "zoho_mail", name: "Zoho Mail", category: "email", url: "https://zoho.com/mail", consoleUrl: "https://zoho.com/mail/login.html", description: "بريد إلكتروني فاخر مخصص للشركات والمجالات الاحترافية", freeLimit: "5 حسابات بريد مجانية تماماً بنطاقك الخاص" } ];