Mijoz ilovasiNative macOSSwiftUI / AppKit
QurilmaESP32-S3ESP-IDF 5.5.2 / LVGL
Bulut yadrosiNestJS + PostgreSQLModulli monolit
Ushbu sahifada

01Tizim xaritasi#

Mijozdan bulutgacha

Mac ilovasi qurilma bilan USB orqali ishlaydi. Nginx HTTPS trafikni API, Admin va public saytga yo‘naltiradi. API PostgreSQL va private R2 bilan ishlaydi; firmware fayli ruxsat berilgan qisqa muddatli URL orqali Desktop’ga yuklanadi.

Yuklab olishSVG PNG Mermaid

API alohida mikroservislar to‘plami emas: autentifikatsiya, qurilmalar, pairing, release va biznes modullari bitta NestJS deploy tarkibida. Hozirgi topologiyada Redis, xabarlar brokeri yoki Kubernetes talab qilinmaydi.

02Komponentlar mas’uliyati#

QatlamVazifaChegara
macOSVazifalar, fokus, odatlar va qaydlar; USB transport; firmware tekshiruvi.SwiftUI / AppKit. Mahalliy ma’lumot va Keychain.
ESP32-S3Display, touch, animatsiya, identity proof va OTA flash yozish.Flash yozish qarori qurilmada qoladi.
Cloud APIPairing, inventory, ownership, firmware siyosati, heartbeat va audit.DTO validatsiya, autentifikatsiya va rol nazorati.
AdminOperatsion boshqaruv, release lifecycle, mijoz va buyurtmalar.API orqali ishlaydi; DB credential olmaydi.
PostgreSQLQurilma va cloud operatsiyalarining asosiy ma’lumotlar bazasi.Prisma sxemasi, constraint va tranzaksiyalar.
R2Tekshirilgan immutable firmware va release artefaktlari.Private bucket; vaqtinchalik signed download.

03Mahalliy ish va ma’lumotlar#

Vazifa, odat va qaydlar native ilovaning mahalliy persistence qatlamida saqlanadi. Hozirgi cloud API’da bu shaxsiy kontent uchun umumiy sinxronlash kontrakti yo‘q. Uni ko‘p qurilmali cloud-sync mavjud deb talqin qilish to‘g‘ri emas.

  • Internet: pairing, cloud holat tekshiruvi va yangi firmware yuklash uchun kerak.
  • USB: Desktop–qurilma buyruqlari, identity proof va normal OTA transporti.
  • Keychain: Mac installation private key va pairing credential uchun ajratilgan.
  • Mahalliy persistence encryption yoki to‘liq disk encryption kafolati emas; bu host siyosatiga bog‘liq.

04Ishonch chegaralari va pairing#

Qurilmani bog‘lash jarayoni

Server 5 daqiqalik challenge beradi. Qurilma nonce, serial va installation ID bo‘yicha HMAC proof yaratadi. API bir martalik claim code va proof’ni tekshiradi, so‘ng pairing credential beradi.

Yuklab olishSVG PNG Mermaid
MaterialHimoya
Device secretQurilma identity namespace’da; serverda AES-256-GCM bilan shifrlangan. Normal runtime protokoli uni eksport qilmaydi.
Claim codeBazaga pepper bilan HMAC hash yoziladi; pairing’dan keyin ishlatilgan deb belgilanadi.
Admin sessiyasiTasodifiy token, serverda hash; Secure / HttpOnly / SameSite Strict cookie.
Firmware signing keyOffline/lokal qoladi. Server, sayt va R2 private signing key olmaydi.

05Asosiy ma’lumotlar modeli#

Qurilma, egalik va release munosabatlari

Customer qurilmaga ownership yozuvi orqali bog‘lanadi. Bitta qurilmada bir nechta Mac installation bo‘lishi mumkin. FirmwareInstallation qurilma va release juftligiga tegishli bo‘lib, natijani saqlaydi.

Yuklab olishSVG PNG Mermaid

Unique constraint’lar serial, device–installation va device–release juftliklaridagi dublikatlarni cheklaydi. Release kaliti version + build + hardware + channel’dan iborat. Heartbeat so‘nggi holatni Device’da yangilaydi, tarixiy yozuvlarni esa 15 daqiqalik intervalda saqlaydi.

06Masshtablash va tekshiruv chegarasi#

Joriy production tekshiruvida bitta host, Nginx va Docker Compose servislar kuzatildi. Bu kichik operatsion footprint beradi, lekin ko‘p zonali high availability yoki autoscaling kafolati emas.

  • Keyingi masshtab bosqichi: API replikalari, shared rate-limit holati, managed/replicated DB va restore sinovlari.
  • Mustaqil pentest, compliance sertifikati, SLA yoki DR mashqi o‘tkazilgan deb tasdiqlanmagan.
  • Dependency xavfsizlik tekshiruvida kuzatilgan topilmalar patch va qayta test orqali yopilishi kerak.
Manba va dalillar

Hujjat amaldagi source snapshot va o‘qish rejimidagi infratuzilma tekshiruviga asoslangan. Hashlar tekshirilgan fayllarni aniqlaydi; bu mustaqil audit xulosasi emas.

  • apps/api/src/app.module.ts
  • apps/api/src/common/crypto.service.ts
  • apps/api/src/pairing/pairing.service.ts
  • apps/api/src/devices/devices.service.ts
  • apps/api/prisma/schema.prisma
  • hamroh-macos-native/HamrohNative/Services/PersistenceService.swift
  • hamroh-macos-native/HamrohNative/Services/CloudServices.swift
  • infra/docker-compose.production.yml
Yuklab olish: evidence.json
Keyingi hujjatAPI ma’lumotnomasi
Hamroh IO · Texnik hujjatlar · 2026-09-10

Hujjatlardan qidirish