इस प्रोजेक्ट के बारे में
Croco Framework एक Node.js आधारित TypeScript फ्रेमवर्क है जो AWS Lambda और API Gateway को फर्स्ट-क्लास सिटीजन के रूप में मानता है। इसका README इसे एक 'opinionated' फ्रेमवर्क के रूप में पेश करता है, जो बड़े प्रोजेक्ट्स में आर्किटेक्चरल निरंतरता बनाए रखने की चुनौती को हल करने के लिए भूमिका-आधारित पैकेज सीमाओं को स्पष्ट रूप से विभाजित करता है।
पैकेज को 6 भूमिकाओं में वर्गीकृत किया गया है: Kernel (फ्रेमवर्क रनटाइम आधार: framework-context, framework-module), Contracts (प्रोवाइडर/रनटाइम स्वतंत्र डोमेन/प्रोटोकॉल अनुबंध: repository-core, protocols-rest, telemetry-api), Plugins (अनुबंधों का कार्यान्वयन और पर्यावरण बाइंडिंग: tx-drizzle, transports-http, preset-node), Application (ऐप-स्वामित्व वाले मॉड्यूल और कंपोजिशन रूट), Profiles (सत्यापित प्लगइन/मॉड्यूल संयोजन: presentation-preset), और Tooling (बिल्ड, कोडजेन, टेस्टिंग, CLI)। Kernel और Contracts किसी विशिष्ट Plugin पर निर्भर नहीं होते हैं, और भूमिकाओं की आधारभूत जानकारी docs/package-catalog.json के packageRoles में दी गई है।
इसकी विशेषता Host, Transport और Build Target के बीच का अंतर है। Host (preset-node, preset-lambda, preset-cloudflare) Node प्रोसेस/सर्वर, Lambda इनवोकेशन और Workers फेच लाइफसाइकिल का स्वामित्व रखता है; Transport HTTP, GraphQL और RPC जैसे प्रोटोकॉल सरफेस को निष्पादित करता है; और Build Target एक Tooling अनुबंध है जो एंट्रीपॉइंट, आउटपुट डायरेक्टरी, मॉड्यूल फॉर्मेट और बंडलिंग बाधाओं को घोषित करता है। एक 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 डेकोरेटर्स के साथ परिभाषित किया जाता है, और Lambda हैंडलर को createApp और createLambdaHost के माध्यम से कॉन्फ़िगर किया जाता है।
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 के अनुसार, कैटलॉग 120 पब्लिक पैकेज को ट्रैक करता है (2 प्राइवेट को छोड़कर), और 1.0 स्पाइन के माध्यम से 18 पैकेजों को release-critical संगतता सीमा में स्थिर करता है। इनमें से 10 production-ready हैं और 8 बीटा में हैं। परिपक्वता और समूह की जानकारी रिपॉजिटरी मेटाडेटा से उत्पन्न होती है, और किसी भी विसंगति (drift) के मामले में docs:catalog:check विफल हो जाता है। बेंचमार्क benchmarks/ डायरेक्टरी में प्रबंधित किए जाते हैं और एक समर्पित वर्कफ़्लो में पिछले 5 'green evidence' के आधार पर ब्लॉकिंग गेट के रूप में कार्य करते हैं, हालांकि README में विशिष्ट प्रदर्शन आंकड़े नहीं दिए गए हैं। NestJS, Hono और tRPC के साथ तुलना तालिका प्रदर्शन आंकड़ों के बजाय डिज़ाइन-केंद्रित अंतरों को समझाने के लिए है।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.