আপনার কোড যুক্ত করুন (/projects/connect/code) একটি aiKit প্রজেক্টকে আপনার আগে থেকে থাকা Git রিপোজিটরির সঙ্গে যুক্ত করে, যেমন GitHub-এর একটি Laravel অ্যাপ, এবং যেখানে সেটি চলে তার সঙ্গেও: আপনার নিজের সার্ভার, অথবা aiKit হোস্টিং। এরপর প্রজেক্টের Hosting ট্যাবে সাধারণ ভাষায় পরিবর্তনের অনুরোধ করতে পারবেন। aiKit-এর AI কোডের একটি কপি সম্পাদনা করে, প্রজেক্টের যাচাইগুলো চালায়, পার্থক্য ও প্রিভিউ দেখায়, এবং আপনার দলের কেউ অনুমোদন দিলেই ডেপ্লয় করে। প্রতিটি ডেপ্লয় একটি নম্বরযুক্ত রিলিজ, যা এক ক্লিকে ফিরিয়ে নেওয়া যায়। আপনার রিপোজিটরিই মূল উৎস থাকে, এবং আপনার সার্ভার আগের মতোই ডেপ্লয় করতে থাকে।
আপনার কোড যুক্ত করুন →প্রজেক্টের নাম দিন, তারপর রিপোজিটরির ঠিকানা (GitHub-এর সবুজ Code বোতাম থেকে) এবং সাইট যে ব্রাঞ্চ থেকে চলে, সাধারণত main, পেস্ট করুন। aiKit কীভাবে এতে পৌঁছাবে তা বেছে নিন। GitHub token: এই একটি রিপোজিটরির জন্য GitHub-এ তৈরি করা একটি fine-grained token, যেখানে Contents সেট করা থাকবে Read and write; এটি https:// ঠিকানার সঙ্গে ব্যবহার হয়। Deploy key: শুধু এই রিপোজিটরির জন্য তৈরি একটি কী জোড়া, যার public অংশ রিপোজিটরির Settings, Deploy keys-এ যোগ করতে হবে, Allow write access টিক দেওয়া অবস্থায়; এটি git@ ঠিকানার সঙ্গে ব্যবহার হয়। Public repository: শুধু পড়ার অনুমতি, তাই অনুমোদিত পরিবর্তন সংরক্ষণের কোনো জায়গা থাকে না; শুধু দেখার জন্য ব্যবহার করুন।
টোকেন বা কী আপনি নিজে পেস্ট করেন। এটি aiKit-এর engine-এ এনক্রিপ্ট করে সংরক্ষিত হয় এবং আর কখনো কাউকে দেখানো হয় না। পেজে শুধু একটি fingerprint দেখায়। রিপোজিটরি যুক্ত করলে কোডটি engine-এ কপি হয় এবং প্রজেক্টের ধরন (Laravel, JavaScript বা static files) শনাক্ত হয়। রিপোজিটরির কিছুই বদলায় না।
আপনার আগে থেকে থাকা প্রজেক্টও যুক্ত করা যায়: এর Hosting ট্যাবে মালিক Connect your code দেখতে পান।
আপনার নিজের সার্ভার: সাইট ঠিক যেখানে আছে সেখানেই থাকবে। সার্ভারের ঠিকানা, SSH port (সাধারণত 22), aiKit যে লগইন ব্যবহার করে (সেটআপ ধাপে তৈরি হওয়া aikit), সাইটের ফোল্ডার (Laravel Forge সাইটের জন্য /home/forge/your-site.com), সাইট যে deploy command আগে থেকে ব্যবহার করে (সাধারণত bash scripts/deploy.sh), এবং প্রতিটি ডেপ্লয়ের পরে যে পেজগুলোকে সাড়া দিতে হবে, প্রতি লাইনে একটি পূর্ণ ঠিকানা লিখুন। সার্ভার লগইনের private key পেস্ট করুন (সেটআপ ধাপ ১-এ তৈরি)। সংরক্ষণ করুন ও সংযোগ যাচাই করুন।
aiKit প্রথমবার সার্ভারে পৌঁছালে সার্ভারের fingerprint দেখায় এবং জিজ্ঞেস করে Is this your server? সেটি সেটআপ ধাপ ৬-এ সার্ভার যা প্রিন্ট করেছিল তার সঙ্গে মিলিয়ে দেখুন। দুটি হুবহু এক হলেই শুধু It matches চাপুন। Connect। এরপর ওই ঠিকানায় অন্য সার্ভার এলে তা প্রত্যাখ্যান করা হয়। যাচাই পাস করলে পেজ জানায় সার্ভার এখন কোন সংস্করণে চলছে।
aiKit হোস্টিং: aiKit নিজেই কোড বিল্ড করে ও পরিবেশন করে, শুরুর জন্য একটি বিনামূল্যের ঠিকানা সহ। সাইট ও front end-এর জন্য সবচেয়ে ভালো।
Server setup-এর অধীনে পেজে আটটি কপি-ও-পেস্ট ধাপ দেখানো হয়, যেখানে আপনার মানগুলো আগে থেকেই বসানো থাকে; প্রতিটিতে একটি Copy বোতাম আছে। ধাপ ১ ও ৮ আপনার কম্পিউটারে চলে, ধাপ ২ থেকে ৭ সার্ভারে sudo অধিকারসম্পন্ন একজন ব্যবহারকারী হিসেবে চলে।
যা তৈরি হয়: কোনো পাসওয়ার্ড ও shell ছাড়া একটি লগইন (ধাপ ২)। এর একমাত্র কী একটি ছোট gate script-এ আটকানো (ধাপ ৩ ও ৫), যা ঠিক দুটি কমান্ড গ্রহণ করে: status (কোন সংস্করণ চলছে এবং সাইট maintenance mode-এ আছে কি না) এবং একটি নির্দিষ্ট commit-এর deploy। Deploy সাইটের নিজের ব্যবহারকারী হিসেবে একটি sudo নিয়মের মাধ্যমে চলে, GitHub-এর ব্রাঞ্চ ঠিক সেই commit-এ আছে কি না যাচাই করে, তারপর আপনার বিদ্যমান deploy script অপরিবর্তিত অবস্থায় চালায়। ধাপ ৪ ফোল্ডারের অনুমতি সেট করে, যাতে লগইন শুধু সাইটের ফোল্ডারে পৌঁছায়: একই home ফোল্ডারের অন্য সাইটে নয়, এবং কখনোই .env-এ নয়। ধাপ ৭ সবকিছু পরীক্ষা করে এবং প্রতিটি লাইনে কী দেখা উচিত তা বলে, আর ধাপ ৮ aiKit-এ key পেস্ট করার আগে আপনার কম্পিউটার থেকে লগইন পরীক্ষা করে।
কোনো সার্ভারে যদি অন্য ব্যবসাও থাকে, তবে এখানেই বিষয়টি গুরুত্বপূর্ণ: aiKit লগইন শুধু এই একটি সাইট ডেপ্লয় করতে পারে, আর কিছু নয়। সাইটের কোড তখনও সাইটের ব্যবহারকারী হিসেবেই চলে, ঠিক যেমন আপনি নিজে GitHub থেকে ডেপ্লয় করলে চলে, এ কারণেই প্রতিটি পরিবর্তন পর্যালোচনা করা হয় এবং ঝুঁকিপূর্ণ ফাইল সুরক্ষিত থাকে।
উপরে চারটি টাইল। Repository: রিপোজিটরি, ব্রাঞ্চ, সর্বশেষ commit এবং প্রজেক্টের ধরন। Runs on: আপনার নিজের সার্ভার (লগইন ও শেষবার কখন সাড়া দিয়েছে সহ) অথবা aiKit হোস্টিং। Live release: যে রিলিজ সাইটে চলছে, কে সেটি তৈরি করেছেন এবং কখন। Pages: সর্বশেষ যাচাইয়ে যে পেজগুলোকে সাড়া দিতে হবে তার কতগুলো সাড়া দিয়েছে; Check now বোতাম সেগুলো আবার পরিদর্শন করে, এবং যে পেজ সাড়া দেয়নি তা নিচে কী ফেরত দিয়েছে সহ তালিকাভুক্ত হয়।
টাইলের নিচে: Request a change (অথবা এখন যে পরিবর্তনটি খোলা আছে), Releases, Change log, Protected files, এবং মালিকের জন্য Connection।
কী বদলানো উচিত লিখুন, পেজের নাম ও কী দেখতে চান তা উল্লেখ করে, তারপর Make the change চাপুন। কার্ডটি Change #1-এ বদলে যায় এবং লাইভ অগ্রগতি দেখায়: সর্বশেষ কোড আনা, AI যেসব ফাইল পড়ে ও সম্পাদনা করে, তারপর প্রতিটি যাচাই। AI শুধু ফাইল সম্পাদনা করে; কোনো কমান্ড চালায় না। প্রতি প্রজেক্টে একসময় একটিই পরিবর্তন খোলা থাকে, এবং প্রতিটি অনুরোধ প্রজেক্টের AI সীমায় গণনা হয়।
শেষ হলে আপনি দেখবেন: অনুরোধ ও কে করেছেন; AI বলছে কী করেছে; যাচাইগুলো, প্রতিটির সঙ্গে টিক বা ক্রস ও তার আউটপুট; যাচাই করা পেজের জন্য Preview বোতাম; Added, Changed বা Removed সহ ফাইলগুলো, এবং যেখানে প্রযোজ্য সেখানে Protected ব্যাজ; আর ফাইল ধরে ধরে পার্থক্য (diff), যোগ করা লাইন সবুজ ও মুছে ফেলা লাইন লাল। এই diff-টিই হুবহু commit ও ডেপ্লয় হবে।
Approve and deploy (শুধু মালিক ও বিল্ডাররা) পরিবর্তনটি শাখায় কমিট করে, একটি বার্তা সহ যেখানে লেখা থাকে কে অনুরোধ করেছে এবং কে অনুমোদন করেছে। এরপর এটি পুশ করে (কখনও জোর করে নয়: অন্য কেউ যদি ইতিমধ্যে পুশ করে থাকে, তবে পরিবর্তনটি Out of date হিসেবে চিহ্নিত হবে এবং কিছুই ডিপ্লয় হবে না), ডিপ্লয় করে এবং পেজগুলো পরীক্ষা করে। Discard নিশ্চিতকরণের পর পরিবর্তনটি বাতিল করে; কিছুই ডিপ্লয় হয়নি। রিভিউয়াররা সবকিছু দেখতে পারেন, তবে কোনোটিই চাপতে পারেন না।
চেকগুলো পাস করার পর কী হবে, তা Connection, Checks and review-এর অধীনে একটি সেটিংস। Wait for approval ডিফল্ট। Deploy automatically শুধু তখনই পরিবর্তনটি নিজে থেকে ডিপ্লয় করে, যখন প্রতিটি চেক পাস করে এবং কোনো সুরক্ষিত ফাইল বদলায়নি; অন্য সব ক্ষেত্রে এটি অপেক্ষা করে।
Laravel প্রজেক্টের জন্য চেকগুলো হলো: বদলানো প্রতিটি PHP ফাইল পার্স হয় (php -l); প্রতিটি Blade ভিউ কম্পাইল হয় (php artisan view:cache); ফ্রন্ট এন্ড বিল্ড হয় (npm run build); এবং অ্যাপটি একটি টেস্ট রানে একটি ডিসপোজেবল SQLite ডেটাবেসে চালু হয়, যা রিপোজিটরি থেকে মাইগ্রেট ও সিড করা হয়, এবং Pages-এ থাকা প্রতিটি পেজ টেস্ট রানে খুললে 200 উত্তর দিতে হয়। এগুলো aiKit-এর engine-এ চলে, কখনও আপনার সার্ভারে বা আপনার লাইভ ডেটাবেসের বিরুদ্ধে নয়। প্রজেক্টের .env ফাইল কখনও কপি বা পড়া হয় না; টেস্ট রান পায় শুধু ডিসপোজেবল সেটিংস।
কোনো ব্যর্থ চেক Approve-কে আটকে দেয়। চেক ব্যর্থ হলেও শুধু মালিক Deploy টিক দিতে পারেন, যদি চেকটি এমন কারণে ব্যর্থ হয় যা লাইভ সাইটকে প্রভাবিত করে না।
Preview টেস্ট রান থেকে বদলানো অ্যাপটি একটি নতুন ট্যাবে খোলে, টেস্ট ডেটা ও ফর্ম বন্ধ রেখে। শেষবার ব্যবহারের 15 মিনিট পর এটি বন্ধ হয়ে যায় এবং পরিবর্তনটি অনুমোদিত বা বাতিল হলে শেষ হয়।
AI সুরক্ষিত ফাইলগুলোতে হাত দেয় না। তালিকাটি শুরু হয় এইগুলো দিয়ে: লাইভ সাইটে ইতিমধ্যে চালানো মাইগ্রেশন (লাইভ রিলিজের প্রতিটি মাইগ্রেশন, কারণ প্রতিটি ডিপ্লয় সেগুলো চালায়), নতুন মাইগ্রেশন (পরের ডিপ্লয়ে সেগুলো লাইভ ডেটাবেস বদলে দিত), ডিপ্লয় স্ক্রিপ্ট এবং ডিপেনডেন্সি ফাইল (composer.json, composer.lock, package.json, package-lock.json)। প্রতিটি এন্ট্রিতে কারণ লেখা থাকে। মালিক একটি ফাইল বা ফোল্ডার যোগ করতে পারেন (config/** মানে config-এর ভেতরের সবকিছু) কারণসহ, এন্ট্রি মুছতে পারেন, এবং Save protected files চাপতে পারেন।
সুরক্ষিত ফাইল ইচ্ছাকৃতভাবে বদলাতে মালিক এই অনুরোধের জন্য Allow protected files টিক দেন। এরপর পরিবর্তনে দেখা যায় কোন সুরক্ষিত ফাইলগুলোতে হাত দেওয়া হয়েছে, এবং শুধু মালিক এটি অনুমোদন করতে পারেন, Yes, deploy the changes to protected files টিক দেওয়ার পর। যে বিল্ডার কিছুই টিক দেন না, তার সুরক্ষিত ফাইলে কোনো অ্যাক্সেস থাকে না।
.env ফাইল, প্রাইভেট কী ও auth.json একটি কঠোর স্তরে থাকে: কখনও পড়া হয় না, কখনও বদলানো হয় না, কখনও diff-এর অংশ হয় না, এবং এটি বন্ধ করার অধিকার কারও নেই।
aiKit প্রথমবার আপনার সার্ভারে পৌঁছালে সার্ভার যা চালাচ্ছিল তা রিলিজ 1, Before aiKit হিসেবে রেকর্ড করে, তাই aiKit-এর প্রথম ডিপ্লয়ও রোল ব্যাক করা যায়। এরপর প্রতিটি ডিপ্লয় একটি নম্বরযুক্ত রিলিজ: Change (একটি অনুমোদিত পরিবর্তন; এর নামে ক্লিক করলে সেই পরিবর্তন খোলে), Redeploy, বা Rollback, সাথে এর কমিট, কে করেছে, এর স্ট্যাটাস (Live, Earlier, Live but pages failing, Deploy failed), কতগুলো পেজ উত্তর দিয়েছে, এবং ডিপ্লয় লগ। aiKit শেষ 5টি রাখে।
Deploy the latest code শাখায় এখন যা সবচেয়ে নতুন তা ডিপ্লয় করে, নিশ্চিতকরণের পর, যেমন কেউ সরাসরি একটি ফিক্স পুশ করলে।
Roll back to this একটি আগের রিলিজে এটি এমন একটি নতুন কমিট তৈরি করে যার ফাইলগুলো ঠিক সেই রিলিজের, তারপর সেটি পুশ করে এবং স্বাভাবিক পথে ডিপ্লয় করে, এরপর পেজগুলো পরীক্ষা করে। ইতিহাস কখনও পুনর্লিখিত হয় না, তাই রোলব্যাকটিও আবার রোল ব্যাক করা যায়।
প্রতিটি অনুরোধ তার নম্বর, অনুরোধটি, কে চেয়েছে, কে অনুমোদন বা বাতিল করেছে, কখন, এবং এর বর্তমান অবস্থা সহ। একটি সারিতে ক্লিক করলে তার চেক ও diff সহ পরিবর্তনটি খোলে; ঠিকানায় ?change=<id> যোগ হয়, তাই আপনি লিংকটি আপনার দলের সাথে শেয়ার করতে পারেন।
দ্রুত, নির্দিষ্ট কোনো প্রশ্ন আছে? FAQ দেখুন।