الشفافية التقنية

مفتوح المصدر

جميع الشيفرة المصدرية لـ Covey متاحة علناً على Codeberg. يمكن لأي شخص مراجعتها والمساهمة فيها والبناء عليها.

نظرة عامة على البنية

تتكون Covey من أربع خدمات تتعاون عبر Docker Compose:

الخدمة الدور
الواجهة الأمامية واجهة ويب مبنية بـ Preact، تُقدَّم عبر nginx
الواجهة الخلفية واجهة برمجة واتصال فوري باستخدام Express و Socket.io
قاعدة البيانات PostgreSQL 16 لتخزين البيانات
Traefik وكيل عكسي مع إدارة تلقائية لشهادات TLS

مبادئ التصميم

Preact بدلاً من React

نستخدم Preact (3 كيلوبايت) بدلاً من React (40 كيلوبايت) ليتم تحميل التطبيق بسرعة حتى على الأجهزة القديمة والاتصالات البطيئة. واجهة البرمجة متطابقة تقريباً.

تطبيق ويب تقدمي (PWA)

تُوزَّع Covey كتطبيق PWA — لا حاجة لمتجر تطبيقات. ثبّتها مباشرة من المتصفح، تعمل بدون اتصال للوظائف الأساسية، وتستقبل إشعارات فورية كأي تطبيق عادي.

أعلام ميزات بسيطة

تُفعَّل الميزات عبر متغيرات البيئة، لا عبر أنظمة معقدة. بسيط وموثوق وبدون اعتماديات خارجية.

الاستطلاع أولاً للتوافقية

يُهيَّأ Socket.io للبدء باستطلاع HTTP ثم الترقية إلى WebSocket. هذا يضمن أن المتصفحات القديمة تستطيع الاتصال مباشرة.

عرض الخرائط مع OpenStreetMap

نستخدم Leaflet مع OpenStreetMap — مجاني بالكامل، لا يتطلب مفتاح API، ومفتوح المصدر.

عمليات داخل العملية

المهام الخلفية (انتهاء صلاحية الطلبات، حذف GDPR) تعمل كعمليات مجدولة في نفس عملية Node — لا حاجة لنظام طوابير خارجي.

تدفق البيانات

  1. المحتوى الثابت: المتصفح ← Traefik ← nginx ← HTML/JS/CSS
  2. استدعاءات API: المتصفح ← Traefik ← Express ← PostgreSQL
  3. الاتصال الفوري: المتصفح ← Traefik ← Socket.io (يترقى من الاستطلاع إلى WebSocket)

التكامل المستمر

يُستضاف المستودع على Codeberg مع Woodpecker CI للاختبارات والبناء الآلي. كل دفع يُشغّل اختبارات الواجهة الأمامية والخلفية ويتحقق من نجاح بناء الإنتاج.

قرارات أمنية

  • JWT مع HS256 — توثيق بدون حالة مع صلاحية 24 ساعة.
  • أسماء مستعارة — لا تُعرض أسماء BankID تلقائياً أبداً.
  • Haversine بدل PostGIS — أبسط وأخف وكافٍ لنطاق المدينة.
  • تحديد معدل في الذاكرة — لا حاجة لـ Redis في نشر خادم واحد.

الاستضافة

تُستضاف Covey على خادم VPS لدى GleSYS في ستوكهولم، يعمل بالطاقة المتجددة. تُدار شهادات TLS تلقائياً عبر Let's Encrypt.