# بيت العمر · Villa Decision Hub

> أداة تفاعلية متعددة الصفحات لتحليل قرار شراء/بناء السكن الأول. حالياً يميل القرار للبناء الذاتي مع الفيلا الجاهزة كبديل مرجعي.

**آخر تحديث:** 2026-04-27

---

## 🌐 الرابط الدائم

**https://muaths-mac-mini.tailbf5bf5.ts.net**

| الصفحة | الرابط |
|---|---|
| الداشبورد | https://muaths-mac-mini.tailbf5bf5.ts.net/villa-plan.html |
| رحلة البناء | https://muaths-mac-mini.tailbf5bf5.ts.net/timeline.html |
| الخطة المالية | https://muaths-mac-mini.tailbf5bf5.ts.net/financial-plan.html |

الاستضافة عبر **Tailscale Funnel** على Mac mini المحلي. الرابط ثابت ولا يتغيّر مع إعادة التشغيل.

---

## 📄 الصفحات

| الملف | الوصف |
|---|---|
| **`villa-plan.html`** | الداشبورد الرئيسي — مدخلات البناء + المقارنة مع الجاهزة + التدفق النقدي + السوق والمخاطر |
| **`timeline.html`** | رحلة البناء الذاتي — 6 مراحل تفصيلية (تحضير، أرض، تصميم، تمويل، تنفيذ، تسليم) مع مهام قابلة للتعديل، تواريخ تسليم، مرفقات، وملاحظات |
| **`financial-plan.html`** | الخطة المالية طويلة المدى — قرض البناء، القرض الشخصي، توزيع الراتب، السنة الأولى تفصيلياً، محفظة الاستثمار VOO، وما بعد القرض الشخصي |

التنقل بين الصفحات عبر الـ **sidebar** (الأيقونات على اليمين) في كل صفحة.

---

## 🗂️ ملفات المشروع

| الملف | الغرض |
|---|---|
| `villa-plan.html`, `timeline.html`, `financial-plan.html` | الصفحات الثلاث (single-file apps) |
| `villa.png` | صورة الفيلا (PNG شفاف) للـ Hero |
| `state.json` | بيانات الداشبورد (يُولَّد تلقائياً، يتزامن iCloud) |
| `timeline.json` | بيانات رحلة البناء (المهام، التواريخ، الملاحظات) |
| `attachments/<phase>/<task>/...` | الملفات المرفقة على المهام |
| `server.py` | السيرفر المحلي (Python stdlib) — يقدّم الصفحات + endpoints للحفظ والرفع |
| `villa-url.sh` | سكربت يطبع الرابط العام الحالي |
| `context.md` | السياق المالي الكامل والمعطيات والقرارات |
| `DESIGN.md` | مرجع نظام التصميم |
| `README.md` | هذا الملف |

ملفات إضافية على مستوى النظام (خارج iCloud):

| الملف | الغرض |
|---|---|
| `~/Library/LaunchAgents/com.muath.villa-server.plist` | يشغّل `server.py` تلقائياً عند بدء النظام |
| `~/Library/LaunchAgents/com.muath.villa-tunnel.plist` | (معطّل) cloudflared tunnel — احتياطي |
| `/Library/LaunchDaemons/com.tailscale.tailscaled.plist` | Tailscale daemon (يبدأ مع النظام) — يستعيد Funnel تلقائياً |
| `/opt/homebrew/bin/villa-url` | symlink لـ `villa-url.sh` (احتياطي) |

---

## 🚀 التشغيل

### تلقائي (الإعداد الحالي)
يبدأ كل شيء عند تسجيل الدخول بدون تدخّل:
- **`server.py`** يشغّله launchd على المنفذ 8765 (محلي)
- **Tailscale Funnel** يعرض المنفذ على HTTPS بالرابط الثابت
- **Tailscale daemon** يبدأ مع النظام ويستعيد إعدادات Funnel تلقائياً

### للتأكد من الحالة
```bash
# السيرفر المحلي
launchctl list | grep villa-server

# حالة Funnel
tailscale funnel status

# المنفذ مفتوح؟
lsof -nP -iTCP:8765 -sTCP:LISTEN
```

### إعادة التشغيل اليدوية
```bash
# لو احتجت إعادة تشغيل السيرفر
launchctl kickstart -k gui/$(id -u)/com.muath.villa-server

# لو احتجت إعادة تشغيل Funnel
tailscale funnel --https=443 off
tailscale funnel --bg 8765
```

---

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

### المشتركة بين الصفحات
- **Theme persisted** — الوضع النهاري/الليلي يُحفظ في localStorage ويتزامن بين الصفحات بدون فلاش
- **Sticky pill nav** — عند النزول، الشريط العلوي يختفي ويبقى الـ pill nav زجاجياً عائماً فوق المحتوى
- **View transitions** — انتقالات سلسة بين الصفحات (fade + scale، Apple-style easing)
- **Eye toggle** — زر العين يخفي/يظهر الأرقام الحساسة (نقاط `•` بأطوال عشوائية)
- **حفظ تلقائي** — أي تعديل يُحفظ بعد 500ms في `state.json` أو `timeline.json` على iCloud
- **متجاوب** — يعمل على Desktop, iPad, iPhone

### في الداشبورد (`villa-plan.html`)
- 4 أقسام: المدخلات → المقارنة → التدفق النقدي → السوق والمخاطر
- ✏️ كل الأرقام قابلة للتعديل (الراتب، الأرض، البناء، الهامش، إلخ)
- 📊 PMT حسابي ذاتي + DTI + توزيع الراتب على شكل ring chart
- 🏠 صورة الفيلا في Hero مع floating cards لإحصائيات سريعة
- 📤 تصدير PDF (شخصي يشمل الكل، أو للغير يخفي الحساس)
- 🔄 تقسيم قرض البناء إلى "للأرض" و "للبناء" (مهم لمعرفة قيمة قرض الأرض الإضافي)

### في رحلة البناء (`timeline.html`)
- 6 مراحل عمودية متصلة بخط زمني
- ✅ كل مهمة قابلة للتوسعة لإضافة: المسؤول، تاريخ الإنجاز، خطوات فرعية، ملاحظات، مرفقات
- 📎 رفع ملفات على مستوى كل مهمة (تُحفظ في `attachments/`)
- 🔘 حالات للمراحل: مخططة → جارية → منجزة (تأشير)
- 📍 pill nav بأسماء المراحل (التحضير، الأرض، التصميم، التمويل، البناء، التسليم)
- ✏️ المهام الفرعية فيها مسؤول وتاريخ تسليم inline

### في الخطة المالية (`financial-plan.html`)
- 6 أقسام: القرض العقاري → القرض الشخصي → توزيع الراتب → السنة الأولى → محفظة VOO → ما بعد القرض الشخصي
- 📋 جداول amortization كاملة بسنوات
- 💰 القرض الشخصي محسوب كـ Saudi flat-rate murabaha (1.09% × 5 سنوات على المبلغ الأساسي)
- 🔄 تكامل تام مع الداشبورد (يقرأ ويكتب في نفس `state.json`)
- 📅 جدول السنة الأولى شهرياً (راتب، قروض، متبقي، استثمار VOO، رصيد متراكم)

---

## 💾 آلية الحفظ

```
المتصفح ←→ /state.json (POST/GET)
                ↓
           server.py
                ↓
     state.json داخل iCloud
                ↓
    يتزامن على بقية أجهزتك
```

الفايدة: عدّل من iPhone، شف التغيير من Mac (والعكس) بدون أي إعداد إضافي.

---

## 🛠 الاستمرار في التطوير

### 🎯 برومبت الجلسة القادمة (انسخه كما هو)

```
المشروع في:
~/Library/Mobile Documents/com~apple~CloudDocs/Me/AI/بيت العمر/

اقرأ README.md و DESIGN.md و context.md، ثم اقرأ:
- villa-plan.html       (الداشبورد)
- timeline.html         (رحلة البناء)
- financial-plan.html   (الخطة المالية)

شوف git status و git diff إذا فيه تعديلات لم تُحفظ.

طلبي: [اكتب طلبك هنا]
```

### 📌 تذكير مهم

- **موعد الاجتماع:** الخميس 2026-04-30 — اجتماع المطوّر العقاري لتحديد التكاليف الإضافية. بعده نُعيد تفعيل قسم "التكاليف الإضافية" في الداشبورد بالأرقام الفعلية.
- **التوجّه الحالي:** البناء الذاتي (الفيلا الجاهزة بديل مرجعي فقط).
- **القرض الشخصي قائم:** 1,810,351.93 ر.س (1.09% × 5 سنوات flat-rate)، السداد يبدأ مايو 2026.

### 🌐 للوصول للموقع من أي جهاز

افتح الرابط الدائم:
**https://muaths-mac-mini.tailbf5bf5.ts.net/villa-plan.html**

(يعمل ما دام Mac mini شغّال)

---

## 📊 الحسابات الأساسية

### قرض البناء العقاري (PMT — تناقص الرصيد)
```
PMT = (P × r) / (1 − (1 + r)^−n)
```
حيث `P` = مبلغ القرض، `r` = هامش شهري، `n` = عدد الأشهر.

### القرض الشخصي (مرابحة flat-rate)
```
إجمالي الفائدة = P × معدل سنوي × عدد سنوات
إجمالي السداد = P + إجمالي الفائدة
القسط الشهري = إجمالي السداد / (سنوات × 12)
```

### الضريبة الصافية للعقار
```
الضريبة = (السعر × 5%) − 50,000 إعفاء (للمسكن الأول)
```

### تقسيم قرض البناء
```
own_funds = الوديعة + الدعم السكني
loan_for_land = max(0, تكلفة الأرض − own_funds)
loan_for_construction = max(0, تكلفة البناء − ما تبقى من own_funds)
```

---

## 🔒 الخصوصية

- **الرابط العام (trycloudflare):** أي شخص معه الرابط يقدر يفتح. الرابط مخفي ومتغيّر، لكن ليس مؤمَّن.
- **الحجب الافتراضي:** الأرقام ظاهرة عند الفتح. اضغط زر العين لتفعيل الحجب يدوياً.
- **التصدير للغير:** يحذف البطاقات الحساسة كاملة (الراتب، القروض، التوزيع، الاستثمار).
- **للحماية الأقوى:** انتقل إلى Cloudflare Pages + Access (مجاني، يضيف طبقة auth).

---

## 📅 الحالة الحالية

| الموضوع | الحالة |
|---|---|
| الداشبورد الرئيسي | ✅ مكتمل |
| رحلة البناء (timeline) | ✅ مكتمل (6 مراحل، مهام تفصيلية) |
| الخطة المالية | ✅ مكتمل (مع تقسيم قرض البناء + القرض الشخصي) |
| التكاليف المخفية | ⏸️ مؤجلة لما بعد اجتماع المطوّر العقاري (الخميس 2026-04-30) |
| رابط ثابت | ✅ Tailscale Funnel — `muaths-mac-mini.tailbf5bf5.ts.net` |
| Auth/حماية | ⏸️ غير مفعّل (الرابط عام لمن يعرفه) — ممكن إضافة Tailscale ACLs لاحقاً |
