Sobre o projeto
O Croco Framework é um framework TypeScript baseado em Node.js que trata o AWS Lambda e o API Gateway como cidadãos de primeira classe. O README apresenta-o como um framework 'opinionated', dividindo explicitamente as fronteiras de pacotes por função para resolver a dificuldade de manter a consistência arquitetural em projetos de grande escala.
Os pacotes são classificados em seis funções: Kernel (base do runtime do framework: framework-context, framework-module), Contracts (contratos de domínio/protocolo independentes de provedor e runtime: repository-core, protocols-rest, telemetry-api), Plugins (implementações de contratos e vinculações de ambiente: tx-drizzle, transports-http, preset-node), Application (módulos proprietários do app e composition root), Profiles (combinações validadas de plugins/módulos: presentation-preset) e Tooling (build, codegen, testing, CLI). O Kernel e os Contracts não dependem de Plugins específicos, e as informações de referência para as funções estão no packageRoles do arquivo docs/package-catalog.json.
Um ponto distintivo é a separação entre Host, Transport e Build Target. O Host detém o ciclo de vida do processo Node/servidor, invocação Lambda ou Workers fetch (preset-node, preset-lambda, preset-cloudflare); o Transport executa superfícies de protocolo como HTTP, GraphQL ou RPC; e o Build Target é um contrato de Tooling que declara o entrypoint, diretório de saída, formato de módulo e restrições de bundling. Um único Host pode vincular vários callbacks de Transport.
Em termos de funcionalidades, oferece eventos de domínio DDD (events-core) e RegisterEventHandler, transações no estilo Unit of Work (tx-core, propagação via AsyncLocalStorage), detalhamento de respostas de erro baseado no RFC 7807 (problems-core), decoradores de tentativa e recuperação (Retryable, Recover — retry-core), Trace para gerar Spans do OpenTelemetry (telemetry-api) e um container de DI baseado em decoradores (framework-context). Controladores REST são definidos com decoradores Controller/Get/Post, e o handler Lambda é configurado via createApp e createLambdaHost.
Focado no domínio SaaS, fornece pacotes de contrato para faturamento, entitlement, créditos, medição e status do cliente, além de pacotes de integração e provedores como Polar, Clerk, Drizzle, PostHog e QStash. A documentação estabelece como princípio a modelagem de falhas através de Problem, retry, timeout, circuit breaker, idempotência e tratamento exaustivo, em vez de ocultá-las como erros genéricos ou fallbacks silenciosos.
O fluxo de início envolve o scaffolding via npx create-croco-app@latest (ex: --goal saas-api) e a validação de contratos REST e fluxos SaaS em memória via pnpm demo:smoke sem credenciais externas. Exemplos com Auth e Metering podem ser executados via pnpm dev em examples/quick-start-lambda.
De acordo com o README, o catálogo rastreia 120 pacotes públicos, fixando 18 pacotes no escopo de compatibilidade release-critical da '1.0 spine'. Destes, 10 estão prontos para produção e 8 em beta. As informações de maturidade e grupo são artefatos gerados a partir de metadados do repositório, e qualquer divergência causa a falha do comando docs:catalog:check. Os benchmarks são gerenciados no diretório benchmarks/ com metodologias e limiares específicos, operando como um blocking gate baseado nas últimas 5 evidências 'green' em um workflow dedicado, embora números de desempenho específicos não constem no README. A tabela de comparação com NestJS, Hono e tRPC é explicitamente destinada a explicar diferenças de design, e não a apresentar métricas de desempenho ou avaliações competitivas.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.