> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kazzle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# रीयलटाइम सिंक

> ऑफलाइन सपोर्ट और ऑटोमेटिक बैकग्राउंड सिंक के साथ लोकल-फर्स्ट ऐप्स।

## यह कैसे काम करता है

रीयलटाइम सिंक वाले ऐप्स डिवाइस पर एक लोकल डेटाबेस रखते हैं। रीड्स तुरंत (लोकल) होते हैं, राइट्स लोकली क्यू होते हैं, और सब कुछ बैकग्राउंड में सर्वर को सिंक होता है।

```text theme={"theme":"material-theme-darker"}
User writes -> Local database -> Upload queue -> Server -> Postgres
                                                            |
User reads  <- Local database <- Sync replication <---------+
```

नतीजा: तुरंत रीड्स, कोई लोडिंग स्पिनर नहीं, और एक ऐप जो खराब कनेक्शन या ऑफलाइन पर काम करता रहता है।

## AI क्या सेटअप करता है

AI को एक रीयलटाइम ऐप बनाने के लिए कहें। यह एक उपयुक्त सक्रिय डेटाबेस का पुनः उपयोग करता है जब एक मौजूद हो; अन्यथा यह एक डेटाबेस बनाता है, सिंक सर्विस चालू करता है, और एक दो-भाग वाला ऐप बनाता है:

* **UI** - लोकल डेटाबेस, लाइव क्वेरीज़ और सिंक कनेक्टर के साथ क्लाइंट ऐप
* **Process** - टोकन एंडपॉइंट, सिंक अपलोड रूट, और माइग्रेशन रनर

क्रेडेंशियल्स [vault](/work/vault) में स्टोर किए जाते हैं। AI `db` टूल के साथ डेटाबेस एनवायरनमेंट वेरिएबल्स को प्रोसेस कंपोनेंट में वायर करता है।

ऐप को तैयार माना जाने से पहले, डेटाबेस को `sync: ready` दिखाना चाहिए। अगर सिंक तैयार नहीं है, तो ऐप रेंडर हो सकता है लेकिन क्रॉस-डिवाइस रीयलटाइम डेटा काम नहीं करेगा।

## अंगूठे के नियम

* पहले लोकली लिखें। सिंक को बैकग्राउंड में अपलोड करने दें।
* एक बार लोकल डेटा मौजूद होने के बाद खाली स्टेट्स दिखाएं, लोडिंग स्पिनर नहीं।
* यूजर-विज़िबल स्टेट को सिंक्ड टेबल्स में रखें ताकि यह रिफ्रेश और ऑफलाइन उपयोग में बचे रहे।
* संबंधित लोकल राइट्स को एक साथ ग्रुप करें ताकि UI एक स्टेप में अपडेट हो।
* रीयलटाइम ऐप को पूरा मानने से पहले सिंक हेल्थ वेरिफाई करें।

## ऑफलाइन ऐप शेल

UI टेम्पलेट्स एक ऑफलाइन ऐप शेल शामिल कर सकते हैं ताकि ऐप पहली विज़िट के बाद नेटवर्क के बिना फिर से खुल सके। ऐप शेल स्टैटिक HTML, JS, CSS, और आइकन्स है।

* **Offline shell** ऐप को नेटवर्क के बिना खोलता है
* **Sync** ऑफलाइन रहते हुए ऐप डेटा को उपयोगी रखता है

एक साथ: ऐप नेटवर्क के बिना खुलता है, नवीनतम सिंक्ड डेटा दिखाता है, नई राइट्स को क्यू करता है, और कनेक्शन वापस आने पर सिंक करता है।

## रीयलटाइम सिंक कब उपयोग करें

| अच्छा फिट                         | ओवरकिल                       |
| --------------------------------- | ---------------------------- |
| टास्क मैनेजर और नोट्स ऐप्स        | स्टैटिक मार्केटिंग पेज       |
| कोलैबोरेटिव टूल्स                 | वन-ऑफ फॉर्म सबमिशन           |
| कमजोर कनेक्टिविटी वाले फील्ड ऐप्स | रीड-ओनली ब्रोशर साइट्स       |
| कुछ भी जो तुरंत महसूस होना चाहिए  | ऑफलाइन वैल्यू वाले ऐप्स नहीं |

## प्लेटफॉर्म वेरिएबल्स

Kazzle हर ऐप प्रोसेस में स्वचालित रूप से एनवायरनमेंट वेरिएबल्स का एक छोटा सेट इंजेक्ट करता है। ये आपके अपने [vault secrets](/work/vault) से अलग हैं।

| वेरिएबल                           | यह क्या है                                                 |
| --------------------------------- | ---------------------------------------------------------- |
| `PORT`                            | पोर्ट जिस पर आपकी प्रोसेस सुनना चाहिए                      |
| `HOST`                            | होस्टनेम जिससे बाइंड करना है (आमतौर पर `0.0.0.0`)          |
| `KAZZLE_API_URL`                  | Kazzle रनटाइम हेल्पर्स द्वारा उपयोग किया जाने वाला बेस URL |
| `KAZZLE_APP_COMPONENT_<NAME>_URL` | एक सिबलिंग कंपोनेंट का रनटाइम URL                          |

### सिबलिंग URLs

जब एक ऐप के कई कंपोनेंट्स होते हैं (जैसे एक `web` UI और एक `server` प्रोसेस), Kazzle सिबलिंग कंपोनेंट्स के लिए URLs इंजेक्ट कर सकता है:

```
# "web" पार
```
