- PureGym ऐप की धीमी उपयोगिता और जटिल एंट्री प्रक्रिया की असुविधा को दूर करने के लिए, इसे व्यक्तिगत रूप से Apple Wallet के लिए ऑप्टिमाइज़ किया गया
- मौजूदा QR कोड में हर बार ऐप खोलकर जानकारी लोड करनी पड़ती थी, और यह लगभग 47 सेकंड लेने वाला एक अप्रभावी एंट्री तरीका था
- विभिन्न reverse engineering, mitmproxy के उपयोग, PassKit framework आदि तकनीकी प्रक्रियाओं के जरिए ऑटो-रिन्यू होने वाला Wallet pass लागू किया गया
- इस प्रक्रिया में PIN code की सुरक्षा खामियां, API authentication संरचना, ब्रांच लोकेशन जानकारी आदि जैसी PureGym की आंतरिक कार्यप्रणाली, जो वेब पर उजागर थी, सामने आई
- अंततः सिर्फ 3 सेकंड में प्रवेश करने वाला user experience बनाया गया, और यह स्पष्ट किया गया कि यह केवल एक व्यक्तिगत प्रयोग है और आधिकारिक सेवा नहीं है
47 सेकंड: असुविधा की शुरुआत
- कार्यदिवस में सुबह 11:15 पर, PureGym के प्रवेश द्वार पर ऐप खोलने में 47 सेकंड लगे
- सिग्नल कमजोर था, और Wi‑Fi कनेक्शन, ऐप लॉन्च, कई push notifications, विशेष discount offers आदि को पार करने के बाद ही QR code दिखा
- असली QR code आने में बहुत समय लगता था, और दूसरे सदस्यों के सामने असहज महसूस होता था
- हफ्ते में 6 बार दोहराने पर हर सप्ताह 282 सेकंड खर्च होने वाला यह एक अप्रभावी अनुभव था
- Amazon Fresh जैसे frictionless अनुभव की तुलना में PureGym का entry UX काफी पीछे था
8 साल पुराने PIN का रहस्य
- लेखक 8-अंकों वाला PIN code पिछले 8 साल से वही इस्तेमाल कर रहा था
- यह PIN न कभी expire होता था, न बदला जाता था
- दूसरी ओर ऐप के भीतर का QR code हर 1 मिनट में नए मान से बदल जाता था
- वास्तविक सुरक्षा स्तर और असली implementation के बीच बड़ा विरोधाभास मौजूद था
- PIN तरीका बेहद लंबे समय तक बना रहता है, जबकि केवल QR code को सख्ती से सुरक्षित किया जाता है — यह एक तरह का "security theater" था
mitmproxy से PureGym को समझना
- शुरुआत में QR code का screenshot लेकर उसे Apple Wallet में इस्तेमाल करने की कोशिश की गई, लेकिन वह तुरंत काम नहीं किया
- PureGym का QR code dynamic तरीके से बनता था, लगभग 1 हफ्ते में expire होता था, लेकिन ऐप में हर 1 मिनट पर refresh होता था
- GitHub पर "PureGym" से जुड़े repos खोजकर API authentication structure का पता चला
- login के लिए इस्तेमाल होने वाला 8-अंकों का PIN, API password के रूप में भी वैसा ही इस्तेमाल हो रहा था
- Base64 में encoded basic auth जानकारी भी कमजोर सुरक्षा दिखाती थी
- ऐप ट्रैफिक का विश्लेषण करने के लिए mitmproxy जैसे proxy tools से requests intercept की गईं
- QR code की JSON structure में part1 (स्थिर id), part2 (timestamp), part3 (renewal salt) शामिल थे
- API refresh timing से लेकर expiry conditions तक सब कुछ बताता था
PassKit: Apple Wallet की क्षमता
- Apple Wallet pass कोई static card नहीं, बल्कि self-refresh, push notifications, location response आदि करने वाली mini app जैसी संरचना है
- PassKit implementation के लिए JSON spec, image resources, certificate signing, और real-time refresh के लिए web service की जरूरत होती है
- Apple Developer Portal से Pass Type ID और WWDR certificate जारी करवाना आवश्यक था
- certificate signing और management जटिल थे, लेकिन सफल होने पर असली डिवाइस पर बहुत smooth अनुभव मिला
Swift backend बनाना
- आमतौर पर Node.js इस्तेमाल किया जाता है, लेकिन लेखक ने Swift आधारित Vapor से सीधे PassKit web service लागू की
- जब pass को refresh की जरूरत होती, तो silent push के जरिए ऑटो अपडेट दिया जाता
- यूज़र को पता भी न चले, ऐसा स्वाभाविक pass refresh संभव हुआ
पूरे देश में PureGym लोकेशन ऑटोमेशन
- Apple Wallet pass निर्दिष्ट लोकेशन पर अपने-आप दिखाया जा सकता है
- PureGym की आधिकारिक साइट पर विस्तृत coordinates नहीं थे, लेकिन API से देशभर की ब्रांचों के coordinates की सूची मिली
- सभी ब्रांच coordinates को parse करके हर pass के लिए सबसे नज़दीकी ब्रांच तय की गई
- कमी: अगर PureGym किसी shopping center के भीतर हो, तो सिर्फ shopping के लिए जाने पर भी pass दिख जाता था
Apple Watch इंटीग्रेशन
- Apple Wallet pass बिना अलग काम के Apple Watch पर अपने-आप sync हो गया
- कलाई पर दो बार click करके scan करने और एंट्री तक पहुंचने में 3 सेकंड लगे, यानी बहुत बड़ी कमी
- 93% से अधिक समय की बचत हासिल हुई
आंकड़ों में बदलाव
- PureGym ऐप से पहले का एंट्री समय: 47 सेकंड
- Apple Wallet pass से एंट्री समय: 3 सेकंड
- एक हफ्ते में औसत बचत समय: 4.4 मिनट (सालाना 3.8 घंटे)
- आसपास के सदस्यों ने 23 बार पूछा, "क्या ऐसा कोई ऐप है?", और हर बार बताया गया कि यह अनौपचारिक है
- मांग होने के बावजूद copyright/service policy कारणों से इसे वितरित करने की कोई योजना नहीं है
बोनस: Home Assistant इंटीग्रेशन
- PureGym API के इनडोर occupancy endpoint के जरिए IoT dashboard पर मौजूदा gym crowding दिखाया गया
- data के आधार पर कम भीड़ वाले समय दोबारा जाने का फैसला संभव हुआ, जिससे workout efficiency और motivation में मदद मिली
इंजीनियरिंग की वास्तविकता और नैतिकता
- यह शुद्ध रूप से निजी असुविधा दूर करने का प्रयास था, लेकिन PureGym के भीतर यह ऐसा क्षेत्र था जिसमें कई सालों से सुधार नहीं हुआ था
- संगठन के बाहर बना prototype कभी-कभी आधिकारिक roadmap से भी तेज़ी से समस्या हल कर देता है
- आधिकारिक रूप से यह terms violation हो सकता है, और PureGym इसे कभी भी block कर सकता है
- इसे कभी automation/share नहीं किया गया; केवल निजी प्रयोग के लिए इस्तेमाल हुआ, और स्थिरता के लिए cache जैसे सिद्धांतों का पालन किया गया
अगले कदम और निष्कर्ष
- आगे चलकर "शर्मिंदगी push notification" जैसी विस्तार-आइडिया भी सुझाई जा सकती हैं
- व्यावहारिक उपयोगिता छोटी हो सकती है, लेकिन सालाना 3.8 घंटे की "अनावश्यक क्रियाओं" को ऑप्टिमाइज़ करने से संतोष मिला
- अगर PureGym इसे आधिकारिक रूप से लागू करे, तो और अधिक उपयोगकर्ताओं की सुविधा बढ़ सकती है
- यह "अनौपचारिक लेकिन प्रभावी अनुभव" बनाने का एक दर्ज उदाहरण बन गया
अभी कोई टिप्पणी नहीं है.