عن المشروع
Bast هو تطبيق مفتوح المصدر لتحليلات الويب يستهدف المواقع الصغيرة التي تحتاج إلى رؤى أساسية حول حركة المرور دون استخدام ملفات تعريف الارتباط (cookies) أو خدمات تتبع الطرف الثالث. ينصب تركيزه المعلن على الخصوصية والبساطة: حيث يوصف بأنه مشروع بناه المؤلف لاستخدامه الشخصي ثم شاركه لاحقاً لأن بعض الأصدقاء وجدوه مفيداً.
ملاحظة هامة حول الحالة: ينص ملف README صراحةً على أن المشروع لم يعد يخضع للصيانة. لذا، يجب على أي شخص يفكر في استخدامه أن يتعامل معه كقاعدة كود للقراءة فقط، أو نقطة بداية لعمل نسخة مشتقة (fork)، أو تنفيذ مرجعي بدلاً من كونه منتجاً مدعوماً.
ما الذي يقيسه
يتم تخزين المقاييس بمرور الوقت مع اعتبار الأيام هي المقياس الذري. تحسب مشاهدات الصفحات الزوار المجهولين أو المحددين، لذا فإن ثلاثة زوار ينتجون ثلاث مشاهدات للصفحة؛ وتسجل كل مشاهدة الصفحة المحيلة (referrer) والرابط الحالي. أما المستخدمون فهم عدد الزوار الفريدين، ويتم استخلاصهم دون ملفات تعريف ارتباط: حيث يتم بناء معرف من عنوان IP الخاص بالزائر وuser-agent، ثم يتم تشفيره (hashed) وتخزينه في قاعدة البيانات. تبدأ الجلسة من جديد بعد 30 دقيقة من عدم النشاط، لذا فإن الزيارات المتكررة ضمن هذه النافذة تُحسب كجلسة واحدة. يتم تسجيل متوسط الوقت المستغرق في الموقع فقط عندما يتراوح بين 5 ثوانٍ و30 دقيقة لكل جلسة. تتم معالجة تحليل user-agent بواسطة مكتبة woothee، والتي توفر اسم المتصفح ونظام التشغيل والتفاصيل ذات الصلة. كما تم ذكر تحديد الموقع الجغرافي (Geolocation) كميزة مرغوبة ولكن لم يتم تنفيذها بعد.
البنية والتقنيات المستخدمة
تم كتابة الواجهة الخلفية (backend) بلغة Rust باستخدام إطار عمل actix-web وdiesel كـ ORM لقاعدة بيانات PostgreSQL. أما الواجهة الأمامية (frontend) فهي ثابتة في الغالب، مبنية باستخدام React مع Next.js، وتستخدم الواجهة chakra-ui مع مخطط بياني مخصص. يتطلب المشروع قاعدة بيانات PostgreSQL.
طريقة التشغيل
يوثق ملف README عدة مسارات. في أنظمة Unix وOS/X، يتم تثبيت diesel CLI مع ميزة postgres، وتشغيل diesel setup مقابل مثيل PostgreSQL يعمل، ثم تثبيت تبعيات الواجهة الأمامية باستخدام npm install داخل مجلد website. كما تم وصف مسار Docker: عبر الأمر docker-compose up، مع إمكانية تخصيص متغيرات البيئة في ملف docker-compose.yml. تغطي تعليمات التطوير إنشاء ملف .env من .env.sample، واستخدام cargo-watch اختيارياً لإعادة تحميل API أثناء التعديلات، أو تشغيل cargo run، وبدء الواجهة الأمامية باستخدام npm run dev. كما يتوفر زر نشر على Heroku كأسهل خيار للنشر. يحدد ملف README المنفذ المحلي 3333 للتطبيق الذي يعمل.
المساهمة والسياق
يشجع ملف README على طرح الأسئلة وتقديم طلبات السحب (pull requests)، ويرحب صراحةً بالمبتدئين والمطورين المبتدئين، ويوجه إلى ملف CONTRIBUTING.md لمزيد من التفاصيل. وينسب الفضل إلى Fathom كقاعدة كود قرأها المؤلف، ويشير إلى أن نهج تحديد المستخدم بدون ملفات تعريف ارتباط كان مستوحى من Ackee، وهو مشروع بلغة JavaScript. لغة الكود وحدها ليست سبب التصنيف هنا: بل القيمة للمستخدمين هي تحليلات حركة المرور لموقع يمتلكونه، يتم نشره على بنيتهم التحتية الخاصة.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.