🏗️ الهيكل التقني

كيف بُنيت Operix

نظرة كاملة على بنية المنصة — من المتصفّح إلى قاعدة البيانات. نشاركها بصراحة لأن المعمارية الجيدة تستحق أن تُرى.

1 · نظرة شاملة

الطبقات الخمس الرئيسية وكيف تترابط.

Frontend — Next.js 14App Router · Server Components · Custom CSSHTTPS · JWTBackend — NestJS 1115+ modules · EventEmitter2 · BullMQ workersPostgreSQL 1620+ tables · Prisma 6Redis 7 + BullMQ4 queues · cacheOllama LLMqwen2.5:32b · localWhatsApp Cloud APIMeta integrationExternal WebhooksStripe, Zapier, etc.Sentry · LogsMonitoring layerالطبقات الـ 5 الرئيسية + الـ integrations الخارجية

Frontend

Next.js 14 · React 18 · TypeScript

App Router + static prerender حيث أمكن. CSS مخصّص — بدون Tailwind. منشور على VPS عبر PM2.

Backend

NestJS 11 · TypeScript · Prisma 6

Modular architecture (15+ module) مع DI كامل. EventEmitter2 wildcard bus + BullMQ workers.

Database

PostgreSQL 16

20+ جدول مع FK cascade. Prisma 6 ORM. Migrations عبر prisma db push (dev) / migrate deploy (prod).

Cache + Queues

Redis 7 · BullMQ 5

4 queues منفصلة: workflow-runs, scheduled-tasks, agent-execution, hermes-main. كل واحدة لها concurrency + retry policy.

LLM

Ollama (qwen2.5:32b)

نموذج محلي على Mac M5 Max. النظام يدعم تبديل النموذج تلقائياً + Anthropic/OpenAI كـ fallback.

2 · تدفّق البيانات

دورة حياة طلب نموذجي من المتصفح إلى الرد.

👤المستخدمطلب HTTPSFrontendNext.js · ReactAPI callBackend GatewayJwtGuard · ThrottlerController → Servicebusiness logicPrisma → Postgresqueries · transactionsBullMQ → Redisjobs · queuesOllama LLMlocal AI inferenceWorker → execute jobالطلب يدخل من اليمين، يتدفّق نحو القاعدة، ثم يرجع نفس المسار
  1. المستخدم يفتح صفحة في المتصفح (Next.js يخدمها static أو SSR).
  2. الصفحة تطلق fetch لـ Backend عبر fetchAPI wrapper (يحمل JWT تلقائياً).
  3. الطلب يصل nginx على VPS → SSH tunnel → Mac (port 3010).
  4. NestJS يستقبل: JwtAuthGuardThrottlerGuardController.
  5. Controller يستدعي Service → PrismaPostgres (أو Redis للـ cache).
  6. للعمليات الخلفية: Service يضع job في BullMQ → Worker يلتقطها → ينفّذ بـ concurrency محكوم.
  7. الاستجابة ترجع نفس المسار. الواجهة تُعالج النتيجة وتُحدّث الـ DOM.
  8. لو الـ action يحتاج AI: يستدعي Ollama محلياً → نموذج LLM يرد → النتيجة تتدفّق للأعلى.

3 · خريطة الـ Modules

15+ module في Backend، كل واحد مستقل ومحكوم.

AgentsModule

+ 12 sub-departments

إدارة 52 وكيل + system prompts + permissions + tools enforcement.

HermesModule

Orchestrator + Workers + DAG

QueueService + AgentWorker (concurrency 5) + GraphBuilder + ParallelExecutor + ProgressTracker.

AutomationModule

5 triggers + 7 actions

WorkflowEngine + 5 triggers + 7 actions + WaWorkflow bridge + workflow-runs queue.

CommunicationsModule

WhatsApp Cloud API

Send text/template/media + webhook handler + signature verify + multi-account.

AutoReplyModule

LanguageDetector + Classifier

3 modes (OFF/AUTO/HYBRID) + per-conversation AI mode + pending approval queue.

PmModule

Clients + Projects + Tasks

PM Hub — CRUD لـ PmClient/PmProject/PmTask + activity log.

RashidModule

Smart Orchestrator

المدير العام — يستقبل أي مهمة، يفوّضها للوكيل المناسب، يجمع النتائج.

BrainModule

Memory + Knowledge

ذاكرة طويلة المدى للوكلاء — sessions, learnings, project context.

4 · النشر

إعداد “عكسي” غير معتاد — Frontend على VPS، Backend محلياً على Mac.

🌐 Internetالمستخدمون + Meta + Webhooks🖥️ VPS (Hostinger)187.124.221.23nginxPM2 · Next.jsFrontend static + SSR💻 Mac M5 Max (محلياً)port 3010 → SSH tunnelNestJSPostgresRedisBackend + DB + Cache + Ollama (محلي)🔒 SSH Tunnel/api/* ← → port 3010إعداد “عكسي”: Frontend عام، Backend محلي خلف SSH — توازن بين السرعة والتكلفة
🖥️ Frontend

Next.js standalone build → rsync إلى VPS (Hostinger) → PM2 يدير العملية على port 3001 خلف nginx.

💻 Backend

NestJS يعمل محلياً على Mac M5 Max port 3010. يُكشف عبر SSH reverse tunnel للـ VPS.

🗄️ Database

PostgreSQL + Redis محليان على Mac. backups يومية إلى مجلّد backups/.

5 · الأمان

طبقات الحماية المطبّقة عبر النظام.

JWT Authentication

كل request غير عام يتطلّب Bearer token. الـ token صلاحيته 24h. الـ logout يمسحه فقط من localStorage (stateless).

Rate Limiting

@nestjs/throttler — 100 req/min/IP بشكل افتراضي. مسارات حسّاسة (login) لها throttle أشد.

WhatsApp Signature

HMAC-SHA256 verification على كل webhook من Meta. لو فاضي (dev mode) يُتخطّى مع تحذير.

Tools Whitelist

ALLOWED_AGENTS_PER_TOOL يفرض من يستطيع استدعاء أي أداة. وكيل CRM لا يولّد فواتير.

Approval Queue

الأدوات الحسّاسة (إصدار فاتورة، send_email رسمي) تتطلّب موافقة بشرية قبل التنفيذ.

Sentry Monitoring

أي exception غير معالَجة (frontend + backend) تُرسَل لـ Sentry. تنبيهات حقيقية فقط — لا spam.

SSL/TLS

HTTPS مفعّل بالكامل عبر Let's Encrypt على VPS. WebSocket عبر WSS.

SSH Tunnel

الاتصال بين VPS و Mac عبر SSH reverse tunnel مع مفتاح dedicated (لا password). تشفير end-to-end.

6 · بالأرقام

المنصة اليوم — مقاييس فعلية من الإنتاج.

52
وكيل AI
20+
جدول DB
60+
API endpoints
4
BullMQ queues
7
action types
5
trigger types
30+
docs articles
7
أيام بناء

عاجبك التصميم؟

جرّب المنصة بنفسك — كلها مجاناً، بدون بطاقة ائتمان.