আমাদের WordPress প্লাগইন CookieRay-এর হুবহু একই ফিচারসেট, SaaS আকারে। ফিচার কমবেও না, বাড়বেও না। প্লাগইনে যা ফ্রি, SaaS-এও তা ফ্রি।
CookieRay এখন WordPress-নির্ভর — শুধু WP সাইটে চলে, ইনস্টল করতে হয়, ডেটা ক্লায়েন্টের সার্ভারে থাকে। SaaS সংস্করণে যেকোনো ওয়েবসাইট (WordPress, Shopify, Next.js, কাস্টম) শুধু একটা <script> বসিয়ে একই সুবিধা পাবে।
এটা নতুন প্রোডাক্ট নয়, একই প্রোডাক্টের দ্বিতীয় ডেলিভারি চ্যানেল। ফিচার তালিকা, ফ্রি/Pro বিভাজন, এমনকি ব্যানারের ডিফল্ট লেখা পর্যন্ত এক থাকবে। যা বদলাবে তা শুধু প্লাম্বিং — কোথায় চলে, ডেটা কোথায় থাকে।
নিচের তালিকা প্লাগইনের কোড ও readme থেকে সরাসরি নেওয়া। প্রতিটা আইটেম SaaS-এ এক থাকবে।
| # | ফিচার | বিস্তারিত | SaaS-এ |
|---|---|---|---|
| ১ | Consent Banner | Card + Bar লেআউট, ৯টা পজিশন, overlay, border-radius, রং/ফন্ট/লেখা এডিটযোগ্য, অ্যাডমিনে লাইভ প্রিভিউ | অপরিবর্তিত |
| ২ | ৩ বাটন + Preferences মডাল | Accept All / Decline / Preferences; প্রতিটা বাটন লুকানো-দেখানোর অপশন | অপরিবর্তিত |
| ৩ | ৪ ক্যাটাগরি | Necessary · Analytical · Functional · Marketing | অপরিবর্তিত |
| ৪ | Script Blocking | Log Only ও Strict (Block Until Consent) মোড; GA, Meta Pixel, Hotjar, HubSpot, TikTok সহ বিল্ট-ইন প্যাটার্ন | অপরিবর্তিত |
| ৫ | Google Consent Mode v2 | ব্রাউজারে consent signal পাঠানো; টগল করা যায় | অপরিবর্তিত |
| ৬ | Cookie Scanner | ম্যানুয়াল স্ক্যান + deep scan (একই ডোমেইনে সর্বোচ্চ ৫০ URL, sitemap বা হোম+সাম্প্রতিক পোস্ট থেকে) | অপরিবর্তিত সীমা |
| ৭ | Cookie Inventory | দেখা, এডিট, ক্যাটাগরি বদল, bulk অ্যাকশন, ম্যানুয়াল কুকি যোগ, regex প্যাটার্ন | অপরিবর্তিত |
| ৮ | Consent Logs | consent id, status, ক্যাটাগরি, page URL, banner version, timestamp; সার্চ ও ফিল্টার | অপরিবর্তিত |
| ৯ | এক্সপোর্ট | CSV এক্সপোর্ট + একক receipt PDF | অপরিবর্তিত |
| ১০ | Dashboard + Compliance Score | ৭-পয়েন্ট চেকলিস্ট, স্কোর, consent সংখ্যা, accept rate, active cookies, recent activity | অপরিবর্তিত |
| ১১ | Scan History | আগের স্ক্যান, সময়, পেজ সংখ্যা, ফলাফলের সারাংশ | অপরিবর্তিত |
| ১২ | Settings | মোড, consent expiry, log retention, GCM v2 টগল, uncategorized handling, manual category মনে রাখা, manage pill | অপরিবর্তিত |
| ১৩ | Retention cleanup | নির্ধারিত মেয়াদের পুরোনো consent log স্বয়ংক্রিয় মুছে ফেলা | অপরিবর্তিত |
| # | ফিচার | SaaS-এ |
|---|---|---|
| ১ | Scheduled automatic scans — নির্ধারিত সময়ে নিজে নিজে স্ক্যান | Paid |
| ২ | Geo targeting — দেশ অনুযায়ী ব্যানার দেখানো/লুকানো | Paid |
| ৩ | Integrations — GTM, Meta Pixel, Adobe Experience Platform | Paid |
| ৪ | Trust Badge — ফুটারে "Privacy Protected" ব্যাজ | Paid |
| ৫ | Custom CSS — ব্যানারে নিজের CSS | Paid |
এর বাইরে "Premium support ও priority updates" — এটা সাপোর্ট নীতি, কোড নয়।
| বিষয় | WP প্লাগইন (এখন) | SaaS (নতুন) |
|---|---|---|
| ইনস্টল | প্লাগইন আপলোড + activate | একটা <script> কপি-পেস্ট |
| কোন সাইটে চলে | শুধু WordPress | যেকোনো সাইট (WP, Shopify, Next.js, কাস্টম) |
| কয়টা সাইট | প্রতি সাইটে আলাদা ইনস্টল | এক অ্যাকাউন্টে একাধিক সাইট |
| ডেটা কোথায় | ক্লায়েন্টের নিজের DB | আমাদের DB (multi-tenant, কঠোর আলাদা) |
| স্ক্যানার | WP HTTP API দিয়ে HTML fetch | হেডলেস ব্রাউজার (Playwright) — বেশি নির্ভুল |
| ব্যাকগ্রাউন্ড কাজ | WP Cron (অনির্ভরযোগ্য) | BullMQ + Redis (নির্ভরযোগ্য) |
| স্ক্রিপ্ট ডেলিভারি | ক্লায়েন্টের সার্ভার থেকে | CDN edge থেকে, বিশ্বজুড়ে দ্রুত |
| আপডেট | ক্লায়েন্ট নিজে করে | আমরা একবার ডিপ্লয় → সবাই পায় |
| লাইসেন্স | Pro লাইসেন্স কী | সাবস্ক্রিপশন (Stripe) |
① বাজার বহুগুণ বড় — শুধু WP নয়, যেকোনো সাইট। ② আপডেট আমাদের হাতে — বাগ ফিক্স সাথে সাথে সবার কাছে যায়, ক্লায়েন্ট পুরোনো ভার্সনে আটকে থাকে না। ③ স্ক্যান নির্ভুল হবে — প্লাগইন শুধু HTML পড়ে, হেডলেস ব্রাউজার আসল কুকি দেখতে পায়।
প্লাগইনের বিক্রির যুক্তি ছিল — "আপনার ডেটা আপনার সার্ভারেই থাকে, কোনো external SaaS ড্যাশবোর্ড নেই।" SaaS-এ এই যুক্তিটা আর থাকবে না; উল্টে যাবে। তাই দুটোকে প্রতিযোগী নয়, দুই ধরনের ক্রেতার জন্য দুই পণ্য হিসেবে পজিশন করতে হবে — প্লাগইন যারা নিয়ন্ত্রণ চায় তাদের জন্য, SaaS যারা সুবিধা চায় তাদের জন্য।
কোম্পানির স্ট্যান্ডার্ড স্ট্যাক — কোনো নতুন প্রযুক্তি শেখার দরকার নেই।
| স্তর | প্রযুক্তি | অবস্থা |
|---|---|---|
| Frontend (ড্যাশবোর্ড) | Next.js + TanStack Query | ✅ কোম্পানি স্ট্যান্ডার্ড |
| Backend / API | Next.js Route Handlers | ✅ কোম্পানি স্ট্যান্ডার্ড |
| Auth | Better Auth | ✅ কোম্পানি স্ট্যান্ডার্ড |
| Database | PostgreSQL + Drizzle ORM | ✅ কোম্পানি স্ট্যান্ডার্ড |
| Validation | Zod | ✅ কোম্পানি স্ট্যান্ডার্ড |
| Queue | BullMQ + Redis | ✅ কোম্পানি স্ট্যান্ডার্ড |
| Embed script | Vanilla TypeScript + Vite | 🆕 আলাদা বান্ডল |
| Scanner | Playwright (headless browser) | 🆕 যোগ করতে হবে |
| CDN / Edge | Cloudflare | 🆕 যোগ করতে হবে |
| Billing | Stripe | 🆕 যোগ করতে হবে |
| Email · Storage · Monitoring | Resend · R2/S3 · Sentry | 🆕 যোগ করতে হবে |
ভিজিটরের সাইটে যে স্ক্রিপ্ট যাবে (cmp.js), সেটা React/Next.js দিয়ে বানানো যাবে না। ওটা ক্লায়েন্টের পেজে সবার আগে, ২০KB-র নিচে পৌঁছাতে হবে — নাহলে ট্র্যাকার আগেই কুকি বসিয়ে ফেলবে এবং ব্লকিং ব্যর্থ হবে। তাই ওটা আলাদা vanilla TypeScript বান্ডল হবে। ড্যাশবোর্ড অবশ্যই Next.js।
তুলনা: বর্তমান প্লাগইনের frontend.js = ৩৮KB, admin.js = ৬৯২KB। এই পার্থক্যটাই কারণ।
cookieray-saas/ (Turborepo মনোরেপো)
├── apps/
│ ├── web/ Next.js — ড্যাশবোর্ড + API + Better Auth
│ ├── embed/ vanilla TS — cmp.js (ব্যানার + ব্লকিং)
│ └── scanner/ Node + Playwright + BullMQ worker
└── packages/
├── db/ Drizzle schema
└── shared/ Zod schema (ব্রাউজার ও সার্ভারে একই)
ক্লায়েন্টের সাইট (ভিজিটরের ব্রাউজার)
└─ cmp.js ← Cloudflare CDN থেকে, <20KB
├─ কনফিগ আনে (ক্যাশড JSON)
├─ ট্র্যাকার ব্লক করে
├─ ব্যানার দেখায়
└─ consent পাঠায় ──┐
│
┌──────────────────────┼────────────────────┐
▼ ▼ ▼
Cloudflare CDN Next.js API Next.js ড্যাশবোর্ড
(cmp.js, config) (consent সেভ) (৭টা পেজ, Better Auth)
│ │
└────────┬───────────┘
▼
PostgreSQL (Drizzle)
multi-tenant, site_id দিয়ে আলাদা
▲
BullMQ + Redis
└─ Playwright scanner worker
| ফেজ | কাজ | সময় | শেষে যা দেখানো যাবে |
|---|---|---|---|
| ০ | রিপো, মনোরেপো, DB স্কিমা, auth | ১ সপ্তাহ | লগইন কাজ করে |
| ১ | Embed script + ব্যানার (৯ পজিশন, ২ লেআউট, ৩ বাটন, Preferences) | ২ সপ্তাহ | টেস্ট পেজে ব্যানার |
| ২ | 🔥 Blocking ইঞ্জিন + Log/Strict + Google Consent Mode v2 | ৩ সপ্তাহ | Accept-এর আগে ০ কুকি, পরে চালু |
| ৩ | Multi-tenant backend, কনফিগ API, consent log API | ২ সপ্তাহ | ২টা সাইট, আলাদা ডেটা |
| ৪ | ড্যাশবোর্ড ৭ পেজ + compliance score + CSV/PDF এক্সপোর্ট | ৪ সপ্তাহ | 🎯 ফ্রি প্রোডাক্ট সম্পূর্ণ |
| ৫ | Scanner (manual + deep scan ৫০ URL) + Scan History | ৩ সপ্তাহ | আসল সাইট স্ক্যান |
| ৬ | Pro ফিচার ৫টা + Stripe বিলিং | ৩ সপ্তাহ | 💰 আয় শুরু |
| ৭ | টেস্ট, মনিটরিং, ডকুমেন্টেশন, ল্যান্ডিং পেজ | ২ সপ্তাহ | লঞ্চ |
একজন ফুল-টাইম ডেভেলপার, কোম্পানির পরিচিত স্ট্যাক ধরে। ফেজ ২ (blocking) সবচেয়ে অনিশ্চিত — এটা প্রোডাক্টের হৃদয় এবং সবচেয়ে টেকনিক্যাল অংশ। ফেজ ৪-এ পৌঁছালেই বিক্রিযোগ্য ফ্রি প্রোডাক্ট হাতে থাকবে, বাকিটা ধাপে ধাপে যোগ করা যাবে।
| ঝুঁকি | প্রভাব | প্রতিকার |
|---|---|---|
| ব্লকিং বাগ → ক্লায়েন্টের সাইট ভাঙে | 🔴 উচ্চ | ডিফল্ট Log Only, data-cmp="ignore" escape hatch, প্রতি ডিপ্লয়ে Playwright অটো-টেস্ট |
| Multi-tenant ফাঁস (এক ক্লায়েন্ট অন্যের ডেটা দেখা) | 🔴 উচ্চ | একটাই tenant-aware ডেটা লেয়ার, কাঁচা কোয়েরি নিষিদ্ধ, Postgres RLS |
| consent_logs দ্রুত বিশাল হওয়া | 🟡 মাঝারি | মাস অনুযায়ী partition + retention (প্লাগইনেও আছে) + summary টেবিল |
| স্ক্যানার সার্ভার খরচ বাড়া | 🟡 মাঝারি | প্লাগইনের মতোই ৫০ URL সীমা, worker সীমা, টাইমআউট |
| স্ক্রিপ্ট ভারী হয়ে গেলে ব্লকিং ফেল | 🟡 মাঝারি | CI-তে সাইজ বাজেট — ২০KB ছাড়ালে বিল্ড ফেল |
| প্লাগইন ও SaaS একে অন্যের বিক্রি খাওয়া | 🟢 নিম্ন | আলাদা পজিশনিং (§৩), দাম ও লক্ষ্য ক্রেতা আলাদা |
ফেজ ০–২ (মোট ৬ সপ্তাহ) আগে অনুমোদন দিন। ফেজ ২ শেষে একটা কাজ করা ডেমো দেখানো যাবে — আসল সাইটে ব্যানার এসেছে, Accept-এর আগে ট্র্যাকার ব্লক হয়েছে। সেটা দেখে বাকি বিনিয়োগের সিদ্ধান্ত নেওয়া অনেক নিরাপদ।