# Zenzop: लास्ट माइल के लिए बने डिलीवरी ऐप्स

> Zenzop के कस्टमर और राइडर ऐप्स को React Native में शून्य से बनाना: लाइव ट्रैकिंग, iOS Live Activities, और एक ETA इंजन जो 28% ज़्यादा सटीक हुआ।

Canonical URL: https://saifsiddiqui.in/hi/work/zenzop/ (this is its markdown representation; the same URL serves HTML to browsers)
Other languages: en: https://saifsiddiqui.in/work/zenzop/ · kn: https://saifsiddiqui.in/kn/work/zenzop/ · ur: https://saifsiddiqui.in/ur/work/zenzop/ · te: https://saifsiddiqui.in/te/work/zenzop/ · ar: https://saifsiddiqui.in/ar/work/zenzop/ · hi-Latn: https://saifsiddiqui.in/hi-latn/work/zenzop/

**भूमिका:** 0→1 बनाया  
**स्टैक:** React Native, Swift, Google Maps, CodePush

**लिंक्स**

- iOS: https://apps.apple.com/in/app/zenzop/id6749267701

## समस्या

Zenzop एक ऑन-डिमांड डिलीवरी ऐप है: खाना, ग्रोसरी, दवाइयाँ, और रोज़मर्रा की ज़रूरतें आपके
दरवाज़े तक। डिलीवरी दो चीज़ों पर टिकती या गिरती है जिन्हें कस्टमर सीधे महसूस करता है: क्या
मुझे पता है कि मेरा ऑर्डर कहाँ है, और क्या ETA ईमानदार है। मेरा काम था वो ऐप्स बनाना जो
दोनों को संभालें, शून्य से, iOS और Android के लिए।

## फ़ैसले

**दो ऐप्स, एक काम।** मैंने दोनों तरफ़ पूरी तरह React Native में बनाए: Shop ऐप जिससे कस्टमर
ऑर्डर करता है, और Rider ऐप जिसे डिलीवरी पार्टनर चलाता है। हर एक iOS और Android पर शिप हुआ,
ताकि एक छोटी टीम चारों सरफ़ेस पर एक साथ काम कर सके। Google Maps रियल-टाइम जियोलोकेशन और
रूट ऑप्टिमाइज़ेशन संभालता है, वही रीढ़ जो दोनों ऐप्स साझा करते हैं।

**लाइव ट्रैकिंग जो लॉक्ड फ़ोन में भी चले।** राइडर का फ़ोन पूरी ट्रिप जेब में रहता है। मैंने
बैकग्राउंड लाइव ट्रैकिंग बनाई ताकि राइडर की पोज़िशन तब भी बहती रहे जब ऐप फ़ोरग्राउंड में न
हो, और iOS पर मैं Swift के साथ नेटिव गया ताकि Live Activities चला सकूँ: ऑर्डर स्टेटस और
राइडर प्रोग्रेस Dynamic Island और लॉक स्क्रीन पर, ताकि कस्टमर बिना कुछ खोले देख सके कि उसका
खाना कहाँ है। एक ऐप जिसे लोग चेक करते हैं और एक ऐप जिस पर लोग भरोसा करते हैं, इन दोनों के
बीच यही फ़र्क़ है।

**एक ETA इंजन, ETA अंदाज़ा नहीं।** डिलीवरी ETA एक वादा है। मैंने एक इंजन बनाया जो इसे
डिस्टेंस मैट्रिसेस, लाइव ट्रैफ़िक, राइडर की लाइव पोज़िशन, और रूट के हिस्टोरिकल एवरेज से
कैलकुलेट करता है, न कि एक सीधी-लाइन के अंदाज़े से। इसने ETA की सटीकता 28% बढ़ाई, वो नंबर
जो कस्टमर हर एक ऑर्डर पर महसूस करता है।

**लोड में तेज़, फ़िक्स में तेज़।** मैंने ऐप्स को 30% तेज़ लोड टाइम के लिए रीफ़ैक्टर किया और
CodePush जोड़ा, ताकि ओवर-द-एयर अपडेट पूरे स्टोर रिलीज़ के बिना सीधे यूज़र्स तक पहुँचें।
फ़िक्स और बदलाव उसी दिन आते हैं, अगले रिव्यू साइकल में नहीं।

**डॉक्स ताकि API बॉटलनेक न बने।** मैंने कॉम्प्रिहेंसिव Swagger API डॉक्युमेंटेशन लिखी ताकि
क्लाइंट और बैकएंड टीमें ट्राइबल नॉलेज के बजाय एक सिंगल सोर्स ऑफ़ ट्रुथ के आधार पर बना,
टेस्ट, और इंटीग्रेट कर सकें।

## नतीजा

{/* TODO(saif): metrics slot, installs / on-time delivery rate / order volume.
    Qualitative until real numbers land. */}

दोनों ऐप्स iOS और Android पर शिप हुए: एक कस्टमर ऐप और एक राइडर ऐप शून्य से बने, लाइव
ट्रैकिंग के साथ जो जेब में भी टिकती है, Dynamic Island पर iOS Live Activities, और एक ETA
इंजन जो बेसलाइन से 28% ज़्यादा सटीक है। लास्ट माइल डिलीवरी का वो हिस्सा है जिसे कस्टमर असल
में अनुभव करता है, और ये ऐप्स इसी को संभाला हुआ महसूस कराने के लिए बने थे।

सारा काम: [/hi/work/](/hi/work/)

---

Mohd Saif, Product Engineer. I build solutions, not dead software.
Email: saifmd238@gmail.com · GitHub: https://github.com/Saif-09 · LinkedIn: https://www.linkedin.com/in/mohd-saif-134076141/ · Résumé (PDF): https://saifsiddiqui.in/resume

More for agents:
- [/llms.txt](/llms.txt): short summary of this site
- [/llms-full.txt](/llms-full.txt): the complete text of every page in one fetch
- [/agents.md](/agents.md): when to use this site, and how to query it
- [/sitemap-index.xml](/sitemap-index.xml): every URL, in seven languages
