# بناء منصة PropTech عربية: التحديات التقنية في تطوير نظام إدارة عقارات للسوق السعودي

بناء منصة تقنية عقارية (PropTech) للسوق السعودي يختلف جذرياً عن بناء واحدة للسوق الأمريكي أو الأوروبي. الاختلاف ليس فقط في اللغة — بل في المنطق المحاسبي والتقويم ونظام الضرائب وطريقة تفاعل المستخدمين.

## التحدي الأول: الدقة المالية

في أي نظام يتعامل مع أموال، الدقة ليست ترفاً. اخترنا استخدام Decimal(20,8) في Prisma لجميع المبالغ وDecimal(10,8) للنسب. هذا يعطينا 8 خانات عشرية داخلياً. عند العرض، نقطع (truncate) إلى خانتين — لا نُقرّب (round). لأن التقريب على آلاف المعاملات يُنتج هللات وهمية.

## التحدي الثاني: FIFO ليس بسيطاً كما يبدو

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

## التحدي الثالث: تقويم مزدوج

منصة إيجار تستخدم التاريخ الهجري. التقارير المالية تحتاج الميلادي. دعمنا 3 أوضاع: هجري فقط، ميلادي فقط، ومزدوج. Intl.DateTimeFormat مع ar-SA-u-ca-islamic ساعد كثيراً.

## التحدي الرابع: ضريبة VAT بتصنيف الوحدة

القاعدة: سكني 0% — تجاري 15%. لكن المبنى الواحد قد يحتوي وحدات سكنية وتجارية. التصنيف يجب أن يكون على مستوى الوحدة وليس العقار.

## التحدي الخامس: واجهة RTL حقيقية

لم نبنِ واجهة إنجليزية ثم قلبناها. بنينا بالعربية أولاً ثم أضفنا الإنجليزية والتركية.

## المجموعة التقنية (Tech Stack)

المنصة ([أملاكي العقارية](https://amlakire.com)) مبنية على: Backend: NestJS + Prisma 7 + PostgreSQL + Redis، Web: Next.js App Router + Tailwind CSS + next-intl، Mobile: React Native + Expo Router، Infrastructure: Docker Compose on Hetzner + Cloudflare.

أهم درس تعلمته: لا تبنِ حلاً عاماً ثم تحاول تكييفه. ابنِ للسوق المحلي من اليوم الأول.
