इस प्रोजेक्ट के बारे में

SWA (Self-hosted Website Analytics) Rust में लिखा गया एक छोटा वेब एनालिटिक्स सर्वर है जो अपने डेटा को SQLite में स्टोर करता है। इसे इस तरह डिज़ाइन किया गया है कि इसे किसी सर्वर पर डालकर बिना किसी बाहरी सेवा के चलाया जा सके: यूजर इंटरफेस, HTTP API और ट्रैकिंग स्क्रिप्ट सभी rust-embed के माध्यम से एक ही एक्जीक्यूटेबल में एम्बेडेड हैं, और डेटाबेस एक सिंगल फाइल है। प्रोजेक्ट द्वारा वर्णित फीचर सेट: - सिंगल बाइनरी वितरण जिसमें डैशबोर्ड, API और ट्रैकर शामिल हैं। - WAL मोड में SQLite स्टोरेज, जो फाइल-आधारित है और जिसमें जीरो कॉन्फ़िगरेशन की आवश्यकता है। - टू-पोर्ट आर्किटेक्चर: एक पोर्ट पब्लिक ट्रैकर API को सर्व करता है जो इवेंट्स प्राप्त करता है, और दूसरा पोर्ट ऑथेंटिकेटेड डैशबोर्ड को सर्व करता है। - पेजव्यू ट्रैकिंग के साथ नामी कॉल-टू-एक्शन इवेंट्स, ताकि विजिट्स के साथ-साथ लॉगिन, खरीदारी, डाउनलोड या अन्य कन्वर्शन्स की गिनती की जा सके। - मल्टी-डोमेन सपोर्ट: एक ही इंस्टेंस से कई साइट्स को ट्रैक किया जा सकता है और डैशबोर्ड में उनके बीच स्विच किया जा सकता है। - प्राइवेसी-ओरिएंटेड व्यवहार: Do-Not-Track का सम्मान किया जाता है, और विजिटर फिंगरप्रिंट्स कुकीज़ पर निर्भर रहने के बजाय दैनिक रूप से रोटेट होते हैं। - डैशबोर्ड argon2 पासवर्ड हैशिंग के साथ कुकी-आधारित सत्रों द्वारा सुरक्षित है। - डैशबोर्ड UI डार्क थीम वाला है और रियल-टाइम आंकड़े, चयन योग्य डेट रेंज, Chart.js ग्राफ और ऑटोमैटिक रिफ्रेश दिखाता है। डिफ़ॉल्ट पोर्ट ट्रैकर API के लिए 3330 और डैशबोर्ड UI के लिए 3331 हैं, जबकि डेटाबेस डिफ़ॉल्ट रूप से एक लोकल फाइल है; इन तीनों को कमांड-लाइन फ्लैग्स के साथ बदला जा सकता है। पहली बार उपयोग करने वाला यूजर डैशबोर्ड पोर्ट खोलता है, एक अकाउंट रजिस्टर करता है, और फिर उन साइट्स पर ट्रैकिंग स्निपेट जोड़ता है जिन्हें वे मापना चाहते हैं। ट्रैकर लगभग एक किलोबाइट का है और स्वचालित रूप से पेज पाथ, रेफरर, ब्राउज़र, ऑपरेटिंग सिस्टम और स्क्रीन साइज रिकॉर्ड करता है। पेजव्यू के अलावा, स्क्रिप्ट एक ग्लोबल ऑब्जेक्ट के साथ एक एक्शन मेथड एक्सपोज़ करती है जो एक नाम और एक वैकल्पिक फ्री-फॉर्म लेबल लेता है, और वे इवेंट्स डैशबोर्ड के Actions सेक्शन में दिखाई देते हैं। HTTP सरफेस को तदनुसार विभाजित किया गया है। ट्रैकर पोर्ट पेजव्यू रिकॉर्ड करने, नामी एक्शन्स रिकॉर्ड करने और ट्रैकिंग स्क्रिप्ट सर्व करने के लिए एंडपॉइंट्स एक्सपोज़ करता है। डैशबोर्ड पोर्ट ओवरव्यू टोटल (व्यूज, यूनिक विजिटर्स, औसत व्यूज प्रति दिन, कुल एक्शन्स), डेली पेजव्यू सीरीज, टॉप पेज, टॉप रेफरर्स, ब्राउज़र और ऑपरेटिंग सिस्टम ब्रेकडाउन, एक्शन स्टैटिस्टिक्स, पिछले पांच मिनट के एक्टिव विजिटर्स, ट्रैक किए गए डोमेन की सूची, सेटिंग्स रिट्रीवल और अपडेट, और किसी डोमेन के लिए सभी डेटा के बल्क डिलीशन के लिए ऑथेंटिकेटेड एंडपॉइंट्स एक्सपोज़ करता है। रजिस्ट्रेशन, लॉगिन और लॉगआउट एंडपॉइंट्स उसी पोर्ट पर होते हैं लेकिन पब्लिक होते हैं, जिसमें लॉगिन एक सेशन कुकी सेट करता है। सोर्स को एक Rust साइड (CLI के साथ एंट्री पॉइंट, टू-सर्वर सेटअप और CORS हैंडलिंग; SQLite स्कीमा और क्वेरीज़; रिक्वेस्ट और रिस्पांस मॉडल; एंडपॉइंट हैंडलर्स; सेशन मिडलवेयर) और एक फ्रंट-एंड डायरेक्टरी में व्यवस्थित किया गया है जिसमें ट्रैकर, डैशबोर्ड सिंगल-पेज ऐप, लॉगिन और रजिस्ट्रेशन पेज, चार्ट और टेबल लॉजिक, और स्टाइलशीट शामिल हैं। डिप्लॉयमेंट गाइडेंस में ऑटोमैटिक रिस्टार्ट के साथ एक systemd यूनिट, और एक वैकल्पिक git push-to-deploy फ्लो शामिल है जो एक बेयर रिपॉजिटरी और एक post-receive हुक का उपयोग करता है जो कोड को चेक आउट करता है, एक रिलीज बाइनरी बनाता है और सर्विस को रिस्टार्ट करता है; README नोट करता है कि सर्वर पर Rust मौजूद होना चाहिए, या सीमित मशीनों के लिए क्रॉस-कम्पाइल्ड बाइनरी को कॉपी किया जा सकता है। यह प्रोजेक्ट MIT लाइसेंस के तहत जारी किया गया है।