Whirl কী?
Whirl হলো Next.js ও Convex দিয়ে তৈরি একটি ওপেন-সোর্স, ফুল-স্ট্যাক AI চ্যাট অ্যাপ্লিকেশন। এটি whirl.chat-এর কোড এবং MIT লাইসেন্সের অধীনে উপলভ্য। তাই আপনি এটি পর্যালোচনা করতে, নিজের ইনস্ট্যান্স চালাতে বা উন্নতিতে অবদান রাখতে পারেন।
প্রকল্পটি এক интерфেসে একাধিক AI মডেল, স্থায়ী মেমরি, সম্পাদনাযোগ্য আর্টিফ্যাক্ট, ওয়েব গবেষণা, কাস্টম টুল এবং গোপনীয়তাকেন্দ্রিক কথোপকথন একত্র করে। মডেলগুলো OpenRouter-এর মাধ্যমে রাউট করা হয়, আর Convex ডেটাবেস, ব্যাকএন্ড ফাংশন, স্ট্রিমিং এবং নির্ধারিত কাজ সরবরাহ করে।
প্রধান বৈশিষ্ট্য
- একাধিক শীর্ষস্থানীয় মডেল: একটি কথোপকথনে শীর্ষ AI মডেল ব্যবহার করুন এবং তাদের চিন্তার স্তর সমন্বয় করুন।
- জীবন্ত আর্টিফ্যাক্ট: নথি, চার্ট ও ইন্টার্যাক্টিভ পৃষ্ঠা তৈরি করুন, যা সাইড প্যানেলে সম্পাদনাযোগ্য থাকে এবং লিংকের মাধ্যমে শেয়ার করা যায়।
- টুল ও স্কিল: OAuth-ভিত্তিক ইন্টিগ্রেশনসহ MCP-এর মাধ্যমে বাহ্যিক টুল সংযুক্ত করুন এবং Whirl-এর আচরণ সম্প্রসারিত করতে স্কিল ইনস্টল করুন।
- দীর্ঘমেয়াদি মেমরি: কথোপকথনজুড়ে পছন্দ ও প্রকল্পের প্রেক্ষাপট বজায় রাখুন।
- সাম্প্রতিক ওয়েব তথ্য: ওয়েব অনুসন্ধান করুন এবং সাম্প্রতিক উৎসভিত্তিক উত্তর তৈরি করতে পৃষ্ঠা পড়ুন।
- ব্যক্তিগত কথোপকথন: লক করা চ্যাট ব্যবহারকারীর ডিভাইসে এমন একটি পাসওয়ার্ড দিয়ে এনক্রিপ্ট করা হয়, যা সার্ভার কখনো পায় না। এগুলো কেবল শূন্য-সংরক্ষণ নীতি অনুসরণকারী মডেল ব্যবহার করে।
- উৎপাদনশীলতার বৈশিষ্ট্য: Whirl-এ ইনকগনিটো মোড, বার্তা কিউ করা, ভয়েস ইনপুট, ছবি তৈরি, ফাইল সংযুক্তি, ফোল্ডার এবং শেয়ারিং রয়েছে।
- কাস্টমাইজযোগ্য ইন্টারফেস: লাইট বা ডার্ক মোড বেছে নিন, অ্যাকসেন্ট রং নির্ধারণ করুন এবং Whirl-কে মোবাইল ওয়েব অ্যাপ হিসেবে ইনস্টল করুন।
প্রযুক্তি স্ট্যাক
প্রোডাকশন ওয়েব অ্যাপ্লিকেশনটি Next.js 16, React 19, Tailwind CSS v4 এবং Motion ব্যবহার করে। Convex ব্যাকএন্ড সরবরাহ করে, Clerk প্রমাণীকরণ পরিচালনা করে এবং AI SDK-এর মাধ্যমে OpenRouter মডেল অ্যাক্সেস দেয়। রিপোজিটরিটি Bun ওয়ার্কস্পেস হিসেবে সংগঠিত এবং TypeScript-এ লেখা।
মূল সেটআপের জন্য শুধু Convex, Clerk এবং OpenRouter প্রয়োজন। অন্যান্য পরিষেবাগুলো ঐচ্ছিক:
- বিলিংয়ের জন্য Autumn
- ওয়েব অনুসন্ধানের জন্য Exa
- মেমরির জন্য Supermemory
- অ্যানালিটিক্সের জন্য PostHog ও Axiom
- ট্রেসিংয়ের জন্য Braintrust
- ইমেইলের জন্য Resend
- সাপোর্ট এজেন্টের জন্য Median
কোনো ঐচ্ছিক পরিষেবা কনফিগার করা না থাকলে, Whirl অ্যাপ্লিকেশন চালানোর জন্য সেটি বাধ্যতামূলক না করে ওই পরিষেবানির্ভর বৈশিষ্ট্যটি আড়াল করে।
পূর্বশর্ত
Whirl ইনস্টল করার আগে নিচের বিষয়গুলো প্রস্তুত করুন:
- আপনার কম্পিউটারে Bun ইনস্টল করা
- একটি বিনামূল্যের Convex অ্যাকাউন্ট
- একটি Clerk অ্যাপ্লিকেশন
- একটি OpenRouter API কী
- রিপোজিটরি ক্লোন করার জন্য Git
ধাপ ১: Whirl ক্লোন ও ইনস্টল করুন
রিপোজিটরি ক্লোন করুন, এর ডিরেক্টরিতে প্রবেশ করুন এবং Bun দিয়ে সব ওয়ার্কস্পেসের নির্ভরতা ইনস্টল করুন:
git clone https://github.com/whirlchat/whirl.git
cd whirl
bun install
ধাপ ২: Convex ব্যাকএন্ড তৈরি করুন
ব্যাকএন্ড প্যাকেজে যান এবং Convex ডেভেলপমেন্ট প্রক্রিয়া শুরু করুন:
cd packages/backend
bunx convex dev
প্রথমবার চালানোর সময় Convex আপনাকে একটি প্রকল্প ও ডেভেলপমেন্ট ডিপ্লয়মেন্ট তৈরি করতে নির্দেশনা দেবে। ডেভেলপমেন্টের সময় ব্যাকএন্ডের পরিবর্তনগুলো সিঙ্ক্রোনাইজ করতে এই প্রক্রিয়াটি চালু রাখুন।
ধাপ ৩: ব্যাকএন্ড সিক্রেট কনফিগার করুন
packages/backend-এ আরেকটি টার্মিনাল খুলুন। Convex পরিবেশে Clerk JWT issuer domain এবং OpenRouter API key যোগ করুন:
bunx convex env set CLERK_JWT_ISSUER_DOMAIN https://your-instance.clerk.accounts.dev
bunx convex env set OPENROUTER_API_KEY sk-or-v1-...
উদাহরণের মানগুলোর পরিবর্তে আপনার নিজস্ব Clerk ও OpenRouter অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করুন। বিস্তারিত self-hosting ডকুমেন্টেশনে Convex-এর প্রয়োজনীয় Clerk JWT টেমপ্লেট ব্যাখ্যা করা হয়েছে।
রিপোজিটরিতে API কী বা প্রমাণীকরণের সিক্রেট কমিট করবেন না। Convex পরিবেশ কমান্ড এবং উপযুক্ত environment file-এ স্থানীয় ওয়েব সেটিংসের মাধ্যমে ব্যাকএন্ড সিক্রেট সংরক্ষণ করুন।
ধাপ ৪: ওয়েব অ্যাপ্লিকেশন কনফিগার করুন
প্রোডাকশন ওয়েব অ্যাপ্লিকেশনে যান এবং দেওয়া উদাহরণ থেকে একটি স্থানীয় environment file তৈরি করুন:
cd ../../apps/v2
cp .env.example .env.local
.env.local খুলে Convex ও Clerk-এর জন্য প্রয়োজনীয় চারটি মান পূরণ করুন। নতুন নাম তৈরি না করে সঠিক ভেরিয়েবল নামের উৎস হিসেবে উদাহরণ ফাইলটি ব্যবহার করুন।
ধাপ ৫: ডেভেলপমেন্ট পরিবেশ চালু করুন
রিপোজিটরির রুটে ফিরে ডেভেলপমেন্ট কমান্ড শুরু করুন:
cd ../..
bun run dev
পরিষেবাগুলো চালু হলে localhost:3000 খুলুন। কনফিগার করা Clerk অ্যাপ্লিকেশনের মাধ্যমে সাইন ইন করে একটি কথোপকথন শুরু করুন।
মৌলিক ব্যবহার
কথোপকথন শুরু করুন
চ্যাট কম্পোজারে একটি অনুরোধ লিখে কনফিগার করা মডেলে পাঠান। একটি সহজ প্রথম প্রম্পট ওয়েব অ্যাপ, প্রমাণীকরণ, Convex ব্যাকএন্ড এবং OpenRouter সংযোগ একসঙ্গে কাজ করছে কি না তা যাচাই করতে পারে:
এই অ্যাপ্লিকেশনের প্রধান উপাদানগুলো পাঁচটি সংক্ষিপ্ত পয়েন্টে ব্যাখ্যা করুন।
মডেল নিয়ে কাজ করুন
Whirl একটি কথোপকথনের মধ্যে OpenRouter-এর মাধ্যমে একাধিক শীর্ষস্থানীয় মডেলে অ্যাক্সেস দেওয়ার জন্য তৈরি। অ্যাপ্লিকেশন ও নির্বাচিত মডেল সমর্থন করলে আপনি সমন্বয়যোগ্য চিন্তার স্তরও ব্যবহার করতে পারবেন।
আর্টিফ্যাক্ট তৈরি ও পরিমার্জন করুন
Whirl-কে একটি ডকুমেন্ট, চার্ট বা ইন্টার্যাকটিভ পেজ তৈরি করতে বলুন। এই পরিবর্তনযোগ্য আর্টিফ্যাক্টগুলো সাইড প্যানেলে সম্পাদনাযোগ্য থাকে এবং লিংকের মাধ্যমে শেয়ার করা যায়। ফলে একবারের চ্যাট উত্তরের বদলে যেসব আউটপুটের ধারাবাহিক পরিমার্জন প্রয়োজন, সেগুলোর জন্য এগুলো উপযোগী।
ফাইল, ভয়েস ও সংগঠন ব্যবহার করুন
টাইপ করা বার্তার পাশাপাশি Whirl ফাইল সংযুক্তি ও ভয়েস ইনপুট সমর্থন করে। কথোপকথনগুলো ফোল্ডারে সাজানো যায়, আর শেয়ারিং ফিচারের মাধ্যমে নির্বাচিত কাজ অন্যদের কাছে доступ করা যায়।
রিপোজিটরি বুঝে নিন
মনোরেপোতে কয়েকটি অ্যাপ্লিকেশন এবং একটি শেয়ার্ড ব্যাকএন্ড রয়েছে:
apps/v2: Whirl-এর ব্যবহৃত প্রোডাকশন Next.js ওয়েব অ্যাপ্লিকেশন।apps/console: মডেল, ইন্টিগ্রেশন ও স্কিল পরিচালনার জন্য Vite-ভিত্তিক অ্যাডমিনিস্ট্রেশন কনসোল।apps/mobile: Expo দিয়ে তৈরি একটি নেটিভ অ্যাপ্লিকেশন।apps/waitlist: স্বতন্ত্র ওয়েটলিস্ট পেজ।apps/remotion: প্রচারণামূলক ভিডিও কম্পোজিশন।apps/legacy: আগের ওয়েব অ্যাপ্লিকেশন, রেফারেন্সের জন্য রাখা হলেও আর রক্ষণাবেক্ষণ করা হয় না।packages/backend: Convex স্কিমা, ফাংশন এবং AI পাইপলাইন।docs: সেলফ-হোস্টিং, কনফিগারেশন এবং আর্কিটেকচার গাইড।brand: লোগো, রং, ব্যানার এবং অ্যাপ্লিকেশন আইকন।
বর্তমান ওয়েব ডেভেলপমেন্টের জন্য apps/v2 এবং packages/backend-এ মনোযোগ দিন। apps/legacy-এ নতুন কাজ তৈরি করা এড়িয়ে চলুন, কারণ এটি রক্ষণাবেক্ষণ করা হয় না।
উন্নত টিপস
ঐচ্ছিক সার্ভিস ধাপে ধাপে যোগ করুন
প্রয়োজনীয় Convex, Clerk এবং OpenRouter কনফিগারেশন দিয়ে শুরু করুন। মূল চ্যাট ফ্লো কাজ করার পর ঐচ্ছিক প্রোভাইডারগুলো একবারে একটি করে যোগ করুন। প্রয়োজনীয় কী অনুপস্থিত থাকলে Whirl স্বয়ংক্রিয়ভাবে সংশ্লিষ্ট ফিচার লুকিয়ে রাখে, ফলে ছোট পরিসরের ইনস্টলেশন পরিচালনা করা সহজ হয়।
বিলিং, সার্চ, মেমোরি, অ্যানালিটিক্স, ট্রেসিং, ইমেল এবং সাপোর্টের সঙ্গে সম্পর্কিত এনভায়রনমেন্ট ভেরিয়েবলগুলোর জন্য রিপোজিটরির কনফিগারেশন গাইড দেখুন।
উপযুক্ত গোপনীয়তা মোড বেছে নিন
স্বাভাবিক স্থায়ী কথোপকথনের ওয়ার্কফ্লো না চাইলে ইনকগনিটো মোড ব্যবহার করুন। আরও শক্তিশালী সুরক্ষার জন্য লক করা চ্যাটগুলো এমন একটি পাসওয়ার্ড দিয়ে ডিভাইসেই এনক্রিপ্ট করা হয়, যা সার্ভার কখনও দেখতে পায় না, এবং কেবল জিরো-রিটেনশন মডেলগুলো সেগুলোর উত্তর দেয়। মনে রাখবেন, ক্লায়েন্টের কাছে থাকা পাসওয়ার্ড হারিয়ে গেলে এনক্রিপ্ট করা কনটেন্টে প্রবেশের সক্ষমতা প্রভাবিত হতে পারে।
মেসেজ পাইপলাইন পরিদর্শন করুন
স্ট্রিমিং, টুল কল বা মডেলের আচরণ ডিবাগ করার সময় প্রকল্পের আর্কিটেকচার গাইড পড়ুন। এতে কম্পোজার থেকে মডেল এবং মডেল থেকে আবার ফিরে আসা পর্যন্ত একটি মেসেজের যাত্রা ব্যাখ্যা করা হয়েছে। সংশ্লিষ্ট ইমপ্লিমেন্টেশন মূলত প্রোডাকশন ওয়েব অ্যাপ এবং Convex ব্যাকএন্ডের মধ্যে বিভক্ত।
সতর্কতার সঙ্গে প্রোডাকশনের জন্য প্রস্তুত হন
কুইক স্টার্ট একটি ডেভেলপমেন্ট এনভায়রনমেন্ট তৈরি করে। পাবলিক ডিপ্লয়মেন্টের আগে সম্পূর্ণ সেলফ-হোস্টিং গাইড অনুসরণ করুন, যার মধ্যে Clerk JWT টেমপ্লেট এবং প্রোডাকশন ডিপ্লয়মেন্টের নির্দেশনাও রয়েছে।
নিরাপদে অবদান রাখুন
পুল রিকোয়েস্ট খোলার আগে নিয়মকানুন ও যাচাইয়ের জন্য প্রকল্পের কনট্রিবিউটিং গাইড পর্যালোচনা করুন। কোড অব কনডাক্ট অনুসরণ করুন এবং নিরাপত্তা-সংক্রান্ত সমস্যা পাবলিক ইস্যু হিসেবে না তুলে SECURITY.md-তে বর্ণিত প্রক্রিয়া ব্যবহার করে রিপোর্ট করুন।
উপসংহার
Whirl স্ব-হোস্টেড AI চ্যাট ওয়ার্কস্পেসের জন্য একটি সমৃদ্ধ সূচনাবিন্দু প্রদান করে। এতে Next.js ইন্টারফেসের সঙ্গে Convex ব্যাকএন্ড, Clerk অথেনটিকেশন এবং OpenRouter মডেল অ্যাক্সেস যুক্ত রয়েছে। প্রয়োজনীয় তিনটি সার্ভিস দিয়ে শুরু করুন, localhost:3000-এ স্থানীয় চ্যাট যাচাই করুন, এরপর আপনার ডিপ্লয়মেন্টের প্রয়োজন অনুযায়ী ঐচ্ছিক সার্চ, মেমোরি, অ্যানালিটিক্স, বিলিং এবং অন্যান্য ইন্টিগ্রেশন সক্রিয় করুন।
