مرحباً بالزملاء المبرمجين، ![]()
أعمل حالياً على تطوير (MVP) لمنصة عقارية جديدة باسم R.E، الهدف منها كسر احتكار السوق العقاري، التخلص من العمولات الخفية والمبالغ فيها، والأهم: تنظيف السوق من الإعلانات الوهمية والمكررة.
أحببت أن أشارككم الـ Architecture والتقنيات التي اخترتها للمشروع، وأسعد جداً بسماع آرائكم أو نصائحكم المعمارية بناءً على خبرتكم!
التقنيات المستخدمة (Tech Stack):
-
Backend: Laravel 12
-
Frontend: React.js
-
Bridge: Inertia.js (للحصول على تجربة SPA سريعة بدون تعقيد بناء API منفصل في مرحلة الـ MVP).
-
Database: MySQL
أبرز التحديات المعمارية والحلول (Architecture Highlights):
-
نظام صلاحيات موحد (Unified User Account): بدلاً من تعقيد قاعدة البيانات بحساب “بائع” وحساب “مشتري” منفصلين، استخدمنا Role-based system. أي مستخدم مسجل يمكنه تصفح العقارات، حفظها في المفضلة، أو تقديم طلب إضافة عقار من نفس الـ Dashboard.
-
دورة حياة العقار (Listing Lifecycle) لمنع الاحتيال: العقار لا يُنشر مباشرة. قمنا ببناء Workflow يمر بحالات (Draft ➔ Pending ➔ Approved ➔ Published). الإدارة تراجع الطلبات (Approve/Reject) لضمان موثوقية البيانات العالية.
-
حماية البيانات والأمان: المنصة تركز بشكل كبير على الأمان (Security). أرقام هواتف الملاك والوسطاء مخفية خلف نظام (Inquiry System) داخلي، حيث يرسل المشتري رسالته عبر النظام ليتم إشعار البائع، مما يحمي المستخدمين من الـ Spam.
-
التوسع المستقبلي (Scalability): رغم أننا بدأنا بـ Monolith مع Inertia لسرعة الإطلاق، إلا أن هيكلة قاعدة البيانات والـ Controllers مفصولة بشكل يسمح لنا لاحقاً ببناء RESTful APIs بسهولة لدعم تطبيق الموبايل، ودمج مساعد ذكي (AI Assistant) يعتمد على RAG للبحث العقاري.
سؤالي للمجتمع: بالنسبة لمنصات العقارات التي تحتوي على فلاتر بحث معقدة (السعر، المساحة، الموقع الجغرافي، والمميزات)، ما هي أفضل ممارساتكم لتحسين أداء استعلامات البحث (Search Queries) في MySQL؟ وهل تنصحون بالانتقال إلى Elasticsearch أو Typesense منذ الآن أم نؤجلها لمرحلة ما بعد الـ MVP؟
أسعد بنقاشكم وملاحظاتكم! ![]()
لماذا هذا البوست مناسب للمبرمجين؟
-
يبرز التقنيات: المبرمجون يحبون معرفة الـ Stack (Laravel, React, Inertia).
-
يشرح الهيكلة (Architecture): يتحدث عن الـ Workflow وتصميم قاعدة البيانات.
-
يختم بسؤال تفاعلي (Call to Action): طرح سؤال حول تحسين قواعد البيانات يشجع المبرمجين الآخرين على التعليق والتفاعل مع المنشور وإعطائك نصائح قيمة جداً لمشروعك.