প্রকল্প সম্পর্কে
Croco Framework হলো একটি Node.js ভিত্তিক TypeScript ফ্রেমওয়ার্ক যা AWS Lambda এবং API Gateway-কে প্রথম শ্রেণির নাগরিক হিসেবে বিবেচনা করে। এর README-তে এটিকে একটি 'opinionated' ফ্রেমওয়ার্ক হিসেবে বর্ণনা করা হয়েছে, যা বড় প্রজেক্টে আর্কিটেকচারের ধারাবাহিকতা বজায় রাখার সমস্যা সমাধানের জন্য ভূমিকা অনুযায়ী প্যাকেজ সীমানা স্পষ্টভাবে বিভক্ত করে।
প্যাকেজগুলোকে ৬টি ভূমিকায় বিভক্ত করা হয়েছে: Kernel (ফ্রেমওয়ার্ক রানটাইম ভিত্তি: framework-context, framework-module), Contracts (প্রোভাইডার এবং রানটাইম স্বাধীন ডোমেইন/প্রোটোকল চুক্তি: repository-core, protocols-rest, telemetry-api), Plugins (চুক্তির বাস্তবায়ন এবং পরিবেশ বাইন্ডিং: tx-drizzle, transports-http, preset-node), Application (অ্যাপ মালিকানাধীন মডিউল এবং composition root), Profiles (যাচাইকৃত plugin/module সংমিশ্রণ: presentation-preset), এবং Tooling (build, codegen, testing, CLI)। Kernel এবং Contracts কোনো নির্দিষ্ট Plugin-এর ওপর নির্ভর করে না এবং ভূমিকা সংক্রান্ত তথ্য docs/package-catalog.json-এর packageRoles-এ থাকে।
এর বিশেষ বৈশিষ্ট্য হলো Host, Transport এবং Build Target-এর মধ্যে পার্থক্য করা। Host হলো Node process/server, Lambda invocation, অথবা Workers fetch লাইফসাইকেল (preset-node, preset-lambda, preset-cloudflare); Transport হলো HTTP, GraphQL, RPC-এর মতো প্রোটোকল সারফেস; এবং Build Target হলো Tooling চুক্তি যা entrypoint, আউটপুট ডিরেক্টরি, মডিউল ফরম্যাট এবং বান্ডলিং সীমাবদ্ধতা ঘোষণা করে। একটি Host একাধিক Transport কলব্যাক বাইন্ড করতে পারে।
কার্যকারিতার দিক থেকে এটি DDD ডোমেইন ইভেন্ট (events-core) এবং RegisterEventHandler, Unit of Work ভিত্তিক Transactional ট্রানজ্যাকশন (tx-core, AsyncLocalStorage প্রপাগেশন), RFC 7807 ভিত্তিক Problem রেসপন্স ডিটেইলিং (problems-core), রিট্রাই এবং রিকভারি ডেকোরেটর (Retryable, Recover — retry-core), OpenTelemetry Span তৈরি করার Trace (telemetry-api), এবং ডেকোরেটর ভিত্তিক DI কন্টেইনার (framework-context) প্রদান করে। REST কন্ট্রোলারগুলো Controller/Get/Post ডেকোরেটরের মাধ্যমে সংজ্ঞায়িত করা হয় এবং createApp ও createLambdaHost ব্যবহার করে Lambda হ্যান্ডলার কনফিগার করা হয়।
SaaS ডোমেইনের জন্য এটি বিলিং, এনটাইটেলমেন্ট, ক্রেডিট, মিটারিং এবং কাস্টমার স্ট্যাটাস সংক্রান্ত চুক্তি প্যাকেজ এবং Polar, Clerk, Drizzle, PostHog, QStash-এর মতো প্রোভাইডার ও ইন্টিগ্রেশন প্যাকেজ প্রদান করে। এর মূলনীতি হলো ব্যর্থতাকে সাধারণ Error বা সাইলেন্ট ফলব্যাক দিয়ে লুকানো নয়, বরং Problem, retry, timeout, circuit breaker, idempotency এবং exhaustive handling-এর মাধ্যমে মডেল করা।
এটি শুরু করার জন্য npx create-croco-app@latest ব্যবহার করে স্ক্যাফোল্ডিং করা যায় (যেমন: --goal saas-api) এবং pnpm demo:smoke-এর মাধ্যমে বাহ্যিক ক্রেডেনশিয়াল ছাড়াই REST চুক্তি এবং ইন-মেমোরি SaaS ফ্লো যাচাই করা যায়। examples/quick-start-lambda-তে Auth এবং Metering সহ উদাহরণ pnpm dev দিয়ে চালানো সম্ভব।
README অনুযায়ী, এর ক্যাটালগ ১২০টি পাবলিক প্যাকেজ ট্র্যাক করে এবং 1.0 spine-এর মাধ্যমে ১৮টি প্যাকেজকে release-critical সামঞ্জস্যতার সীমানায় নির্দিষ্ট করে। এর মধ্যে ১০টি production-ready এবং ৮টি beta। পরিপক্কতা এবং গ্রুপের তথ্য রিপোজিটরি মেটাডেটা থেকে তৈরি হয় এবং কোনো অমিল থাকলে docs:catalog:check ব্যর্থ হয়। benchmarks/ ডিরেক্টরিতে পদ্ধতি, বেসলাইন এবং থ্রেশহোল্ড পরিচালনা করা হয় এবং একটি ডেডিকেটেড ওয়ার্কফ্লোতে সাম্প্রতিক ৫টি green evidence-এর ভিত্তিতে এটি blocking gate হিসেবে কাজ করে, তবে README-তে নির্দিষ্ট পারফরম্যান্স সংখ্যা দেওয়া নেই। NestJS, Hono এবং tRPC-এর সাথে তুলনামূলক টেবিলটি পারফরম্যান্স বা প্রতিযোগিতামূলক মূল্যায়নের জন্য নয়, বরং ডিজাইনের মৌলিক পার্থক্যগুলো বোঝানোর জন্য তৈরি করা হয়েছে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.