প্রকল্প সম্পর্কে
OpenAnalytics একটি open-source ওয়েব অ্যানালিটিক্স প্রোডাক্ট, যা pnpm monorepo হিসেবে মুক্তি পাওয়া গেছে AGPL-3.0 লাইসেন্সে এবং নিজস্ব হার্ডওয়্যারে self-host করার জন্য তৈরি। এর নকশা privacy-first, cookieless measurement-এর উপর ভিত্তি করে, যেখানে কেবলমাত্র aggregate-only reads ব্যবহৃত হয়: কোনো cookies নেই, fingerprinting নেই, cross-site identifiers নেই, আর raw IP addresses কখনো সংরক্ষিত হয় না। Visitor identity হলো একটি salted hash যা প্রতি রাতে পরিবর্তিত হয়, তাই একজন ভিজিটরের ট্রেইল সর্বোচ্চ একটি ভিজিটের সমান হয়, ব্যক্তির সমান নয়। Do Not Track এবং Global Privacy Control সংগ্রাহকের আগেই সম্মানিত হয়, আর city-level geolocation site-ভিত্তিক opt-in, যা ডেটাবেসে host-এই সমাধান করা হয়। लेखकों দ্বারা পরিচালিত hosted instance getopen.so-তে একই কোড চালায়।
Monorepoটি পণ্যকে আলাদা অ্যাপ্লিকেশনে বিভক্ত করে: একটি ছোট browser tracker snippet, যার byte budget CI দ্বারা নির্ধারিত; একটি collector যা validate, sanitize, rate-limit এবং enqueue করে; একটি worker যা queue থেকে ClickHouse-এ sessions, rollups, exports, mail ও deletions handling করে; একটি api control plane যা auth, sites, keys, sharing, event definitions, funnels, widgets, revenue, AI assistant ও MCP server ধারণ করে; একটি query gateway যা ClickHouse পড়ার একমাত্র প্রক্রিয়া এবং Ed25519-signed query envelopes verify করে; একটি realtime app যা live dashboard-এর SSE stream প্রদান করে; একটি Next.js dashboard; আর একটি `oa` CLI যা site setup, stats ও device-flow login-এর জন্য ব্যবহৃত হয়। Shared packages-এ domain logic, Postgres ও ClickHouse schemas with migrations, Redis/Valkey, auth, OpenAPI contracts, observability ও integrations অন্তর্ভুক্ত।
Storage তিনভাবে বিভক্ত: Postgres control plane-এর জন্য, ClickHouse events ও rollups-এর জন্য, আর দুটি Valkey instances — একটি durable event queue ও একটি disposable realtime cache। Reported functionality-তে page views, custom ও attribute-driven events, sessions, web vitals, funnels, per-site retention, embeddable widgets, public share links, Stripe account থেকে revenue analytics, CSV/JSON import ও export, MCP server ও CLI অন্তর্ভুক্ত। Dashboard-এ presence cache থেকে realtime visitor list, per-visitor journey trails, আর optional live globe-ও দেখায়।
কয়েকটি architectural rules convention-এর চেয়ে CI দ্বারা enforce করা হয়: web app শুধুমাত্র shared contracts package import করতে পারে, OpenAPI document frontend ও backend-এর একমাত্র seam; ClickHouse-এ query gateway-এর মাধ্যমেই প্রবেশযোগ্য; tracker size budget অতিক্রম করলে build ব্যর্থ হয়; আর একটি CI job assert করে যে Postgres schema-তে billing tables নেই।
Self-hosting SELF-HOSTING.md-তে документировано, একটি generator script ও single `docker compose up -d` দিয়ে automatic TLS-সহ। এতে Docker-সহ Linux host, চারটি DNS records (app, api, c ও rt subdomains), আনুমানিক 4 GB RAM ও 25 GB মুক্ত disk প্রয়োজন। Releases-গুলো ghcr.io-তে দশটি image প্রকাশ করে, তাই installation pull-এর মাধ্যমে হয়; arm64 hosts বা branch builds-এ local-এ image compile করা হয়। `upgrade.sh` রিলিজ-এর মধ্যে moving-এর জন্য এবং snapshot `rollback.sh`-এর প্রয়োজনীয়তা মেটাতে, কারণ migrations reversible নয়। Source থেকে running-এ compiled migration runners-এর আগে builds প্রয়োজন। শুধুমাত্র AI assistant ও object storage optional; বাকিগুলো disabled হয়ে যায়। CI-style test ও verification suite infrastructure ছাড়াই চলে।
Geolocation data bundled নেই (README-তে উল্লেখ আছে এটি 60 MB ডাউনলোড এবং মাসের মধ্যে stale হয়ে যায়); একটি helper script DB-IP database fetch করে CC BY 4.0-এ ব্যবহৃত। Contributing pull request-এর মাধ্যমে সরাসরি repository-তে merge হয়, একবার CLA-তে copyright contributor-র কাছে থাকে। কোড AGPL-3.0, যা README-তে note দেওয়া আছে যে modified version network service হিসেবে চালালে modified source users-কে offer করতে হবে; প্রজেক্টের নাম ও hosted service-এর domain license grant-এর অংশ নয়।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.