عبدالله محمدمهندس برمجيات أول
كل الأعمال

منصّة إدارة حالات أشعة الأسنان

Xera Lab

مشروع مستقل · مهندس وحيد، فل-ستاك

دورة عمل معمل أشعة أسنان كاملة — استلام، إسناد، مراجعة، تسليم — في منصّة واحدة: بوابة العملاء، ولوحة الإدارة، والواجهة البرمجية، وقاعدة البيانات، والخوادم التي تشغّلها، بناها مهندس واحد.

3 أدوارمشرف، طبيب، فنّي
4 مراحلاستلام ← إسناد ← مراجعة ← تسليم
مهندس واحدواجهة وخلفية وبنية تحتية

التحدي

يستقبل المعمل حالات من العيادات، ويوجّهها إلى فنيّين، ثم يراجع طبيب النتيجة قبل إعادتها. كان ذلك يجري بالبريد والمكالمات، فلم يكن أحد يعرف أين وصلت حالة دون أن يسأل شخصًا. احتاج الأمر نظامًا واحدًا بثلاثة أنواع من المستخدمين — ولم يكن هناك فريق لتقسيم العمل عليه.

ما كان عليه أن يحققه

  • نظام واحد للاستلام والتوزيع والمراجعة والتسليم، بدل البريد والمكالمات
  • ثلاثة أنواع من المستخدمين — مدير، وطبيب، وفني — يعملون على الحالة نفسها
  • ملفات أشعة كبيرة تُخزَّن وتُقدَّم دون إثقال قاعدة البيانات
  • يبنيه وينشره ويشغّله مهندس واحد

دوري

مهندس وحيد. الواجهة والخلفية وقاعدة البيانات والنشر وشهادة TLS.

كيف بنيته

  • بناء بوابة العملاء ولوحة الإدارة، بصلاحيات حسب الدور: مشرف، طبيب، فنّي.
  • نمذجة دورة حياة الحالة كاملة — استلام ← إسناد ← مراجعة ← تسليم — بحيث تكون حالة الطلب حقيقة في قاعدة البيانات لا محادثة.
  • كتابة خلفية Node.js/Express و PostgreSQL كاملة بمصادقة JWT، ورفع صور الأشعة على AWS S3.
  • النشر عبر Docker Compose خلف Nginx مع TLS.

القرارات، ولماذا

ثلاثة أدوار في نموذج البيانات، لا ثلاثة تطبيقات

المشرف والطبيب والفنّي يرون أشياء مختلفة، لكنهم يرون الحالة نفسها. فصلهم إلى تطبيقات مستقلة كان يعني ثلاث قواعد كود ومشكلة مزامنة؛ ووضع الأدوار في طبقة الصلاحيات فوق نموذج واحد جعل للحالة وضعًا واحدًا، ومن يراها أو ينقلها قاعدة لا إصدارًا منفصلًا.

دورة العمل هي المخطّط

الاستلام والإسناد والمراجعة والتسليم حالات تنتقل بينها الطلبات، فوُضعت في قاعدة البيانات مع الانتقالات المسموح بها من كل حالة. البديل — حقل نصّي تضبطه أي شاشة مفتوحة — هو ما ينتهي بحالة مُسلَّمة وغير مُراجَعة في الوقت نفسه.

S3 للأشعة، و PostgreSQL لما عداها

صور أشعة الأسنان كبيرة وكثيرة، ولا يُبحث فيها بالمحتوى أبدًا. إبقاؤها خارج قاعدة البيانات أبقى النسخ الاحتياطية صغيرة والاستعادة سريعة، وجعل الواجهة البرمجية تُعيد مراجع لا تمرّر ميجابايتات.

التقنيات

  • Flutter Web
  • Node.js / Express
  • PostgreSQL
  • JWT
  • Docker Compose
  • Nginx (TLS)
  • AWS S3

تبني شيئًا مشابهًا؟

أخبرني بما تريد إطلاقه وسأقول لك بصراحة إن كنت الشخص المناسب لبنائه.