كيف بُنيت Operix
نظرة كاملة على بنية المنصة — من المتصفّح إلى قاعدة البيانات. نشاركها بصراحة لأن المعمارية الجيدة تستحق أن تُرى.
1 · نظرة شاملة
الطبقات الخمس الرئيسية وكيف تترابط.
Frontend
Next.js 14 · React 18 · TypeScriptApp Router + static prerender حيث أمكن. CSS مخصّص — بدون Tailwind. منشور على VPS عبر PM2.
Backend
NestJS 11 · TypeScript · Prisma 6Modular architecture (15+ module) مع DI كامل. EventEmitter2 wildcard bus + BullMQ workers.
Database
PostgreSQL 1620+ جدول مع FK cascade. Prisma 6 ORM. Migrations عبر prisma db push (dev) / migrate deploy (prod).
Cache + Queues
Redis 7 · BullMQ 54 queues منفصلة: workflow-runs, scheduled-tasks, agent-execution, hermes-main. كل واحدة لها concurrency + retry policy.
LLM
Ollama (qwen2.5:32b)نموذج محلي على Mac M5 Max. النظام يدعم تبديل النموذج تلقائياً + Anthropic/OpenAI كـ fallback.
2 · تدفّق البيانات
دورة حياة طلب نموذجي من المتصفح إلى الرد.
- المستخدم يفتح صفحة في المتصفح (Next.js يخدمها static أو SSR).
- الصفحة تطلق
fetchلـ Backend عبرfetchAPIwrapper (يحمل JWT تلقائياً). - الطلب يصل nginx على VPS → SSH tunnel → Mac (port 3010).
- NestJS يستقبل: JwtAuthGuard → ThrottlerGuard → Controller.
- Controller يستدعي Service → Prisma → Postgres (أو Redis للـ cache).
- للعمليات الخلفية: Service يضع job في BullMQ → Worker يلتقطها → ينفّذ بـ concurrency محكوم.
- الاستجابة ترجع نفس المسار. الواجهة تُعالج النتيجة وتُحدّث الـ DOM.
- لو الـ action يحتاج AI: يستدعي Ollama محلياً → نموذج LLM يرد → النتيجة تتدفّق للأعلى.
3 · خريطة الـ Modules
15+ module في Backend، كل واحد مستقل ومحكوم.
AgentsModule
+ 12 sub-departmentsإدارة 52 وكيل + system prompts + permissions + tools enforcement.
HermesModule
Orchestrator + Workers + DAGQueueService + AgentWorker (concurrency 5) + GraphBuilder + ParallelExecutor + ProgressTracker.
AutomationModule
5 triggers + 7 actionsWorkflowEngine + 5 triggers + 7 actions + WaWorkflow bridge + workflow-runs queue.
CommunicationsModule
WhatsApp Cloud APISend text/template/media + webhook handler + signature verify + multi-account.
AutoReplyModule
LanguageDetector + Classifier3 modes (OFF/AUTO/HYBRID) + per-conversation AI mode + pending approval queue.
PmModule
Clients + Projects + TasksPM Hub — CRUD لـ PmClient/PmProject/PmTask + activity log.
RashidModule
Smart Orchestratorالمدير العام — يستقبل أي مهمة، يفوّضها للوكيل المناسب، يجمع النتائج.
BrainModule
Memory + Knowledgeذاكرة طويلة المدى للوكلاء — sessions, learnings, project context.
4 · النشر
إعداد “عكسي” غير معتاد — Frontend على VPS، Backend محلياً على Mac.
Next.js standalone build → rsync إلى VPS (Hostinger) → PM2 يدير العملية على port 3001 خلف nginx.
NestJS يعمل محلياً على Mac M5 Max port 3010. يُكشف عبر SSH reverse tunnel للـ VPS.
PostgreSQL + Redis محليان على Mac. backups يومية إلى مجلّد backups/.
5 · الأمان
طبقات الحماية المطبّقة عبر النظام.
كل request غير عام يتطلّب Bearer token. الـ token صلاحيته 24h. الـ logout يمسحه فقط من localStorage (stateless).
@nestjs/throttler — 100 req/min/IP بشكل افتراضي. مسارات حسّاسة (login) لها throttle أشد.
HMAC-SHA256 verification على كل webhook من Meta. لو فاضي (dev mode) يُتخطّى مع تحذير.
ALLOWED_AGENTS_PER_TOOL يفرض من يستطيع استدعاء أي أداة. وكيل CRM لا يولّد فواتير.
الأدوات الحسّاسة (إصدار فاتورة، send_email رسمي) تتطلّب موافقة بشرية قبل التنفيذ.
أي exception غير معالَجة (frontend + backend) تُرسَل لـ Sentry. تنبيهات حقيقية فقط — لا spam.
HTTPS مفعّل بالكامل عبر Let's Encrypt على VPS. WebSocket عبر WSS.
الاتصال بين VPS و Mac عبر SSH reverse tunnel مع مفتاح dedicated (لا password). تشفير end-to-end.
6 · بالأرقام
المنصة اليوم — مقاييس فعلية من الإنتاج.
عاجبك التصميم؟
جرّب المنصة بنفسك — كلها مجاناً، بدون بطاقة ائتمان.