דלג לתוכן הראשי

ארכיטקטורת מובייל (GabaiSmart Application)

אפליקציית "גבאי סמארט" היא אפליקציית React Native (CLI, לא Expo) המיועדת להתקנה על מסכי Android TV, סטרימרים וטאבלטים בבתי הכנסת. האפליקציה פועלת במצב "קיוסק" (Kiosk Mode) ומציגה את זמני התפילה והמודעות ברצף.

טכנולוגיות מפתח

  • Framework: React Native 0.76+.
  • Language: TypeScript.
  • TV Support: react-native-tvos (או התאמות ידניות לשלט רחוק).
  • Communication:
    • Socket.IO: לקבלת פקודות זמן אמת (Reload, Update).
    • MQTT: (אופציונלי) לטלמטריה.
    • Axios: לקריאות API רגילות (Sync).
  • Storage: AsyncStorage (שמירת הגדרות מקומיות, Token, ו-Cache).
  • Device Info: react-native-device-info (זיהוי Unique ID).

מבנה הפרויקט

GabaiSmart/
├── android/ # קוד נייטיב (Gradle, Java/Kotlin)
├── src/
│ ├── components/ # רכיבי UI (Clock, MessageCard, TfilaRow)
│ ├── screens/ # מסכים (MainDisplay, Settings, Pairing)
│ ├── services/ # לוגיקה עסקית (SocketService, ApiService)
│ ├── contexts/ # React Context (SettingsContext, ThemeContext)
│ ├── utilities/ # Helpers (Date formatting, Hebcal integration)
│ └── navigation/ # React Navigation (Stack Navigator)
└── App.tsx # נקודת כניסה

תהליך צימוד (Pairing)

  1. בהפעלה ראשונה, האפליקציה בודקת אם קיים authToken בזיכרון.
  2. בחוסר טוקן, מוצג מסך Pairing עם קוד בן 6 ספרות (מיוצר בשרת אנונימית או לוקאלית).
  3. הגבאי מזין את הקוד בממשק הניהול (WEB).
  4. השרת שולח אירוע paired ב-Socket.
  5. האפליקציה שומרת את הטוקן, מורידה את הקונפיגורציה של בית הכנסת ועוברת למסך התצוגה.

אמינות ושרידות (Resilience)

  • Offline Mode: האפליקציה שומרת את הנתונים האחרונים (זמני תפילה, הודעות) ב-Cache מקומי. במקרה של ניתוק אינטרנט, היא תמשיך להציג את המידע האחרון הידוע.
  • Auto Boot: מוגדרת ב-AndroidManifest לעלות אוטומטית בהדלקת המכשיר (RECEIVE_BOOT_COMPLETED).
  • Keep Awake: שימוש ב-react-native-keep-awake למניעת כיבוי מסך.