منصوبے کے بارے میں
SWA (Self-hosted Website Analytics) ایک چھوٹا ویب اینالیٹکس سرور ہے جو Rust میں لکھا گیا ہے اور اپنا ڈیٹا SQLite میں اسٹور کرتا ہے۔ اسے اس طرح ڈیزائن کیا گیا ہے کہ اسے کسی بھی سرور پر ڈالا جا سکے اور بغیر کسی بیرونی سروس کے چلایا جا سکے: یوزر انٹرفیس، HTTP API اور ٹریکنگ اسکرپٹ سب rust-embed کے ذریعے ایک ہی ایگزیکیوٹیبل میں شامل ہیں، اور ڈیٹا بیس ایک واحد فائل ہے۔
پروجیکٹ کے مطابق فیچرز:
- سنگل بائنری ڈسٹری بیوشن جس میں ڈیش بورڈ، API اور ٹریکر شامل ہیں۔
- WAL موڈ میں SQLite اسٹوریج، جو فائل پر مبنی ہے اور جس میں کسی کنفیگریشن کی ضرورت نہیں ہے۔
- دو پورٹ آرکیٹیکچر: ایک پورٹ پبلک ٹریکر API کے لیے ہے جو ایونٹس وصول کرتا ہے، اور دوسرا پورٹ تصدیق شدہ (authenticated) ڈیش بورڈ کے لیے ہے۔
- پیج ویو ٹریکنگ کے ساتھ نامزد call-to-action ایونٹس، تاکہ وزٹس کے ساتھ لاگ ان، خریداری، ڈاؤن لوڈز یا دیگر کنورژنز کی گنتی کی جا سکے۔
- ملٹی ڈومین سپورٹ: ایک ہی انسٹنس سے کئی سائٹس کو ٹریک کیا جا سکتا ہے اور ڈیش بورڈ میں ان کے درمیان سوئچ کیا جا سکتا ہے۔
- پرائیویسی پر مبنی رویہ: Do-Not-Track کا احترام کیا جاتا ہے، اور وزیٹر فنگر پرنٹس کو کوکیز پر بھروسہ کرنے کے بجائے روزانہ تبدیل کیا جاتا ہے۔
- ڈیش بورڈ کو argon2 پاس ورڈ ہیشنگ کے ساتھ کوکی پر مبنی سیشنز کے ذریعے محفوظ کیا گیا ہے۔
- ڈیش بورڈ UI ڈارک تھیمڈ ہے اور ریئل ٹائم اعداد و شمار، منتخب کردہ تاریخ کی رینج، Chart.js گراف اور خودکار ریفریش دکھاتا ہے۔
ڈیفالٹ پورٹس ٹریکر API کے لیے 3330 اور ڈیش بورڈ UI کے لیے 3331 ہیں، جبکہ ڈیٹا بیس ڈیفالٹ طور پر ایک مقامی فائل ہے؛ ان تینوں کو کمانڈ لائن فلیگز کے ذریعے تبدیل کیا جا سکتا ہے۔ پہلی بار استعمال کرنے والا صارف ڈیش بورڈ پورٹ کھولتا ہے، ایک اکاؤنٹ رجسٹر کرتا ہے، اور پھر ان سائٹس پر ٹریکنگ سنپٹ شامل کرتا ہے جن کی وہ پیمائش کرنا چاہتا ہے۔ ٹریکر تقریباً ایک کلو بائٹ کا ہے اور خود بخود پیج پاتھ، ریفرر، براؤزر، آپریٹنگ سسٹم اور اسکرین سائز ریکارڈ کرتا ہے۔ پیج ویوز کے علاوہ، اسکرپٹ ایک گلوبل آبجیکٹ فراہم کرتا ہے جس میں ایک ایکشن میتھڈ ہوتا ہے جو ایک نام اور اختیاری لیبل لیتا ہے، اور یہ ایونٹس ڈیش بورڈ کے Actions سیکشن میں ظاہر ہوتے ہیں۔
HTTP سطح کو اسی کے مطابق تقسیم کیا گیا ہے۔ ٹریکر پورٹ پیج ویوز ریکارڈ کرنے، نامزد ایکشنز ریکارڈ کرنے اور ٹریکنگ اسکرپٹ فراہم کرنے کے لیے اینڈ پوائنٹس فراہم کرتا ہے۔ ڈیش بورڈ پورٹ مجموعی ٹوٹلز (ویوز، منفرد وزیٹرز، روزانہ اوسط ویوز، کل ایکشنز)، روزانہ پیج ویو سیریز، ٹاپ پیجز، ٹاپ ریفررز، براؤزر اور آپریٹنگ سسٹم کی تفصیلات، ایکشن اعداد و شمار، گزشتہ پانچ منٹ کے فعال وزیٹرز، ٹریکڈ ڈومینز کی فہرست، سیٹنگز کی بازیابی اور اپ ڈیٹ، اور کسی ڈومین کے تمام ڈیٹا کی بلک ڈیلیشن کے لیے تصدیق شدہ اینڈ پوائنٹس فراہم کرتا ہے۔ رجسٹریشن، لاگ ان اور لاگ آؤٹ اینڈ پوائنٹس اسی پورٹ پر ہیں لیکن پبلک ہیں، جہاں لاگ ان ایک سیشن کوکی سیٹ کرتا ہے۔
سورس کوڈ کو ایک Rust سائیڈ (CLI کے ساتھ انٹری پوائنٹ، دو سرور سیٹ اپ اور CORS ہینڈلنگ؛ SQLite اسکیمہ اور کوئریز؛ ریکویسٹ اور ریسپانس ماڈلز؛ اینڈ پوائنٹ ہینڈلرز؛ سیشن مڈل ویئر) اور ایک فرنٹ اینڈ ڈائریکٹری (جس میں ٹریکر، ڈیش بورڈ سنگل پیج ایپ، لاگ ان اور رجسٹریشن پیج، چارٹ اور ٹیبل لاجک، اور اسٹائل شیٹ شامل ہیں) میں منظم کیا گیا ہے۔ ڈیپلائمنٹ گائیڈنس میں خودکار ری اسٹارٹ کے ساتھ ایک systemd یونٹ، اور ایک اختیاری git push-to-deploy فلو شامل ہے جو ایک bare repository اور post-receive hook کا استعمال کرتا ہے جو کوڈ کو چیک آؤٹ کرتا ہے، ریلیز بائنری بناتا ہے اور سروس کو ری اسٹارٹ کرتا ہے؛ README میں نوٹ کیا گیا ہے کہ سرور پر Rust موجود ہونا چاہیے، یا محدود مشینوں کے لیے کراس کمپائلڈ بائنری کاپی کی جا سکتی ہے۔ یہ پروجیکٹ MIT لائسنس کے تحت ریلیز کیا گیا ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.