Об этом проекте
Croco Framework — это TypeScript-фреймворк на базе Node.js, в котором 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 (собственные модули приложения и composition root), Profiles (проверенные комбинации плагинов/модулей: presentation-preset) и Tooling (сборка, кодогенерация, тестирование, CLI). Kernel и Contracts не зависят от конкретных плагинов; согласно документации, эталонная информация о ролях содержится в packageRoles файла docs/package-catalog.json.
Особенностью является разделение на Host, Transport и Build Target. Host владеет жизненным циклом процесса Node, вызова Lambda или fetch в Workers (preset-node, preset-lambda, preset-cloudflare). Transport исполняет поверхности протоколов, таких как HTTP, GraphQL или RPC. Build Target — это контракт Tooling, объявляющий точку входа, выходную директорию, формат модуля и ограничения бандлинга. Один Host может привязывать несколько колбэков Transport.
Функциональные возможности включают: DDD-доменные события (events-core) и RegisterEventHandler, транзакции в стиле Unit of Work (tx-core, распространение через AsyncLocalStorage), детализацию проблем в ответах на основе RFC 7807 (problems-core), декораторы повтора и восстановления (Retryable, Recover — retry-core), Trace для создания Span OpenTelemetry (telemetry-api) и DI-контейнер на базе декораторов (framework-context). REST-контроллеры определяются с помощью декораторов Controller/Get/Post, а Lambda-хендлеры конфигурируются через createApp и createLambdaHost.
Для SaaS-доменов предоставляются пакеты контрактов для биллинга, прав доступа (entitlements), кредитов, метрирования и статусов клиентов, а также пакеты интеграций с провайдерами, такими как Polar, Clerk, Drizzle, PostHog и QStash. Принципы документации гласят, что сбои не должны скрываться за общими Error или silent fallback, а должны моделироваться через Problem, retry, timeout, circuit breaker, idempotency и исчерпывающую обработку (exhaustive handling).
Путь начала работы: скаффолдинг через npx create-croco-app@latest (например, --goal saas-api) и проверка созданных REST-контрактов и in-memory SaaS-потоков с помощью pnpm demo:smoke без внешних учетных данных. В examples/quick-start-lambda доступен пример с Auth и Metering, который можно запустить через pnpm dev.
Согласно README, каталог отслеживает 120 публичных пакетов (за исключением 2 приватных), при этом 18 пакетов зафиксированы в рамках совместимости release-critical для 1.0 spine. Из них 10 готовы к продакшену, 8 находятся в бете, а пакеты alpha/WIP и deprecated отсутствуют. Информация о зрелости и группах является результатом метаданных репозитория; при возникновении расхождений (drift) проверка docs:catalog:check завершается ошибкой. Методология, базовые линии и пороги бенчмарков управляются в директории benchmarks/, а специальный workflow работает как блокирующий гейт на основе последних 5 успешных проверок (green evidence), однако конкретные цифры производительности в README не приводятся. Сравнительная таблица с NestJS, Hono и tRPC предназначена для объяснения архитектурных различий, а не для оценки производительности или конкурентов.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.