Sobre el proyecto

Croco Framework es un framework de TypeScript basado en Node.js que trata a AWS Lambda y API Gateway como ciudadanos de primera clase. El README se presenta como un framework 'opinionated' que divide explícitamente los límites de los paquetes por rol para resolver la dificultad de mantener la consistencia arquitectónica en proyectos a gran escala. Los paquetes se clasifican en seis roles: Kernel (base del runtime del framework: framework-context, framework-module), Contracts (contratos de dominio/protocolo independientes del proveedor y runtime: repository-core, protocols-rest, telemetry-api), Plugins (implementaciones de contratos y vinculaciones ambientales: tx-drizzle, transports-http, preset-node), Application (módulos propiedad de la app y composition root), Profiles (combinaciones validadas de plugins/módulos: presentation-preset) y Tooling (build, codegen, testing, CLI). Kernel y Contracts no dependen de Plugins específicos, y la información de referencia de los roles se encuentra en packageRoles dentro de docs/package-catalog.json. Se caracteriza por distinguir entre Host, Transport y Build Target. El Host posee el ciclo de vida del proceso de Node, la invocación de Lambda o el fetch de Workers (preset-node, preset-lambda, preset-cloudflare); el Transport ejecuta la superficie del protocolo como HTTP, GraphQL o RPC; y el Build Target es un contrato de Tooling que declara el entrypoint, el directorio de salida, el formato del módulo y las restricciones de bundling. Un solo Host puede vincular múltiples callbacks de Transport. En cuanto a funcionalidades, proporciona eventos de dominio DDD (events-core) y RegisterEventHandler, transacciones mediante el patrón Unit of Work (tx-core, propagación vía AsyncLocalStorage), detallado de problemas en respuestas basado en RFC 7807 (problems-core), decoradores de reintento y recuperación (Retryable, Recover — retry-core), Trace para generar Spans de OpenTelemetry (telemetry-api) y un contenedor de DI basado en decoradores (framework-context). Los controladores REST se definen con decoradores Controller/Get/Post, y el manejador de Lambda se configura mediante createApp y createLambdaHost. Orientado al dominio SaaS, incluye paquetes de contratos para facturación, entitlements, créditos, metering y estado del cliente, junto con paquetes de integración y proveedores como Polar, Clerk, Drizzle, PostHog y QStash. La documentación establece como principio modelar los fallos mediante Problem, retry, timeout, circuit breaker, idempotency y exhaustive handling, en lugar de ocultarlos como errores generales o fallbacks silenciosos. Para comenzar, se utiliza npx create-croco-app@latest para el scaffolding (ej. --goal saas-api) y pnpm demo:smoke para validar los contratos REST generados y el flujo SaaS en memoria sin credenciales externas; asimismo, se puede ejecutar un ejemplo con Auth y Metering en examples/quick-start-lambda mediante pnpm dev. Según el README, el catálogo rastrea 120 paquetes públicos (excluyendo 2 privados) y fija 18 paquetes en el rango de compatibilidad release-critical con la versión 1.0 spine. De estos, 10 están listos para producción y 8 en beta. La información de madurez y grupo son productos generados a partir de los metadatos del repositorio, y si ocurre un drift, docs:catalog:check fallará. Los benchmarks se gestionan en el directorio benchmarks/ con metodologías, líneas base y umbrales, funcionando como un blocking gate basado en las últimas 5 evidencias verdes en un workflow dedicado, aunque no se presentan cifras de rendimiento específicas en el README. Se aclara que la tabla comparativa con NestJS, Hono y tRPC no se basa en cifras de rendimiento o evaluaciones competitivas, sino en explicar las diferencias de diseño.