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

Timesheets by Appforest - Jira प्लगइन

एक Jira टाइमशीट प्लेटफॉर्म बनाया जो पूरी कंपनी में और Atlassian Marketplace पर इस्तेमाल होता है, एक थर्ड-पार्टी टूल की जगह लेकर सालाना 9,000 डॉलर से ज़्यादा लाइसेंसिंग लागत बचाई।

Testlify में, इंजीनियरिंग टाइम ट्रैकिंग एक महंगे थर्ड-पार्टी एप्लिकेशन पर निर्भर थी जो रोज़मर्रा के Jira वर्कफ़्लो से कटा हुआ था। मैंने Timesheets by Appforest का फ्रंटएंड डेवलपमेंट लीड किया, जो टाइम ट्रैकिंग, टीम कैपेसिटी प्लानिंग और प्रोजेक्ट कॉस्ट एलोकेशन के लिए एक इंटीग्रेटेड Jira एप्लिकेशन है। यह प्रोडक्ट Atlassian Marketplace पर पब्लिश है और पूरी कंपनी में इंटरनली डिप्लॉय है।

Timesheets by Appforest - ओवरव्यू

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

  • Atlassian Marketplace इंटीग्रेशन: Atlassian Forge पर बनाया, जो Atlassian का sandboxed सर्वरलेस ऐप रनटाइम है, एक सेल्फ-होस्टेड बैकएंड की बजाय कसकर स्कोप्ड, least-privilege Jira रीड/राइट परमिशन के साथ।
  • एम्बेडेड Jira इंटरफ़ेस: तुरंत एंट्री के लिए सीधे Jira issues में एम्बेडेड एक टाइम-लॉगिंग पैनल, साथ ही कैलेंडर व्यू और डेली/वीकली टाइमशीट सबमिशन के लिए एक पूरा डैशबोर्ड ऐप, बिना कॉन्टेक्स्ट स्विच किए।
  • रिपोर्टिंग और एनालिटिक्स: स्प्रिंट अकाउंटिंग और प्रोजेक्ट कॉस्ट ट्रैकिंग के लिए Jira और इंटरनल टाइम-लॉग डेटा को मिलाने वाले रिपोर्ट व्यू।

Timesheets by Appforest - टाइम लॉगिंग

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

Atlassian Marketplace पर बाहरी ग्राहकों के लिए पब्लिश यह प्लगइन इंटरनली भी हमारे पुराने टाइम-ट्रैकिंग सॉफ्टवेयर की जगह ले गया, जिससे सालाना 9,000 डॉलर से ज़्यादा लाइसेंसिंग लागत बची और लीडरशिप को इंजीनियरिंग एलोकेशन में रियल-टाइम विज़िबिलिटी मिली।

टीम और ओनरशिप

मैंने एक छोटी टीम में फ्रंटएंड डेवलपमेंट लीड किया: मध्य-2024 से 4 योगदानकर्ताओं के 397 कमिट्स, आज भी एक्टिवली मेंटेन। यह एक मल्टी-ईयर, मल्टी-पर्सन प्रोडक्ट है, सोलो बिल्ड नहीं, और मेरी भूमिका फ्रंटएंड-स्कोप्ड थी, फुल-स्टैक ओनरशिप नहीं।

Forge, Connect नहीं

यह ऐप Atlassian Forge पर चलता है, एक sandboxed सर्वरलेस रनटाइम, पुराने Connect फ्रेमवर्क पर नहीं (एक सेल्फ-होस्टेड ऐप जिसका अपना बैकएंड होता है, जो iframes और webhooks के ज़रिए Jira से बात करता है)। Forge का मतलब है Jira-फेसिंग सरफेस के लिए कोई सर्वर चलाने या पैच करने की ज़रूरत नहीं: Atlassian एग्ज़िक्यूशन एनवायरनमेंट होस्ट करता है, मैनिफेस्ट में डिक्लेयर किए परमिशन स्कोप लागू करता है, और सर्वरलेस-स्टाइल सीमाएं (Node 22 ARM64 पर, 1024MB मेमोरी, हर इनवोकेशन पर बाउंडेड एग्ज़िक्यूशन टाइम) लगाता है, इस इंफ्रास्ट्रक्चर को हम पर छोड़ने की बजाय।

दो अलग इरादों के लिए दो सरफेस

यह प्रोडक्ट जानबूझकर एक की बजाय दो UI में बंटता है। एक issue-context पैनल आम केस को हैंडल करता है: जो टिकट पहले से खुला है उसी पर एक क्लिक में, बिना उसे छोड़े, टाइम लॉग करना। एक अलग पूरा डैशबोर्ड ऐप (कैलेंडर व्यू, रिपोर्ट्स, एडमिन सेटिंग्स, कॉस्ट ट्रैकिंग) प्लानिंग और ओवरसाइट हैंडल करता है, वे काम जिन्हें साइडबार पैनल की बजाय असली वर्कस्पेस चाहिए। हर सरफेस अपने काम के लिए बना है, दोनों करने के लिए एक इंटरफ़ेस पर ज़बरदस्ती करने की बजाय।

एक असली क्रॉस-प्रोजेक्ट इंटीग्रेशन

यह कोई आइसोलेटेड ऐप नहीं है। रिज़ॉल्वर फ़ंक्शन Google Calendar, Outlook Calendar, और साथी Appforest Timetracker VS Code एक्सटेंशन से आए टाइम-एंट्री सजेशन को साफ़ तौर पर इनजेस्ट और क्लियर करते हैं, ताकि VS Code में डेवलपर की कोडिंग एक्टिविटी यहां एक सजेस्टेड टाइमशीट एंट्री के रूप में सामने आ सके, मैनुअल री-एंट्री की ज़रूरत की बजाय।

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

  • Forge परमिशन स्कोप संकीर्ण और स्पष्ट हैं (read:jira-work, write:jira-work, manage:jira-configuration, प्लस यूज़र/टोकन रीड), कोई व्यापक कैच-ऑल ग्रांट नहीं।
  • UI कंपोनेंट्स Atlassian के अपने डिज़ाइन टोकन (@atlaskit) इस्तेमाल करते हैं, ताकि प्लगइन विज़ुअली नेटिव Jira से मैच करे, किसी बोल्टेड-ऑन थर्ड पार्टी की तरह न दिखे।
  • डैशबोर्ड ऐप Vue 3 है जिसमें स्टेट के लिए Pinia है, 46 कंपोनेंट्स, React-आधारित issue-context पैनल से अलग; एक प्रोडक्ट में दो फ्रंटएंड स्टैक, दोनों सरफेस पर आर्टिफिशियली खींची एक शेयर्ड कोडबेस नहीं।
  • Forge फ़ंक्शन का मेमोरी एलोकेशन एक असली परफॉर्मेंस समस्या के बाद 256MB से 1024MB किया गया, शुरुआती डिफ़ॉल्ट के तौर पर 1024MB सेट नहीं किया गया।

इन कॉस्ट/स्प्रिंट व्यू के पीछे की रिपोर्टिंग इंजन अपनी खुद की क्वेरी स्ट्रैटेजी को स्केल करती है: यह रिपोर्ट वॉल्यूम के आधार पर Jira JQL सर्च रिक्वेस्ट को 25, 50, या 100 issues प्रति कॉल में बांटती है, हर issue से 16 फ़ील्ड खींचती है, हर issue के लिए एक अलग रिक्वेस्ट भेजने या एक सिंगल अनबाउंडेड क्वेरी की बजाय जो बड़े स्प्रिंट पर टाइमआउट का जोखिम रखे।

Build vs. Buy

सेल्फ-होस्टेड Connect ऐप की बजाय Forge: Atlassian का रनटाइम और परमिशन मॉडल उस इंफ्रास्ट्रक्चर की जगह लेते हैं जो यह टीम खुद बनाती और सिक्योर करती। कस्टम UI किट की बजाय नेटिव Atlassian डिज़ाइन टोकन: प्लगइन Jira का अपना लुक और इंटरैक्शन पैटर्न इनहेरिट करता है, सिर्फ इस ऐप के लिए एक पैरेलल डिज़ाइन सिस्टम मेंटेन करने की बजाय।

Stack

Atlassian Forge (Node 22, ARM64), issue-context पैनल के लिए React 18, डैशबोर्ड ऐप के लिए Vue 3 Pinia के साथ, Atlassian Design System टोकन और प्रिमिटिव्स, Atlassian Marketplace के ज़रिए डिप्लॉय।