# Mono Mebel — Kompyuter Ilovasi (EXE) va Sinxronizatsiya QO'LLANMASI

## Bu nima?

**Mono Mebel.exe** — ilovaning kompyuterda ishlaydigan versiyasi. Brauzer
kerak emas: exe ochilganda ilova o'z oynasida ishlaydi va ayni paytda
**markaziy ma'lumot serveri** ham ichida ishga tushadi. Barcha qurilmalar
(boshqa kompyuterlar va Android telefonlar) ma'lumotlarni shu server orqali
almashadi:

- Bitta qurilmada mahsulot qo'shilsa / tahrirlansa / o'chirilsa — bir necha
  soniya ichida boshqa qurilmalarda ham ko'rinadi.
- Internet yoki tarmoq uzilsa ilova oflayn ishlayveradi; yuborilmagan
  o'zgarishlar eslab qolinadi (ilova yopilib qayta ochilsa ham) va aloqa
  tiklanganda avtomatik yuboriladi.
- Ikki qurilma bir vaqtda yozuv qo'shsa — **ikkalasi ham saqlanadi**.

## Ochish

- Ish stolidagi **"Mono Mebel"** yorlig'ini ikki marta bosing
  (yoki `dist\Mono Mebel-win32-x64\Mono Mebel.exe`).
- Birinchi ochilishda Windows Firewall ruxsat so'rasa — **Allow** bosing.
- Ilova oynasi yopilsa, server ham to'xtaydi — boshqa qurilmalar sinxron
  bo'lishi uchun asosiy kompyuterda ilova ochiq turishi kerak.

## Boshqa qurilmalarni ulash — AVTOMATIK

Hech narsa sozlash shart emas:

### Android telefon (APK)

APK asosiy kompyuterda yig'ilganda server manzili uning ichiga yozib
qo'yiladi (`sync-config.json`). Ilova o'rnatilib ochilganda **serverga
o'zi ulanadi**. Kompyuterning IP manzili keyinchalik o'zgarsa ham, ilova
tarmoqni o'zi skanerlab serverni qayta topadi — qo'lda hech narsa
kiritilmaydi.

Zaxira yo'l (boshqa tarmoqdan APK bo'lsa): pastki o'ngdagi dumaloq tugma →
**"📷 QR orqali ulash"** yoki manzilni qo'lda kiritish.

> Telefon va kompyuter **bitta Wi-Fi tarmog'ida** bo'lishi kerak.

### Boshqa kompyuterlar

Hech narsa o'rnatmasdan brauzerda server manzilini ochish kifoya:
`http://192.168.1.7:8000` — ilova ochiladi, sinxronizatsiya avtomatik.
(Xohlasangiz shu papkani ko'chirib, o'sha kompyuterda ham exe ishlatsa
bo'ladi — lekin server faqat BITTA kompyuterda ishlashi kerak, qolganlari
unga ulanadi.)

### Sinxronizatsiya tugmasi ranglari

| Rang | Ma'nosi |
|------|---------|
| 🟢 Yashil | Ulangan, ma'lumotlar sinxron |
| 🟠 Sariq | O'zgarishlar yuborilmoqda / ulanmoqda |
| 🔴 Qizil | Server bilan aloqa yo'q (oflayn — qayta ulanishga urinadi) |
| ⚪ Kulrang | Server hali topilmagan (avtomatik qidirilmoqda) |

Sinxronizatsiya oynasida **"Onlayn qurilmalar"** soni ko'rinadi — hammasi
ulanganini shu yerdan tekshirsa bo'ladi.

## Birinchi marta ulaganda (muhim!)

Har bir qurilma serverga birinchi ulanganda o'z ma'lumotlarini yuboradi va
server hammasini **birlashtiradi** (yozuvlar ID bo'yicha qo'shiladi, hech
narsa o'chmaydi). Agar biror qurilmadagi ma'lumot keraksiz bo'lsa, ulashdan
OLDIN o'sha qurilmada tozalab qo'ying.

Sinxronizatsiya to'liq avtomatik — qo'lda yuborish/yuklash tugmalari yo'q;
o'zgarishlar o'zi yuboriladi va qabul qilinadi.

## Ma'lumotlar qayerda? (ZAXIRA!)

Markaziy baza — exe yonidagi faylda:

```
dist\Mono Mebel-win32-x64\sync-data.json
```

**Shu faylni vaqti-vaqti bilan boshqa joyga nusxalab qo'ying (backup)!**
Sozlamalar ham yonida: `server-config.json` → `{ "port": 8000, "token": "" }`

## Internet orqali sinxronizatsiya (turli joylardagi qurilmalar)

Bitta Wi-Fi bo'lmasa, serverni internetga chiqarish kerak:

1. **Hosting** (Railway, Render, VPS): `Kompyuter Platforma` papkasini
   yuklab `node build.js && node server.js` ishga tushiriladi (server.js
   mustaqil ham ishlaydi). Qurilmalarda hosting manzili kiritiladi.
2. **Cloudflare Tunnel / ngrok** orqali 8000-portni vaqtincha ochish.

Internetga chiqarganda **albatta maxfiy kalit o'rnating** —
`server-config.json` da `"token": "maxfiy-soz"` va har bir qurilmada
"Maxfiy kalit" maydoniga shu qiymat. Aks holda ma'lumotlaringiz ochiq!

## Windows Firewall (telefon ulanolmasa)

PowerShell'ni **administrator** sifatida ochib:

```
netsh advfirewall firewall add rule name="Mono Mebel Server" dir=in action=allow protocol=TCP localport=8000
```

## Ilova kodini yangilash

`Web Ilova` papkasida kod o'zgargach: **`EXE_YARATISH.bat`** ni ishga
tushiring — u qayta build qiladi va exe ni yangilaydi (ma'lumotlar
saqlanib qoladi, chunki sync-data.json exe yonida turadi).

## Muammolar

| Muammo | Yechim |
|--------|--------|
| Telefon ulanolmayapti | Bitta Wi-Fi'da ekanini tekshiring; Firewall qoidasini qo'shing; QR orqali ulanib ko'ring |
| "Port band" ogohlantirishi | Boshqa server (eski server.py yoki ikkinchi nusxa) ishlab turibdi — uni yoping |
| Ma'lumot ko'rinmayapti | Tugma yashilmi? Asosiy kompyuterda ilova ochiqmi? Bir necha soniya kuting — sinxron avtomatik |
| APK'da sinxron yo'q | APK qayta yig'ilishi kerak (BUILD_APK.bat) — server manzili APK ichiga yig'ish paytida yoziladi |
