প্রকল্প সম্পর্কে

ভিজিটর পরিসংখ্যান হলো Cloudflare Pages, Workers, D1 এবং GitHub-ভিত্তিক একটি হালকা ভিজিটর ট্র্যাকিং সিস্টেম। মূল ধারণা হলো ছবির ছদ্মবেশে একটি ট্র্যাকিং পিক্সেলের মাধ্যমে ভিজিট রেকর্ড করা, ছবি ও ফ্রন্টএন্ড Cloudflare এজে হোস্ট করা, লগ স্থায়ীভাবে D1-এ সংরক্ষণ করা এবং Telegram-এর মাধ্যমে রিয়েল-টাইম নোটিফিকেশন পাঠানো। প্রধান ফিচারগুলোর মধ্যে রয়েছে ট্র্যাকিং পিক্সেল আপলোড ও এমবেড করা, সময়, IP, অবস্থান, অপারেটর, ডিভাইস, সিস্টেম, ব্রাউজার ও সোর্সের বিস্তারিত লগ রেকর্ড করা, আজ, ৭ দিন, ৩০ দিন, ৩ মাস, ১ বছর সমর্থনকারী নমনীয় পরিসংখ্যান পরিসর এবং আইডেন্টিফায়ার অনুযায়ী ফিল্টার করা, ডিভাইস ফিঙ্গারপ্রিন্টসহ Telegram রিয়েল-টাইম পুশ যেখানে বাটন স্বয়ংক্রিয়ভাবে বর্তমান ডোমেইনে নির্দেশ করে, ওয়েব-ভিত্তিক ছবি ব্যবস্থাপনা যা Git রিপোজিটরিতে আপলোড করে এবং স্বয়ংক্রিয়ভাবে Pages ডিপ্লয় ট্রিগার করে, অন্তর্নির্মিত _panel ট্র্যাকিং পয়েন্ট যা অ্যাডমিন প্যানেল অ্যাক্সেস মনিটর করে, UA ব্ল্যাকলিস্ট ও /24 সেগমেন্ট কুলডাউনের মাধ্যমে অ্যান্টি-ক্রলার ও অ্যান্টি-স্পিডটেস্ট, এবং বিশুদ্ধ D1 স্টোরেজ যা রাইট কোটা সমস্যা এড়ায়। আর্কিটেকচারে ভিজিটর GET /nezha.png রিকোয়েস্ট Cloudflare Worker দ্বারা প্রসেস হয়, ফ্রন্টএন্ড Git স্ট্যাটিক রিসোর্স পড়ে ছবি রিটার্ন করে, ব্যাকএন্ড ctx.waitUntil-এর মাধ্যমে D1-এ বিস্তারিত লগ ও দৈনিক সারাংশ লেখে এবং Telegram-এ পুশ করে। অ্যাডমিনিস্ট্রেটর অ্যাডমিন প্যানেলের মাধ্যমে Worker-এ ছবি আপলোড করেন, Worker Git রিপোজিটরিতে লেখে ও Deploy Hook ট্রিগার করে Pages পুনর্নির্মাণ করে, তারপর D1 কোয়েরি করে পরিসংখ্যান ও লগ রিটার্ন করে। কম্পোনেন্টগুলোর মধ্যে রয়েছে Cloudflare Pages যা index.html ও _worker.js হোস্ট করে, Cloudflare D1 যা অ্যাক্সেস লগ, দৈনিক সারাংশ, ছবি ইনডেক্স সংরক্ষণ করে, Cloudflare Workers যা API ও ছবি রিকোয়েস্ট প্রসেস করে, GitHub রিপোজিটরি যা public/pic-এ ছবির বাইনারি সংরক্ষণ করে, Telegram Bot API যা নোটিফিকেশন পুশ করে। ডিপ্লয়ের জন্য Cloudflare অ্যাকাউন্ট, GitHub অ্যাকাউন্ট, Telegram অ্যাকাউন্ট এবং ঐচ্ছিক ডোমেইন প্রয়োজন। ৭টি এনভায়রনমেন্ট ভেরিয়েবল PASSWORD, GITHUB_TOKEN, REPO_NAME, BRANCH, CF_DEPLOY_HOOK_URL, TG_ID, TG_TOKEN এবং ১টি D1 বাইন্ডিং DB প্রস্তুত করতে হবে। প্রক্রিয়া হলো টেমপ্লেট দিয়ে রিপোজিটরি তৈরি করা, D1 ডেটাবেস তৈরি করা, Telegram Bot তৈরি করে token ও chat_id সংগ্রহ করা, GitHub Fine-grained PAT তৈরি করা, Pages প্রজেক্ট তৈরি করে Git স্বয়ংক্রিয় ডিপ্লয় বন্ধ করা যাতে বিল্ড অপচয় না হয়, Deploy Hook তৈরি করা, কাস্টম ডোমেইন বাইন্ড করা, এনভায়রনমেন্ট ভেরিয়েবল ও বাইন্ডিং একীভূতভাবে কনফিগার করা, ম্যানুয়ালি Retry deployment করে প্রথম ডিপ্লয় সম্পন্ন করা। প্রথমবার অ্যাডমিন প্যানেলে লগইন করলে স্বয়ংক্রিয়ভাবে visits, daily_summary, img_index তিনটি টেবিল তৈরি হবে। ব্যবহারের সময় ছবি ব্যবস্থাপনায় একটি আইডেন্টিফায়ার যোগ করে ছবি আপলোড করতে হবে, সংরক্ষণ ও ডিপ্লয়ের পর ট্র্যাকিং লিংক পাওয়া যাবে, যেমন https://আপনার-ডোমেইন/nezha.png, যা HTML বা ইমেইলে এমবেড করে পরিসংখ্যান করা যায়। ওভারভিউ পেজে আজ, গতকাল, শেষ ৭ দিন, শেষ ১ বছরের সারাংশ ও লাইন চার্ট থাকে, বিস্তারিত লগ পেজে তারিখ, আইডেন্টিফায়ার, IP অনুযায়ী ফিল্টার করে পেজিনেশন ব্রাউজিং সমর্থিত। অ্যাডমিন প্যানেল অ্যাক্সেস নিজেই _panel ট্র্যাকিং পয়েন্ট দ্বারা রেকর্ড হয়, লগইন ছাড়া অ্যাক্সেসে ট্রিগার হয়, লগইন করা অবস্থায় রিফ্রেশে ট্রিগার হয় না। লক্ষণীয় বিষয়গুলোর মধ্যে রয়েছে D1 ফ্রি কোটা 5GB স্টোরেজ, প্রতিদিন ১ লাখ রাইট, প্রতিদিন ৫০ লাখ রিড, GitHub রিপোজিটরি 1GB-এর বেশি না রাখার পরামর্শ, একক ছবি 8MB-এর বেশি নয়, PNG JPG GIF WebP SVG সমর্থিত, আইডেন্টিফায়ার অক্ষর-সংখ্যা-আন্ডারস্কোর-হাইফেন দৈর্ঘ্য ১ থেকে ৬৪, সংরক্ষিত আইডেন্টিফায়ার _panel। Telegram নোটিফিকেশন একই IP-এর জন্য ৬০ সেকেন্ডে একবারই পুশ হয়, একই /24 সেগমেন্ট কুলডাউন শেয়ার করে, ক্রলার UA ও স্পিডটেস্ট সাইট Referer পুশ হয় না। Git স্বয়ংক্রিয় ডিপ্লয় বন্ধ করার পর ছবি আপলোড করতে অ্যাডমিন প্যানেলের মাধ্যমে সংরক্ষণ ও ডিপ্লয় ট্রিগার করতে হবে, এনভায়রনমেন্ট ভেরিয়েবল পরিবর্তনের পর পুনরায় ডিপ্লয় প্রয়োজন। নিরাপত্তার জন্য শক্তিশালী পাসওয়ার্ড ব্যবহার, PAT পারমিশন ন্যূনতম করা, Deploy Hook URL প্রকাশ না করার পরামর্শ। ডেটা wrangler d1 export-এর মাধ্যমে এক্সপোর্ট ব্যাকআপ করা যায়। অ্যাডভান্সড কনফিগারেশনে _worker.js-এ STATS_DAYS সংরক্ষণ দিন ও PUSH_COOLDOWN_SEC কুলডাউন সময় পরিবর্তন করা যায়, এছাড়াও UA ও Referer ব্ল্যাকলিস্ট রেজেক্স কাস্টমাইজ করা যায়।