Muhammad Arslan
وظفني
العودة إلى المشاريع

VCM

تطبيق ويب قائم على الأدوار يضع كل ما يحتاجه المجمع السكني في واجهة واحدة: الملاك، والمقيمون، والمالية، والحجوزات، والطلبات، والتقارير.

الدور: Lead front-end engineerالجدول الزمني: 2025-2026النوع: Web app (B2B SaaS)

React 19

React Router 7

Vite

TypeScript

SCSS

Jotai

SWR

Firebase Cloud Messaging

لوحة تحكم مالك العقار في VCM لمجمع تجريبي، مع عينات لأرصدة الحسابات وطلبات الخدمة

نظرة عامة

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

المشكلة

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

دوري ومنهجية العمل

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

الحزمة التقنية

إطار العملReact 19 with React Router 7
البناءVite
اللغةTypeScript
تنسيق المظهر والتصميمSCSS, organised per feature
إدارة الحالةJotai for app-wide state (auth, sidebar, selected property, notifications)
البياناتSWR over a shared Axios client, with automatic auth handling
الإشعاراتFirebase Cloud Messaging
إعداد التقاريرRecharts for dashboards; @react-pdf/renderer and CSV utilities for exports

الميزات الرئيسية

تجربتان قائمتان على الأدوارهيكلان مستقلان للإدارة والملاك يوجهان المستخدمين إلى المكان الصحيح ويفرضان قواعد الوصول.
تنقل مستند إلى الصلاحياتيتم بناء الشريط الجانبي بناءً على الصلاحيات الفعلية لكل مستخدم، بحيث لا يرى الأشخاص سوى ما يُسمح لهم باستخدامه.
طبقة بيانات مشتركةمسار طلبات موحد يدرج ترويسات المصادقة والجهاز، ويعتمد التخزين المؤقت عبر SWR، ويعالج الجلسات المنتهية بإعادة المستخدم بسلاسة إلى صفحة تسجيل الدخول.
لبنات بناء قابلة لإعادة الاستخدام للميزاتجداول عرض البيانات مع الترقيم والتقسيم، وحقول تصفية مرتبطة بالرابط URL، ونماذج في نوافذ منبثقة، وبطاقات رسوم بيانية، ورفع الملفات، وأزرار التصدير التي يتشكل منها التطبيق بأكمله.
تغطية تشغيليةطلبات الخدمة، وحجز المرافق وتقويم المجمع، والشاشات المالية (المدفوعات، وكشوف الحسابات، والفواتير، والتذكيرات)، وإدارة المستخدمين والوحدات، وإعداد التقارير.
الإشعارات اللحظيةإشعارات Firebase مع تنبيهات منبثقة داخل التطبيق (toasts).
تصدير ملفات PDF وCSVلمسارات العمل المالية وإعداد التقارير التي تتطلب مخرجات قابلة للعمل دون اتصال أو جاهزة للتقديم.

معرض الصور

مساحة عمل تجريبية لمالك العقار في VCM تتضمن المدفوعات والمستندات وفعاليات المجمع
مخططات بيانية لطلبات الخدمة والمشكلات في VCM تتضمن سجلات تجريبية

التحديات والحلول

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

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

النتيجة

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

هل تواجه تحدياً تقنياً مشابهاً في منتجك؟

شاركني الوضع الحالي للمنتج، والنتيجة المطلوبة، والمعوقات القائمة. وسأعتمد على ذلك في تحديد محطة تسليم أولى منطقية وعملية.

خدمات تطوير البرمجيات كخدمة
ابدأ ملخص مشروعك
جميع المشاريعالمشروع التاليZED (تذكيراتي الإسلامية)
VCM: منصة إدارة العقارات والمجمعات السكنية (الواجهة الأمامية بـ React) | Muhammad Arslan