প্রকল্প সম্পর্কে
SWA (Self-hosted Website Analytics) হলো Rust-এ লেখা একটি ছোট ওয়েব অ্যানালিটিক্স সার্ভার যা SQLite-এ ডেটা সংরক্ষণ করে। এটি এমনভাবে ডিজাইন করা হয়েছে যাতে কোনো বাহ্যিক পরিষেবা ছাড়াই একটি সার্ভারে এটি চালানো যায়: ইউজার ইন্টারফেস, HTTP API এবং ট্র্যাকিং স্ক্রিপ্ট—সবই rust-embed-এর মাধ্যমে একটি এক্সিকিউটেবল ফাইলে এমবেড করা থাকে এবং ডেটাবেসটি একটি একক ফাইল হিসেবে থাকে।
প্রকল্পের বর্ণনা অনুযায়ী এর বৈশিষ্ট্যসমূহ:
- ড্যাশবোর্ড, API এবং ট্র্যাকার সমৃদ্ধ একক বাইনারি ডিস্ট্রিবিউশন।
- WAL মোডে SQLite স্টোরেজ, যা ফাইল-ভিত্তিক এবং জিরো কনফিগারেশন।
- টু-পোর্ট আর্কিটেকচার: একটি পোর্ট পাবলিক ট্র্যাকার API-এর জন্য যা ইভেন্ট গ্রহণ করে, এবং দ্বিতীয় পোর্টটি অথেন্টিকেটেড ড্যাশবোর্ডের জন্য।
- পেজভিউ ট্র্যাকিং এবং নামযুক্ত কল-টু-অ্যাকশন ইভেন্ট, যার ফলে ভিজিটের পাশাপাশি লগইন, পারচেজ, ডাউনলোড বা অন্যান্য কনভার্সন গণনা করা সম্ভব।
- মাল্টি-ডোমেইন সাপোর্ট: একটি ইনস্ট্যান্স থেকেই একাধিক সাইট ট্র্যাক করা যায় এবং ড্যাশবোর্ডে তাদের মধ্যে সুইচ করা যায়।
- গোপনীয়তা-কেন্দ্রিক আচরণ: Do-Not-Track সম্মান করা হয় এবং কুকিজের পরিবর্তে ভিজিটর ফিঙ্গারপ্রিন্ট প্রতিদিন পরিবর্তিত হয়।
- ড্যাশবোর্ডটি argon2 পাসওয়ার্ড হ্যাশিং সহ কুকি-ভিত্তিক সেশন দ্বারা সুরক্ষিত।
- ড্যাশবোর্ড UI-টি ডার্ক থিমযুক্ত এবং এতে রিয়েল-টাইম পরিসংখ্যান, তারিখের রেঞ্জ নির্বাচন, Chart.js গ্রাফ এবং অটোমেটিক রিফ্রেশ সুবিধা রয়েছে।
ডিফল্ট পোর্টগুলো হলো ট্র্যাকার API-এর জন্য ৩৩৩০ এবং ড্যাশবোর্ড UI-এর জন্য ৩৩৩১, এবং ডেটাবেসটি ডিফল্টভাবে একটি লোকাল ফাইল; কমান্ড-লাইন ফ্ল্যাগ ব্যবহার করে এই তিনটিকে পরিবর্তন করা সম্ভব। প্রথমবার ব্যবহারকারী ড্যাশবোর্ড পোর্টটি ওপেন করেন, একটি অ্যাকাউন্ট রেজিস্টার করেন এবং তারপর যে সাইটগুলো পরিমাপ করতে চান সেখানে ট্র্যাকিং স্নিপেট যোগ করেন। ট্র্যাকারটি প্রায় এক কিলোবাইট এবং এটি স্বয়ংক্রিয়ভাবে পেজ পাথ, রেফারার, ব্রাউজার, অপারেটিং সিস্টেম এবং স্ক্রিন সাইজ রেকর্ড করে। পেজভিউ ছাড়াও, স্ক্রিপ্টটি একটি গ্লোবাল অবজেক্ট প্রদান করে যার একটি অ্যাকশন মেথড রয়েছে; এই ইভেন্টগুলো ড্যাশবোর্ডের Actions সেকশনে প্রদর্শিত হয়।
HTTP সারফেসটি সেই অনুযায়ী বিভক্ত। ট্র্যাকার পোর্টটি পেজভিউ রেকর্ড করা, নামযুক্ত অ্যাকশন রেকর্ড করা এবং ট্র্যাকিং স্ক্রিপ্ট সার্ভ করার এন্ডপয়েন্টগুলো প্রদান করে। ড্যাশবোর্ড পোর্টটি ওভারভিউ টোটাল (ভিউ, ইউনিক ভিজিটর, প্রতিদিনের গড় ভিউ, মোট অ্যাকশন), দৈনিক পেজভিউ সিরিজ, শীর্ষ পেজ, শীর্ষ রেফারার, ব্রাউজার এবং অপারেটিং সিস্টেম ব্রেকডাউন, অ্যাকশন পরিসংখ্যান, গত পাঁচ মিনিটের সক্রিয় ভিজিটর, ট্র্যাক করা ডোমেইনের তালিকা, সেটিংস পুনরুদ্ধার ও আপডেট এবং কোনো ডোমেইনের সমস্ত ডেটা বাল্ক ডিলিট করার জন্য অথেন্টিকেটেড এন্ডপয়েন্ট প্রদান করে। রেজিস্ট্রেশন, লগইন এবং লগআউট এন্ডপয়েন্টগুলো একই পোর্টে থাকে তবে সেগুলো পাবলিক, যেখানে লগইন একটি সেশন কুকি সেট করে।
সোর্স কোডটি একটি Rust সাইড (CLI সহ এন্ট্রি পয়েন্ট, টু-সার্ভার সেটআপ এবং CORS হ্যান্ডলিং; SQLite স্কিমা এবং কুয়েরি; রিকোয়েস্ট এবং রেসপন্স মডেল; এন্ডপয়েন্ট হ্যান্ডলার; সেশন মিডলওয়্যার) এবং একটি ফ্রন্ট-এন্ড ডিরেক্টরিতে বিভক্ত, যেখানে ট্র্যাকার, ড্যাশবোর্ড সিঙ্গেল-পেজ অ্যাপ, লগইন এবং রেজিস্ট্রেশন পেজ, চার্ট এবং টেবিল লজিক এবং স্টাইলশিট রয়েছে। ডেপ্লয়মেন্ট নির্দেশিকায় অটোমেটিক রিস্টার্ট সহ একটি systemd ইউনিট এবং একটি অপশনাল git push-to-deploy ফ্লো অন্তর্ভুক্ত রয়েছে। README-তে উল্লেখ করা হয়েছে যে সার্ভারে Rust উপস্থিত থাকতে হবে, অথবা সীমাবদ্ধ মেশিনের জন্য ক্রস-কম্পাইল করা বাইনারি কপি করে নেওয়া যেতে পারে। প্রকল্পটি MIT লাইসেন্সের অধীনে প্রকাশিত।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.