• 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 इसे आधिकारिक रूप से लागू करे, तो और अधिक उपयोगकर्ताओं की सुविधा बढ़ सकती है
  • यह "अनौपचारिक लेकिन प्रभावी अनुभव" बनाने का एक दर्ज उदाहरण बन गया

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.