عن المشروع

Open Civic Signal OS هي منصة تكنولوجيا مدنية يتم تقديمها كـ monorepo. الغرض المعلن منها هو تحويل إشارات المجتمع — المشكلات المحلية المتكررة التي يبلغ عنها السكان — إلى قائمة مهام عامة (backlog) يمكن للناس فهمها والوثوق بها والعمل بناءً عليها. يتم وصف وعد المنتج من زاويتين: بالنسبة للمواطن، يتمثل المسار في: الإبلاغ عن مشكلة محلية حقيقية بلغة بسيطة، ومعرفة سبب منحها الأولوية، ومتابعة ما تغير ومن استجاب وما لا يزال معلقاً. أما بالنسبة للموظفين العموميين وقادة المجتمع، فإن الهدف المعلن هو تقليل الضجيج، وإبراز الأمور الأكثر أهمية أولاً، والحفاظ على رؤية الأدلة التي استند إليها ترتيب الأولويات. تغطي رحلات المستخدم الموثقة ثلاثة أدوار: - عضو المجتمع: الإبلاغ عن مشكلة، ودعم قضية موجودة بدلاً من تكرارها، وفهم سبب كون القضية ذات أولوية عالية، وتتبع التحديثات من المجتمع أو المؤسسة. - منسق أو مشرف المجتمع: مراجعة محادثات المجتمع، ونشر تحديثات التقدم مع حدود واضحة للأدوار، والحفاظ على قنوات النقاش قابلة للاستخدام والتدقيق. - الموظف العمومي: تحديد المشكلات ذات الأولوية القصوى بسرعة، ونشر تحديثات التقدم، واستخدام أدلة شفافة لتبرير ترتيب الإجراءات. يتحدث ملف README بصراحة عن فجوة حالية في تجربة المستخدم (UX): حيث يشرح المستودع والتطبيق المنصة التقنية بشكل جيد، ولكنه يعرض الكثير من خيارات التنقل وسير العمل في وقت مبكر جداً للمستخدمين الجدد. لذلك، يركز العمل الجاري على الواجهة الأمامية على تبسيط تجربة التشغيل الأول، وتوضيح الإجراءات الأساسية وتقليل العبء المعرفي. يتضمن اتجاه المنتج المعلن تسلسلاً هرمياً أبسط للشاشة الأولى، ودعوات واضحة لاتخاذ إجراءات أساسية، وعمليات تهيئة وتحقق أقل تعقيداً، وتنافلاً سهلاً عبر لوحة المفاتيح والهاتف المحمول، وواجهات ثقة تشرح التصنيف والتقدم دون استخدام مصطلحات تقنية معقدة. المجموعة التقنية (Technical stack) كما هي موثقة: - Backend: لغة Java 21 مع Spring Boot، في apps/api-java، حيث تستضيف واجهة برمجة التطبيقات (API) وخدمات تحديد الأولويات. - Frontend: إطار عمل React و TypeScript و Vite، في apps/web-react، لتوفير لوحة تحكم عامة ووحدة تحكم للمشغل. - Data: تعتمد على JSON أولاً بالنسبة للنسخة الأولية (MVP)، مع إدراج PostgreSQL كخطة مستقبلية. - Contracts: تعريفات OpenAPI ومخططات مشتركة تحت packages/contracts. - أدلة أخرى: infra للبيئة المحلية وأصول النشر، و docs للاستراتيجية والأفكار والبنية التحتية وخطط التنفيذ. تشغيل المشروع: بيئة التطوير المتكاملة المعتمدة هي Docker، والتي يتم تشغيلها عبر npm run docker:dev:up، والتي يصفها ملف README بأنها المسار المطلوب للتحديث التلقائي (hot-reload) للواجهة الأمامية والخلفية معاً. تشمل الأوامر الداعمة docker:dev:doctor و docker:dev:ps و docker:dev:logs و docker:dev:down، بالإضافة إلى وضع يشبه الإنتاج (docker:prod:up) وصور GHCR مسبقة البناء (docker:ghcr:up / docker:ghcr:down) مع سير عمل لصور CI في .github/workflows/docker-images. يطلب ملف README صراحة التعامل مع عدم توفر Docker كعائق للبيئة المحلية بدلاً من محاولة الالتفاف عليه عند التحقق من السلوك المتكامل. بالنسبة للنسخة الأولية الحالية، توجد أيضاً سكربتات مثل npm install و npm run prioritize. توجد مسارات بديلة للمكونات فقط للعمل المنعزل: تشغيل تطبيق React باستخدام npm run dev داخل apps/web-react، و Java API باستخدام ./mvnw spring-boot:run داخل apps/api-java. تتضمن مواد المستودع الإضافية موارد الإطلاق (صور GIF للعرض والبنية التحتية، وملف SVG للبنية التحتية، وصفحة هبوط تحت docs، ووثيقة أفكار، ودليل تشغيل للوكلاء)، ومجموعة أصول بصرية وعلامة تجارية (شعار، كلمة شعار، بنر، بطاقة تواصل اجتماعي وشعار PNG)، وتتبع خارطة الطريق عبر قضايا GitHub الخاصة بالمشروع. بشكل عام، يعد المستودع منصة للمشاركة المدنية وتحديد الأولويات في مراحلها الأولى وموثقة بشكل مفتوح: فهي تحدد رحلات المواطنين والمسؤولين المقصودة، وتوفر تدفق تطوير monorepo يعتمد على Docker مع مكونات Spring Boot و React، وتحتفظ بعقود API داخل المستودع، وتدرج بوضوح أعمال تبسيط تجربة المستخدم المتبقية.