عن المشروع

Flarelytics هو مشروع تحليلي ويب مفتوح المصدر مصمم لقياس مدة إقامة الزوار عند قراءة المحتوى على موقع ويب. يهدف إلى توفير بديل يحترم الخصوصية مقابل خدمات التحليل الرئيسية التي غالباً ما تجمع بيانات شخصية واسعة أو تفتقر إلى مقاييس دقيقة لمدة الإقامة. **البنية المعمارية** - **سكريبت المتصفح** (موجود في مجلد `analytics`) – مقتطف JavaScript صغير يُضمن مالكي المواقع في صفحاتهم. يولد UUID لكل جلسة زائر ويرسل حدثين إلى الخلفية: أحدهما عند تحميل الصفحة والآخر عندما تُخفي الصفحة أو تُلغى. - **الخلفية** (في `src`) – تطبيق TypeScript يُنشر كعامل Cloudflare. يعرض واجهة برمجية بسيطة HTTP تستقبل الأحداث وتخزنها في قاعدة بيانات PlanetScale المتوافقة مع MySQL. كما تجميع الأحداث الخام إلى إحصائيات مدة الإقامة لكل صفحة يمكن عرضها في لوحة التحكم. **الميزات الرئيسية** - ذاتي التشغيل: تشغيل العامل في حسابك الخاص على Cloudflare وتخزين البيانات في قاعدة بيانات PlanetScale الخاصة بك. - أولوية الخصوصية: لا توجد ملفات تعريف ارتباط تتبع من طرف ثالث، ولا تسجيل عنوان IP، وكل البيانات تحت سيطرتك. - دعم نطاق واحد (قد تضيف النسخ المستقبلية معالجة نطاقات متعددة). - سير عمل نشر بسيط باستخدام `wrangler` و `pnpm`. **سير العمل في التطوير** 1. إنشاء حسابات مجانية على Cloudflare وPlanetScale. 2. استنساخ المستودع وتثبيت Node.js v18+ و pnpm و CLI لـ PlanetScale. 3. إعداد قاعدة بيانات PlanetScale باسم `flarelytics` مع فروع `main` و `dev`؛ واستخدام الفرع `dev` للعمل محليًا. 4. إنشاء عامل Cloudflare (مثل `flarelytics-dev`) وتخزين بيانات اعتماد قاعدة البيانات كمتغيرات بيئة سرية. 5. تشغيل `pnpm run setup-test-db` لإنشاء الجداول، ثم `pnpm run dev` لبدء تشغيل العامل المحلي. 6. النشر باستخدام `npm run deploy-dev` عند الاستعداد لبيئة الاختبار. **المساهمة** يتم صيانة المشروع بواسطة Google Developer Student Club في جامعة تكنولوجيا بودابست. يُشجع المساهمون على اختيار المشكلات من متعقب GitHub، والالتزام بسير عمل fork-branch-PR القياسي، والالتزام بالإرشادات المذكورة في README. **الحالة** Flarelytics قيد التطوير النشط ولا يُنصح باستخدامه بعد في الإنتاج. التخطيطات المستقبلية تشمل دعم نطاقات متعددة، ولوحات تحكم أكثر غنى، ومصادقة اختيارية لواجهة مستخدم التحليل.