इसके साथ संबद्ध FuelBuddy

FuelBuddy India - फ्रैंचाइज़ लॉजिस्टिक्स और ट्रैकिंग ऐप

FuelBuddy के फ्रैंचाइज़ ऐप पर कोर इंजीनियर: लाइव ट्रक ट्रैकिंग, Hasura GraphQL API, और सुव्यवस्थित लॉजिस्टिक्स फ्लो।

FuelBuddy में, मैं Franchise Application पर एक कोर इंजीनियर था, वह ऐप जिसे फ्रैंचाइज़ ऑपरेटर अपने क्षेत्रीय हब, इन्वेंटरी, और डिलीवरी फ्लीट को मैनेज करने के लिए इस्तेमाल करते हैं।

मैंने क्या बनाया

  • लाइव ट्रक ट्रैकिंग: एक इंटरैक्टिव Google Maps मॉड्यूल बनाया जो एक पोलिंग इंटरवल पर फ्लीट लोकेशन दिखाता है, ऑपरेटरों को ट्रक मूवमेंट और डिस्पैच स्टेटस में लगातार दृश्यता देते हुए।
  • GraphQL API और कैशिंग: urql के ज़रिए Hasura GraphQL इंजन का इस्तेमाल करते हुए डेटा API बनाए, एक नॉर्मलाइज़्ड क्लाइंट-साइड कैश और एक्सपायरी पर ऑटोमैटिक टोकन रिफ्रेश के साथ।
  • वर्कफ्लो सरलीकरण: मल्टी-स्टेप ऑपरेशनल कामों, जिनमें इन्वेंटरी रीकंसिलिएशन और ड्राइवर असाइनमेंट शामिल हैं, को सुव्यवस्थित इंटरफेस में दोबारा डिज़ाइन किया, जिससे ऑपरेशनल गलतियां घटीं।

यह क्यों मायने रखता था

फ्लीट ट्रैकिंग ने डिस्पैच लॉजिस्टिक्स को ज़्यादा पूर्वानुमेय बनाया और ट्रक के बेकार खड़े रहने का समय घटाया। सुव्यवस्थित असाइनमेंट और इन्वेंटरी वर्कफ्लो ने फ्रैंचाइज़ हब में ऑपरेशनल गलतियां घटाईं।

यहां "लाइव" का असल में मतलब क्या है

ट्रक मैप एक पोलिंग इंटरवल पर अपडेट होता है, कोई GraphQL सब्सक्रिप्शन नहीं, भले ही ऐप में कहीं और सब्सक्रिप्शन के लिए वही क्लाइंट वायर्ड है (graphql-ws कॉन्फ़िगर है और ऑर्डर-स्टेटस अपडेट के लिए इस्तेमाल होता है, बस इस खास मैप के लिए नहीं)। यह एक जान-बूझकर लिया गया सर्वर-लागत ट्रेडऑफ़ था, कोई चूक नहीं: एक सब्सक्रिप्शन सर्वर पर उतनी देर तक एक स्थायी कनेक्शन खुला रखता है जितनी देर क्लाइंट उसे खुला रखे, और एक मैप स्क्रीन जो हर डिस्पैचर की शिफ्ट में घंटों तक खुली रहती है, वह एक बार वाले ऑर्डर-स्टेटस अपडेट के मुकाबले कहीं ज़्यादा भारी, लंबे समय तक चलने वाला कनेक्शन लोड है। पोलिंग उस कनेक्शन को बिल्कुल खुला रखने से बचता है, इसके बदले समय-समय पर होने वाले request/response साइकल इस्तेमाल करता है।

असाइनमेंट और इन्वेंटरी, थोड़ा और विस्तार से

ड्राइवर असाइनमेंट सिंगल, बल्क, रीअसाइनमेंट, और अनअसाइनमेंट फ्लो को कवर करता है, सिर्फ़ एक "असाइन" क्रिया नहीं। इन्वेंटरी ट्रैकिंग खासतौर पर फ्यूल बाउज़र (टैंकर ट्रक) के स्टॉक बैलेंस को ट्रैक करती है, समर्पित स्टॉक-बैलेंस क्वेरी और लॉग टेबल के साथ, एक असली ऑपरेशनल डेटा मॉडल, कोई सामान्य पार्ट्स इन्वेंटरी नहीं।

डेटा मॉडल और स्केल

  • urql का नॉर्मलाइज़्ड कैश और एक Firebase-टोकन auth लेयर जो 401/expired-token रिस्पॉन्स पर अपने आप रिफ्रेश होती है, ताकि एक्सपायर हुआ सेशन किसी डिस्पैचर को काम के बीच में न रोके।
  • Playwright लॉगिन और ऑर्डर मैनेजमेंट को एंड-टू-एंड कवर करता है, वे दो फ्लो जिन पर ऐप की बाकी हर स्क्रीन निर्भर है।

Stack

Vue 3, Vite, Pinia, Hasura के खिलाफ urql, Firebase auth, Google Maps, टेस्ट के लिए Playwright।