# المعمارية التقنية العامة

## النهج

البداية بـ **Laravel Modular Monolith** سريع التطوير ومنظم إلى bounded contexts، مع قواعد تمنع التشابك. تُفصل الخدمات فقط عند وجود حاجة قياس واضحة: اتصالات طويلة، معالجة فيديو، مكالمات، بحث أو حمل/ملكية فريق مستقلة.

## المكونات

- Clients: Web SSR/SPA، التطبيق الرئيسي، Messenger، Admin.
- Edge: DNS/CDN/WAF/Load Balancer وAPI gateway عند الحاجة.
- Laravel: Identity، Profiles، Social Graph، Content، Engagement، Feed، Moderation، Business/Jobs.
- Realtime: WebSocket gateways، broker، presence وnotification orchestration.
- Media: direct upload، malware scan، transcoding، thumbnails، object storage وCDN.
- Calls: signaling، STUN/TURN وSFU مع QoS telemetry.
- Data: PostgreSQL، Redis، object storage، OpenSearch لاحقًا، analytics store مستقل.
- Operations: CI/CD، secrets، logs، metrics، traces، error tracking، backup وDR.

## حدود الاتصال

- REST/OpenAPI للعمليات المتزامنة.
- WebSocket/AsyncAPI للأحداث الفورية.
- Domain events عبر outbox ثم broker للعمليات غير المتزامنة.
- لا وصول مباشر لقاعدة بيانات وحدة أخرى؛ التكامل عبر service contract أو event.

## متطلبات غير وظيفية

- SLOs تُحدد لكل إصدار: availability، latency، durability وrecovery.
- stateless services حيث أمكن، idempotency، timeouts، retries بحدود وcircuit breakers.
- multi-AZ للإنتاج، تشفير، least privilege، audit وobservability by default.

## قرارات مؤجلة عمدًا

نوع SFU، مستوى E2EE، مزود cloud، محرك البحث النهائي، وأي microservice split تُحسم عبر ADR بعد القياس والـ spikes.
