Skip to content

Latest commit

ย 

History

1,581 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŠ Croco Framework

Move fast, build robustly.
Croco๋Š” AWS Lambda์™€ API Gateway๋ฅผ 1๊ธ‰ ์‹œ๋ฏผ(First-class Citizen)์œผ๋กœ ์ง€์›ํ•˜๋Š” Node.js ๊ธฐ๋ฐ˜์˜ Opinionated(์ฃผ๊ฒฌ์ด ๋šœ๋ ทํ•œ) ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.
๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ค๋ฃจ๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ๋ถ€ํ„ฐ ๋น ๋ฅธ ๋ฐฐํฌ๊ฐ€ ํ•„์š”ํ•œ ์Šคํƒ€ํŠธ์—…๊นŒ์ง€, DDD(Domain-Driven Design) ํŒจํ„ด๊ณผ ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


โœจ ํ•œ ์ค„ ์†Œ๊ฐœ

AWS Lambda์— ์ตœ์ ํ™”๋œ Node.js ๊ธฐ๋ฐ˜ Opinionated(์ฃผ๊ฒฌ์ด ๋šœ๋ ทํ•œ) ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. DDD(Domain-Driven Design) ํŒจํ„ด๊ณผ ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ํ†ตํ•ด ๋น ๋ฅด๊ณ  ๊ฒฌ๊ณ ํ•˜๊ฒŒ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐ŸŽฏ ์™œ Croco์ธ๊ฐ€?

Croco๋Š” AWS Lambda ์ง€ํ–ฅ TypeScript ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ HTTP ์ง„์ž…์ , DDD ์ด๋ฒคํŠธ, ํŠธ๋žœ์žญ์…˜, SaaS ์ง€ํ‘œ/๋ฏธํ„ฐ๋ง, ๊ด€์ฐฐ ๊ฐ€๋Šฅ์„ฑ์„ ํ•˜๋‚˜์˜ ์ผ๊ด€๋œ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐยทํƒ€์ž… ์‹œ์Šคํ…œ์œผ๋กœ ๋ฌถ์–ด ์ฃผ๋Š” opinionated TypeScript ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด์˜ Node.js ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์€ ์œ ์—ฐํ•˜์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์•„ํ‚คํ…์ฒ˜์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Croco๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค:

  • ๋ช…์‹œ์ ์ธ ์—ญํ• ๋ณ„ ํŒจํ‚ค์ง€ ๊ฒฝ๊ณ„: ํŒ€ ๊ฐ„ ์ฝ”๋“œ ์ผ๊ด€์„ฑ ์œ ์ง€
  • AWS Lambda ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋œ ๋ช…์‹œ์  Host ๊ณ„์•ฝ
  • ์ด๋ฒคํŠธ ์ฃผ๋„ ์•„ํ‚คํ…์ฒ˜(EDA)์™€ Unit of Work ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๊ธฐ๋ณธ ์ œ๊ณต
  • ํƒ€์ž… ์ •์˜๋งŒ์œผ๋กœ REST/GraphQL API์™€ ๋ฌธ์„œ ์ž๋™ ์ƒ์„ฑ ์ง€์›

๐Ÿงญ ํ•ต์‹ฌ ์„ค๊ณ„ ์›์น™

Croco๋Š” ๋Ÿฐํƒ€์ž„์—์„œ ์ถ”์ธกํ•˜๊ฒŒ ํ•˜์ง€ ์•Š๊ณ , ๋นŒ๋“œํƒ€์ž„์— ์˜๋„๋ฅผ ๋ช…์‹œํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋ฉฐ, ์‚ฌ๋žŒ๊ณผ LLM์ด ๋ชจ๋‘ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ณ„์•ฝ์„ ์ค‘์‹ฌ์œผ๋กœ ๋™์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Shift left: route, DI, policy, runtime capability, package boundary ์˜ค๋ฅ˜๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด runtime ์˜ˆ์™ธ๋ณด๋‹ค typecheck, build, lint, codegen, CI ๋‹จ๊ณ„์—์„œ ๋จผ์ € ์‹คํŒจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Type is the product: public API, RPC contract, Problem code, capability, scope, middleware graph๋Š” ๋ฌธ์„œ์—๋งŒ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ์†Œ๋น„์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…๊ณผ stable artifact๋กœ ๋“œ๋Ÿฌ๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Explicit over implicit: decorator์™€ reflection์€ ํŽธ์˜ ๊ณ„์ธต์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ตœ์ข… controller, provider, event handler, route, manifest, registration table์€ ๊ฒ€์‚ฌ ๊ฐ€๋Šฅํ•œ ๋ช…์‹œ์  ์‚ฐ์ถœ๋ฌผ๋กœ ์„ค๋ช…๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Contracts over conventions alone: route contract, OpenAPI/RPC snapshot, Problem union, public package entrypoint์ฒ˜๋Ÿผ ๊นจ์ง€๋Š” ๊ณ„์•ฝ์€ ์‚ฌ๋žŒ์ด ๋ˆˆ์œผ๋กœ ๋งž์ถ”๋Š” ์•ฝ์†๋ณด๋‹ค ์ž๋™ ๊ฒ€์ฆ๋˜๋Š” contract๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Failure is a first-class model: ์‹คํŒจ๋Š” ์ผ๋ฐ˜ Error๋‚˜ silent fallback์œผ๋กœ ์ˆจ๊ธฐ์ง€ ์•Š๊ณ  Problem, retry, timeout, circuit breaker, idempotency, exhaustive handling์œผ๋กœ ๋ชจ๋ธ๋งํ•ฉ๋‹ˆ๋‹ค.
  • Observable by default: request lifecycle, trace, retry, event, Problem, DI scope, telemetry flush ๊ฒฝ๊ณ„๋Š” ์šด์˜์ž๊ฐ€ ์›์ธ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” evidence๋ฅผ ๋‚จ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Generated, not hand-wired: client, OpenAPI/RPC spec, manifest, intent map, docs example, registration table ๊ฐ™์€ glue code๋Š” ์ˆ˜๋™ ๋™๊ธฐํ™”๋ณด๋‹ค ์ƒ์„ฑ๊ณผ drift gate๋ฅผ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • Production path first: toy example๋ณด๋‹ค ๋ฐฐํฌ, runtime limitation, compatibility, migration, CI quality gate, zero-credential smoke path๋ฅผ ๋จผ์ € ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.
  • LLM-readable architecture: ์•ˆ์ •์ ์ธ ์—๋Ÿฌ ์ฝ”๋“œ, source location, manifest, intent map, ํƒ€์ž… ๊ธฐ๋ฐ˜ ๋ฌธ์„œ, deterministic generated output์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๊ณผ LLM์ด ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ์ฝ๊ณ  ๊ฐ™์€ ์ˆ˜์ • ์ง€์ ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Composable boundaries: adapter, middleware graph, policy, runtime capability, package layering ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๋ฉฐ core package๊ฐ€ provider/runtime ๊ตฌํ˜„์ฒด์— ์˜ค์—ผ๋˜์ง€ ์•Š๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ†š ์„ค๊ณ„ ์ฒ ํ•™ ๋น„๊ต

Croco NestJS Hono tRPC
์ฃผ ํƒ€๊ฒŸ AWS Lambda + SaaS ๋„๋ฉ”์ธ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ผ๋ฐ˜ ์„œ๋ฒ„ ์ดˆ๊ฒฝ๋Ÿ‰ ์—ฃ์ง€/๋ฉ€ํ‹ฐ๋Ÿฐํƒ€์ž„ ํƒ€์ž… ์•ˆ์ „ RPC
์•„ํ‚คํ…์ฒ˜ ์—ญํ• ๋ณ„ ๊ณ„์•ฝ ๊ฒฝ๊ณ„ ๋ชจ๋“ˆ ๊ธฐ๋ฐ˜ MVC ๋ผ์šฐํ„ฐ ์ค‘์‹ฌ ์Šคํ‚ค๋งˆ๋ฆฌ์Šค RPC
SaaS ๋นŒ๋”ฉ ๋ธ”๋ก ๋นŒ๋ง/๋ฉ”ํŠธ๋ฆญ/๋ฉค๋ฒ„์‹ญ/๋ฏธํ„ฐ๋ง ์ œ๊ณต ๋ณ„๋„ ํ†ตํ•ฉ ํ•„์š” ๋ณ„๋„ ํ†ตํ•ฉ ํ•„์š” ๋ณ„๋„ ํ†ตํ•ฉ ํ•„์š”
DDD ์ด๋ฒคํŠธ/ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋ณธ ๋‚ด์žฅ ๋ณ„๋„ ํ†ตํ•ฉ ํ•„์š” โŒ โŒ
Lambda ์ตœ์ ํ™” โœ… ๋ช…์‹œ์  Lambda Host โŒ โœ… (๋ณ„๋„ ์–ด๋Œ‘ํ„ฐ) โŒ

์œ„ ํ‘œ๋Š” Croco์˜ ์„ค๊ณ„ ์ค‘์‹ฌ์„ ์„ค๋ช…ํ•˜๋ฉฐ, ์„ฑ๋Šฅ ์ˆ˜์น˜๋‚˜ ๊ฒฝ์Ÿ์‚ฌ ๋ถ€์ •ํ‰๊ฐ€๋Š” ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๐Ÿ— ์•„ํ‚คํ…์ฒ˜

Croco์˜ ํŒจํ‚ค์ง€๋Š” Kernel, Contracts, Plugins, Application, Profiles, Tooling ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์—ญํ• ์˜ source of truth๋Š” docs/package-catalog.json์˜ packageRoles์ด๋ฉฐ, Architecture Guide๊ฐ€ ์˜์กด ๋ฐฉํ–ฅ๊ณผ ๋Ÿฐํƒ€์ž„ ์กฐํ•ฉ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์—ญํ•  ์ฑ…์ž„ ์˜ˆ์‹œ
Kernel DI, request context, module lifecycle ๋“ฑ ํ”„๋ ˆ์ž„์›Œํฌ ๋Ÿฐํƒ€์ž„ ๊ธฐ๋ฐ˜ framework-context, framework-module
Contracts provider์™€ runtime์— ๋…๋ฆฝ์ ์ธ ๋„๋ฉ”์ธยทํ”„๋กœํ† ์ฝœ ๊ณ„์•ฝ repository-core, protocols-rest, telemetry-api
Plugins ๊ณ„์•ฝ์˜ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„๊ณผ ํ™˜๊ฒฝ ๋ฐ”์ธ๋”ฉ tx-drizzle (provider), transports-http (transport), preset-node (host)
Application ์•ฑ ์†Œ์œ  ๋ชจ๋“ˆ๊ณผ composition root ์ƒ์„ฑ๋œ ์•ฑ์˜ apps/*
Profiles ๊ฒ€์ฆ๋œ plugin/module ์กฐํ•ฉ presentation-preset
Tooling build, codegen, testing, CLI ๋„๊ตฌ framework-preset (build-target), rpc-codegen, openapi-spec

ํ™”์‚ดํ‘œ๋Š” ์˜์กดํ•˜๋Š” ์ชฝ โ†’ ์˜์กด ๋Œ€์ƒ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์š”์ฒญ์ด ํ†ต๊ณผํ•˜๋Š” ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

flowchart LR
  application[Application] --> profiles[Profiles]
  application --> plugins[Plugins]
  application --> contracts[Contracts]
  profiles --> plugins
  plugins --> contracts
  plugins --> kernel[Kernel]
  contracts --> kernel
Loading

Kernel๊ณผ Contracts๋Š” ๊ตฌ์ฒด์ ์ธ Plugins์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ, plugin subtype, runtime ์ง€์›, maturity, certification, spine ์—ฌ๋ถ€๋Š” ์—ญํ• ๊ณผ ๋ณ„๋„์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด Core, Domain, Provider, Integration, Protocol, Transport, Host, Presentation ๊ทธ๋ฃน์€ ํŒจํ‚ค์ง€ ํƒ์ƒ‰์„ ์œ„ํ•œ ๋ณด์กฐ ๋ถ„๋ฅ˜์ž…๋‹ˆ๋‹ค.

Host, Transport, Build Target

  • Host๋Š” Node process/server, Lambda invocation, Workers fetch ์ˆ˜๋ช…์ฃผ๊ธฐ๋ฅผ ์†Œ์œ ํ•˜๋Š” Plugin์ž…๋‹ˆ๋‹ค. preset-node, preset-lambda, preset-cloudflare์˜ create*Host API๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Transport๋Š” HTTP, GraphQL, RPC ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ ํ‘œ๋ฉด์„ ์‹คํ–‰ํ•˜๋Š” Plugin์ž…๋‹ˆ๋‹ค. Host๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ Transport ์ฝœ๋ฐฑ์„ ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Build Target์€ entrypoint, ์ถœ๋ ฅ ๋””๋ ‰ํ„ฐ๋ฆฌ, module format, bundling ์ œ์•ฝ์„ ์„ ์–ธํ•˜๋Š” Tooling ๊ณ„์•ฝ์ž…๋‹ˆ๋‹ค. framework-preset๊ณผ ํ™˜๊ฒฝ preset์˜ create*BuildTarget API๋กœ ๋ช…์‹œํ•˜๋ฉฐ Host๋‚˜ Transport๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

preset-* ํŒจํ‚ค์ง€๋Š” host-primary ํ˜ธํ™˜ facade๋กœ build-target API๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. transports-cloudflare-workers๋Š” ๊ธฐ์กด ์ด๋ฆ„์„ ์œ ์ง€ํ•˜์ง€๋งŒ Workers host Plugin์ž…๋‹ˆ๋‹ค. Integration๊ณผ Presentation ์—ญ์‹œ Plugin subtype์ด๋ฉฐ, Provider โ†’ Transport โ†’ Integration โ†’ Presentation ์ˆœ์„œ๋กœ ์‹คํ–‰๋˜๋Š” ๊ณ„์ธต์„ ๋œปํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๐Ÿš€ Quick Start

์‹คํ–‰ ๊ฐ€๋Šฅํ•œ SaaS REST API ๊ณจ๋“  ํŒจ์Šค๋ฅผ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜์„ธ์š”.

์ฒซ ๋ฒˆ์งธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ:

npx create-croco-app@latest my-saas-api --goal saas-api --scope @myorg --no-install --no-git
cd my-saas-api && pnpm install && pnpm demo:smoke

demo:smoke validates the generated REST contracts, in-memory SaaS flow, and operational smoke without external credentials.

Route A (Scaffold): Getting Started Guide์—์„œ scaffold๋ถ€ํ„ฐ Auth, Metering, Lambda ๋ฐฐํฌ๊นŒ์ง€ ๋‹จ๊ณ„๋ณ„๋กœ SaaS API๋ฅผ ๊ตฌ์ถ•ํ•˜์„ธ์š”.

Route B (Example): Quick Start Example์—์„œ Auth์™€ Metering์ด ํฌํ•จ๋œ ์™„์„ฑ๋œ Lambda API๋ฅผ pnpm dev๋กœ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜์„ธ์š”.

ํŒจํ‚ค์ง€ ์„ฑ์ˆ™๋„ ์•ˆ๋‚ด

Croco์˜ package count, group, maturity metadata๋Š” ์•„๋ž˜ ํŒจํ‚ค์ง€ ์นดํƒˆ๋กœ๊ทธ ์„น์…˜์—์„œ ์ž๋™ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ „ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

  • ๐ŸŸข production-ready โ€” ์•ˆ์ •ํ™”, ์ ๊ทน ์‚ฌ์šฉ ๊ถŒ์žฅ
  • ๐ŸŸก beta โ€” ๊ธฐ๋Šฅ ์™„์„ฑ, ์‹ค์‚ฌ์šฉ ๊ฒ€์ฆ ์ค‘
  • ๐Ÿ”ด alpha/WIP โ€” ๊ฐœ๋ฐœ ์ค‘, ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ ํ•„์š”
  • โš ๏ธ deprecated โ€” ๋Œ€์ฒด ํŒจํ‚ค์ง€ ์กด์žฌ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ถŒ์žฅ

๐Ÿ“‚ Package Grouping

Croco package grouping์€ docs/package-catalog.json์˜ group metadata์™€ packages/*/package.json์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. README์˜ ์นดํƒˆ๋กœ๊ทธ๊ฐ€ drift๋˜๋ฉด pnpm docs:catalog:check๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์—ฌ์ž๋ฅผ ์œ„ํ•œ ์ฝ๊ธฐ ์ˆœ์„œ

  1. framework-context โ€” DI ์ปจํ…Œ์ด๋„ˆ, ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ๊ธฐ๋ฐ˜
  2. problems-core โ€” ์—๋Ÿฌ ์ฒ˜๋ฆฌ ํŒจํ„ด
  3. protocols-* โ†’ transports-* โ€” API ์ •์˜ ๋ฐ ์‹คํ–‰
  4. ๋„๋ฉ”์ธ ํŒจํ‚ค์ง€ (*-core) โ€” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
  5. Provider ํŒจํ‚ค์ง€ (*-polar, *-clerk ๋“ฑ) โ€” ์™ธ๋ถ€ ์—ฐ๋™

๐Ÿ“Š ๋ฒค์น˜๋งˆํฌ ๋ฐ ์„ฑ๋Šฅ ์ธก์ •

Croco๋Š” Lambda ์ฝœ๋“œ์Šคํƒ€ํŠธ ๋ฐ ์‹คํ–‰ ์„ฑ๋Šฅ์„ ์ง€์†์ ์œผ๋กœ ์ธก์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒค์น˜๋งˆํฌ๋Š” benchmarks/ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๊ด€๋ฆฌ๋˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

  • ์ธก์ • ๋ฐฉ๋ฒ•๋ก  ๋ฐ ์‹œ๋‚˜๋ฆฌ์˜ค ์„ค๋ช…
  • ์ตœ์‹  ๊ธฐ์ค€์„ (baseline) ๋ฐ ์ž„๊ณ„๊ฐ’(threshold) ๋ฐ์ดํ„ฐ
  • ์ „์šฉ benchmark workflow์—์„œ ์ตœ์‹  5ํšŒ green evidence ๊ธฐ๋ฐ˜ blocking gate๋กœ ๋™์ž‘

์ž์„ธํ•œ ๋‚ด์šฉ์€ benchmark-gate-transition.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


โšก ์ฃผ์š” ๊ธฐ๋Šฅ

๋„๋ฉ”์ธ ์ด๋ฒคํŠธ (DDD)

Aggregate Root์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ , ํƒ€์ž… ์•ˆ์ „ํ•œ ํ•ธ๋“ค๋Ÿฌ์—์„œ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

import { DomainEvent, RegisterEventHandler, type EventHandler } from "@croco/events-core";

class OrderPlacedEvent extends DomainEvent {
  static readonly eventName = "order.placed";

  constructor(public readonly orderId: string) {
    super();
  }
}

@RegisterEventHandler(OrderPlacedEvent)
class OrderPlacedHandler implements EventHandler<OrderPlacedEvent> {
  async handle(event: OrderPlacedEvent): Promise<void> {
    // ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ
    console.log(`Order placed: ${event.orderId}`);
  }
}

ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ (Unit of Work)

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํ•˜๋‚˜๋กœ ํŠธ๋žœ์žญ์…˜ ๊ฒฝ๊ณ„๋ฅผ ์„ค์ •ํ•˜๊ณ , AsyncLocalStorage๋ฅผ ํ†ตํ•ด ์ปจํ…์ŠคํŠธ๋ฅผ ์ „ํŒŒํ•ฉ๋‹ˆ๋‹ค.

import { Component } from "@croco/framework-context";
import { Transactional } from "@croco/tx-core";

type CreateOrderDto = {
  orderId: string;
};

@Component()
class OrderService {
  @Transactional()
  async placeOrder(dto: CreateOrderDto): Promise<CreateOrderDto> {
    // ์—ฌ๋Ÿฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ๋™์ผํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    return dto;
  }
}

๋ฌธ์ œ ์ƒ์„ธํ™” (Problem Details)

RFC 7807 ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋Š” ์ผ๊ด€๋œ ์—๋Ÿฌ ์‘๋‹ต ํ˜•์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

import { ProblemFactory } from "@croco/problems-core";

throw ProblemFactory.notFound("user/not-found", "์‚ฌ์šฉ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");

์‹คํŒจ ์ฒ˜๋ฆฌ ๊ธฐ์ค€์€ Failure Semantics๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ProblemCategory๋Š” ๋ณต๊ตฌ ๊ฐ€๋Šฅ์„ฑ, code๋Š” ํŒจํ‚ค์ง€๋ณ„ ์•ˆ์ • ์‹๋ณ„์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, retry-core๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ InternalServerError์™€ TooManyRequests๋งŒ ์žฌ์‹œ๋„ ๊ฐ€๋Šฅํ•œ ์‹คํŒจ๋กœ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

์„ค์น˜

# ๋ชจ๋…ธ๋ ˆํฌ ํด๋ก 
git clone https://github.com/croco-dev/framework.git
cd framework

# ์˜์กด์„ฑ ์„ค์น˜
pnpm install

# ๋นŒ๋“œ
pnpm build

๋น ๋ฅธ ์‹œ์ž‘ - HTTP API ์„œ๋ฒ„

import { Component } from "@croco/framework-context";
import { createApplicationRuntime } from "@croco/framework-module";
import { createLambdaHost } from "@croco/preset-lambda";
import { Body, Controller, Get, Post } from "@croco/protocols-rest";
import { createApp } from "@croco/transports-http";

@Component()
@Controller("/users")
class UserController {
  @Get("/")
  async list() {
    return [{ id: 1, name: "John" }];
  }

  @Post("/")
  async create(@Body() body: { name: string }) {
    return { id: 2, name: body.name };
  }
}

const runtime = createApplicationRuntime();
const app = runtime.run(() =>
  createApp({
    controllers: [UserController],
  }),
);

const lambdaHost = createLambdaHost(app);
export const handler = runtime.bindHostCallback(lambdaHost);

์—ฌ๊ธฐ์„œ @croco/preset-lambda๋Š” Lambda invocation ์ˆ˜๋ช…์ฃผ๊ธฐ๋ฅผ ์†Œ์œ ํ•˜๋Š” Host์ด๊ณ , @croco/transports-http๋Š” HTTP ์š”์ฒญ์„ ์‹คํ–‰ํ•˜๋Š” Transport์ž…๋‹ˆ๋‹ค. Node์—์„œ๋Š” @croco/preset-node์˜ createNodeHost()๋กœ Host๋งŒ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํŒจํ‚ค์ง€ ์‚ฌ์šฉ๋ฒ•

1. ์˜์กด์„ฑ ์ฃผ์ž… (@croco/framework-context)

import { Component, Container } from "@croco/framework-context";

@Component()
class UserService {
  async getUser(id: string): Promise<{ id: string; name: string }> {
    return { id, name: "John" };
  }
}

// ์ž๋™ singleton ๋“ฑ๋ก, ์ƒ์„ฑ์ž ์ฃผ์ž… ์ง€์›
const service = Container.get(UserService);
void service;

2. ์—๋Ÿฌ ์ฒ˜๋ฆฌ (@croco/problems-core)

import { ProblemFactory } from "@croco/problems-core";

// RFC 7807 Problem ๊ธฐ๋ฐ˜ ์—๋Ÿฌ
throw ProblemFactory.notFound("user/not-found", "์‚ฌ์šฉ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");

// ์ž๋™์œผ๋กœ 404 + application/problem+json ์‘๋‹ต

3. ์žฌ์‹œ๋„ & ์„œํ‚ท๋ธŒ๋ ˆ์ด์ปค (@croco/retry-core)

import { Retryable, Recover } from "@croco/retry-core";

type Data = { status: number } | { cached: true };

class ExternalApiService {
  @Retryable({ maxAttempts: 3, backoff: { delay: 100, multiplier: 2 } })
  async fetchData(): Promise<Data> {
    return { status: (await fetch("https://api.example.com/data")).status };
  }

  @Recover()
  async recoverFromFailure(error: Error): Promise<Data> {
    console.warn("All retries failed", error);
    return { cached: true };
  }
}

4. ๋ถ„์‚ฐ ์ถ”์  (@croco/telemetry-api)

import { Trace } from "@croco/telemetry-api";

type CreateOrderDto = {
  orderId: string;
};

class OrderService {
  @Trace({ name: "order.create" })
  async createOrder(dto: CreateOrderDto): Promise<CreateOrderDto> {
    // ์ž๋™์œผ๋กœ OpenTelemetry Span ์ƒ์„ฑ
    return dto;
  }
}

๐Ÿ—บ๏ธ ๋กœ๋“œ๋งต โ€” 1.0 readiness status

Croco 1.0 readiness๋Š” ๋‚ ์งœ๋งŒ ์žˆ๋Š” phase ๋ชฉ๋ก์ด ์•„๋‹ˆ๋ผ checked source์™€ gate๋กœ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

Current 1.0 spine status: 18 spine packages; 10 production-ready, 8 beta, 0 alpha/WIP, 0 deprecated; 8 beta promotion records.

Track Current status Checked source / gate
1.0 spine package scope docs/package-catalog.json์˜ spine.packages๊ฐ€ release-critical compatibility scope๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. pnpm docs:catalog:check, pnpm spine-promotion:check
First-success path Quick-start Lambda์™€ SaaS billing golden path๊ฐ€ public first-success commands๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. pnpm first-success:verify, pnpm quick-start-lambda:smoke, pnpm saas-billing-golden-path:smoke
Release evidence Alpha/release smoke, provenance, spine evidence๋Š” release docs์™€ CI gate์—์„œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. pnpm release-docs:check, pnpm release:spine-evidence
Package maturity production-ready, beta, alpha/WIP, deprecated ์ƒํƒœ๋Š” catalog metadata์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. pnpm docs:catalog:check, pnpm production-ready:check

Follow-up work is tracked in GitHub Issues and in Croco 1.0 Spine, with status rendered from checked repository metadata.


๐Ÿ“ฆ ํŒจํ‚ค์ง€ ์นดํƒˆ๋กœ๊ทธ

์ด ์„น์…˜์€ pnpm docs:catalog:write๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ์ด๋ฆ„๊ณผ ๊ฒฝ๋กœ๋Š” packages/*/package.json์—์„œ ์ฝ๊ณ , ๊ทธ๋ฃน/์„ฑ์ˆ™๋„๋Š” docs/package-catalog.json์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์นดํƒˆ๋กœ๊ทธ๋Š” 120๊ฐœ public package๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. Private package 2๊ฐœ๋Š” publish ์นดํƒˆ๋กœ๊ทธ์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ ์ปค๋ฒ„๋ฆฌ์ง€ ์ƒ์„ธ๋Š” docs/package-docs-report.md๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

Croco 1.0 Spine

Croco 1.0 spine์€ 18๊ฐœ package๋ฅผ release-critical compatibility scope๋กœ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. Source of truth๋Š” docs/package-catalog.json์˜ spine.packages์ด๋ฉฐ, ์šด์˜ ๊ฐ€์ด๋“œ์™€ ํ›„์† release-gate issue ๋ชฉ๋ก์€ Croco 1.0 Spine์— ์žˆ์Šต๋‹ˆ๋‹ค.

Spine membership is not a maturity claim: production-ready packages already have the strongest evidence gates, beta spine packages are allowed while their 1.0 gates harden, and non-spine beta/alpha packages do not block 1.0 unless they are pulled into a golden path or certified adapter path.

Current 1.0 spine status: 18 spine packages; 10 production-ready, 8 beta, 0 alpha/WIP, 0 deprecated; 8 beta promotion records.

Generated status Count Source
Spine packages 18 docs/package-catalog.json spine.packages
Production-ready spine packages 10 maturity.production.packages
Beta spine packages 8 maturity.beta.packages
Alpha/WIP spine packages 0 maturity.alpha.packages
Deprecated spine packages 0 maturity.deprecated.packages
Beta promotion records 8 spine.promotion.packages
Package Group Maturity Directory
@croco/framework-context Core ๐ŸŸข production-ready packages/framework-context
@croco/problems-core Core ๐ŸŸข production-ready packages/problems-core
@croco/protocols-core Protocol ๐ŸŸก beta packages/protocols-core
@croco/protocols-rest Protocol ๐ŸŸข production-ready packages/protocols-rest
@croco/openapi-spec Protocol ๐ŸŸก beta packages/openapi-spec
@croco/rpc-codegen Protocol ๐ŸŸก beta packages/rpc-codegen
@croco/transports-http Transport ๐ŸŸข production-ready packages/transports-http
@croco/telemetry-api Integration ๐ŸŸข production-ready packages/telemetry-api
@croco/telemetry-sdk-node Integration ๐ŸŸข production-ready packages/telemetry-sdk-node
@croco/tx-core Core ๐ŸŸข production-ready packages/tx-core
@croco/tx-drizzle Core ๐ŸŸข production-ready packages/tx-drizzle
@croco/events-core Core ๐ŸŸข production-ready packages/events-core
@croco/events-tx Core ๐ŸŸก beta packages/events-tx
@croco/retry-core Core ๐ŸŸข production-ready packages/retry-core
@croco/idempotency-core Core ๐ŸŸก beta packages/idempotency-core
@croco/testing Tooling ๐ŸŸก beta packages/testing
create-croco-app Tooling ๐ŸŸก beta packages/create-croco-app
@croco/cli Tooling ๐ŸŸก beta packages/cli

Canonical Package Roles

Package Canonical role Subtype Domain Runtime claims
@croco/access-core Contracts domain Access unclaimed
@croco/access-drizzle Plugins provider Access control node, lambda
@croco/admin-core Contracts domain Admin unclaimed
@croco/admin-generated Tooling codegen Admin Generated unclaimed
@croco/admin-ops Contracts domain Admin Ops unclaimed
@croco/admin-react Plugins presentation Admin React browser, node
@croco/analytics-core Contracts domain Analytics unclaimed
@croco/analytics-posthog Plugins integration Analytics node, lambda
@croco/architecture-policy Tooling policy Architecture Policy unclaimed
@croco/audit-core Contracts domain Audit unclaimed
@croco/audit-drizzle Plugins provider Audit node, lambda
@croco/auth-better-auth Plugins provider Auth node, lambda
@croco/auth-clerk Plugins provider Auth node, lambda
@croco/auth-core Contracts domain Auth unclaimed
@croco/auth-drizzle Plugins provider Auth node, lambda
@croco/batch-core Contracts domain Batch unclaimed
@croco/batch-qstash Plugins provider Batch node, lambda
@croco/billing-core Contracts domain Billing unclaimed
@croco/billing-polar Plugins provider Billing node, lambda
@croco/cache-core Contracts domain Cache unclaimed
@croco/cli Tooling cli Cli unclaimed
create-croco-app Tooling cli Create Croco App unclaimed
@croco/credits-core Contracts domain Credits unclaimed
@croco/credits-drizzle Plugins provider Credits node, lambda
@croco/customer-health-core Contracts domain Customer Health unclaimed
@croco/customer-health-drizzle Plugins provider Customer health node, lambda
@croco/dataloader-core Contracts domain Dataloader unclaimed
@croco/desktop-codegen Tooling codegen Desktop Codegen unclaimed
@croco/diagnostics-core Kernel runtime Diagnostics unclaimed
@croco/engagement-core Contracts domain Engagement unclaimed
@croco/engagement-drizzle Plugins provider Engagement node, lambda
@croco/entitlements-core Contracts domain Entitlements unclaimed
@croco/entitlements-drizzle Plugins provider Entitlements node, lambda
@croco/esbuild-plugin Tooling build-target Esbuild Plugin unclaimed
@croco/events-core Contracts domain Events unclaimed
@croco/events-inmemory Plugins provider Events Inmemory unclaimed
@croco/events-tx Plugins integration Events Tx unclaimed
@croco/execution-core Contracts domain Execution unclaimed
@croco/execution-drizzle Plugins provider Execution node, lambda
@croco/features-core Contracts domain Features unclaimed
@croco/features-posthog Plugins integration Feature flags node, lambda
@croco/framework-config Kernel runtime Framework Config unclaimed
@croco/framework-context Kernel runtime Framework Context unclaimed
@croco/framework-logger Kernel runtime Framework Logger unclaimed
@croco/framework-module Kernel runtime Framework Module unclaimed
@croco/framework-preset Tooling build-target Framework Preset unclaimed
@croco/framework-routes Plugins integration Framework Routes unclaimed
@croco/frontend-cloudflare Plugins presentation Frontend SSR cloudflare-workers
@croco/frontend-problems Plugins presentation Frontend Problems browser, cloudflare-workers
@croco/frontend-react Plugins presentation Frontend React browser, node
@croco/frontend-vite Tooling build-target Frontend Vite node, browser, cloudflare-workers
@croco/gid-core Contracts domain Gid unclaimed
@croco/governance-core Contracts domain Governance unclaimed
@croco/health-core Contracts domain Health unclaimed
@croco/idempotency-core Contracts domain Idempotency unclaimed
@croco/impersonation-core Contracts domain Impersonation unclaimed
@croco/integrations-posthog Plugins integration PostHog node, lambda
@croco/invitation-core Contracts domain Invitation unclaimed
@croco/invitation-drizzle Plugins provider Invitation node, lambda
@croco/lifecycle-core Contracts domain Lifecycle unclaimed
@croco/llm-core Contracts domain Llm unclaimed
@croco/llm-metering Plugins integration Llm Metering unclaimed
@croco/llm-openai Plugins provider LLM node, lambda
@croco/membership-core Contracts domain Membership unclaimed
@croco/membership-drizzle Plugins provider Membership node, lambda
@croco/meta-vite Tooling build-target Frontend routing node, lambda, cloudflare-workers, browser
@croco/metering-core Contracts domain Metering unclaimed
@croco/metering-drizzle Plugins provider Metering node, lambda
@croco/metering-upstash Plugins provider Metering node, lambda
@croco/metrics-billing Plugins provider Metrics node, lambda, cloudflare-workers
@croco/metrics-core Contracts domain Metrics unclaimed
@croco/migration-runner Tooling migration Migration Runner unclaimed
@croco/notifications-core Contracts domain Notifications unclaimed
@croco/notifications-react-email Plugins presentation Notifications node, lambda
@croco/notifications-resend Plugins provider Notifications node, lambda
@croco/onboarding-core Contracts domain Onboarding unclaimed
@croco/onboarding-drizzle Plugins provider Onboarding node, lambda
@croco/openapi-spec Tooling codegen Openapi Spec unclaimed
@croco/outbox-core Contracts domain Outbox unclaimed
@croco/pagination-core Contracts domain Pagination unclaimed
@croco/presentation-preset Profiles composition Presentation preset node, lambda, cloudflare-workers, browser
@croco/preset-cloudflare Plugins host Cloudflare Workers host cloudflare-workers
@croco/preset-lambda Plugins host AWS Lambda host lambda
@croco/preset-node Plugins host Node host node
@croco/problems-core Kernel runtime Problems unclaimed
@croco/protocol-codegen Tooling codegen Protocol Codegen unclaimed
@croco/protocols-core Contracts protocol Protocols unclaimed
@croco/protocols-desktop Contracts protocol Protocols Desktop unclaimed
@croco/protocols-graphql Plugins protocol Protocols Graphql unclaimed
@croco/protocols-rest Contracts protocol Protocols Rest unclaimed
@croco/protocols-trpc Plugins protocol Protocols Trpc unclaimed
@croco/ratelimit-core Contracts domain Ratelimit unclaimed
@croco/ratelimit-upstash Plugins provider Rate limiting node, lambda
@croco/repository-core Contracts domain Repository unclaimed
@croco/retry-core Contracts domain Retry unclaimed
@croco/rpc-codegen Tooling codegen Rpc Codegen unclaimed
@croco/search-core Contracts domain Search unclaimed
@croco/search-drizzle Plugins provider Search node, lambda
@croco/search-meilisearch Plugins provider Search node, lambda
@croco/storage-cloudflare Plugins provider Storage node, lambda
@croco/storage-cloudinary Plugins provider Storage node, lambda
@croco/storage-core Contracts domain Storage unclaimed
@croco/storage-r2 Plugins provider Storage node, lambda
@croco/tasks-core Contracts domain Tasks unclaimed
@croco/tasks-qstash Plugins provider Tasks node, lambda
@croco/telemetry-api Contracts observability Telemetry node, lambda, cloudflare-workers, browser
@croco/telemetry-sdk-node Plugins integration Telemetry node, lambda
@croco/tenant-core Contracts domain Tenant unclaimed
@croco/testing Tooling testing Testing unclaimed
@croco/testing-resources Tooling testing Testing Resources unclaimed
@croco/transports-cloudflare-workers Plugins host Cloudflare Workers host cloudflare-workers
@croco/transports-graphql Plugins transport GraphQL transport node, lambda
@croco/transports-http Plugins transport HTTP transport node, lambda
@croco/triggers-core Contracts domain Triggers unclaimed
@croco/triggers-qstash Plugins provider Triggers node, lambda
@croco/tx-core Contracts domain Tx unclaimed
@croco/tx-drizzle Plugins provider Tx Drizzle unclaimed
@croco/ui-astryx Plugins presentation Astryx UI browser, node
@croco/webhooks-core Contracts domain Webhooks unclaimed
@croco/workflow-core Contracts domain Workflow unclaimed

Secondary Inventory Groups

These historical inventory buckets retain certification scope and discovery metadata. They are not top-level package roles or dependency layers; packageRoles is authoritative.

๊ทธ๋ฃน ์„ค๋ช… ํŒจํ‚ค์ง€ ์ˆ˜
Core Framework primitives, context, reliability, transactions, and cross-cutting core utilities 23
Domain Business-domain APIs and package-level abstractions 31
Provider Concrete datastore, SaaS provider, and external service adapters 28
Integration Analytics, feature-flag, and observability integrations 5
Protocol API protocol definitions and code generation 10
Transport Protocol transports that execute application surfaces independently from deployment hosts 2
Host Runtime lifecycle adapters for Node processes, Lambda invocations, and Cloudflare Workers fetch events 4
Build Target Build-time entrypoint, output, format, and bundling contracts without runtime lifecycle ownership 1
Presentation Frontend, SSR, and presentation-layer adapters 9
Tooling CLIs, scaffolds, migration tools, and repository build-time helpers 7

Maturity Guide

Adapter ๊ฒฝ๊ณ„์™€ ๊ณต์‹ ์šฐ์„ ์ˆœ์œ„, compatibility certification checklist๋Š” Adapter Ecosystem์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ์ˆ™๋„ ์Šน๊ธ‰ ๊ธฐ์ค€์€ Provider Maturity Gates์™€ Presentation Runtime Support์— ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ, package test ์กด์žฌ ์—ฌ๋ถ€๋งŒ์œผ๋กœ production-ready๋‚˜ certified compatibility๋ฅผ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1.0 spine์€ release scope์ด๊ณ , production-ready๋Š” package evidence state์ด๋ฉฐ, certified adapter๋Š” adapter/runtime/contract๋ณ„ evidence state์ž…๋‹ˆ๋‹ค.

์ƒํƒœ ์˜๋ฏธ ์ „์ฒด public ํŒจํ‚ค์ง€ ์ˆ˜
๐ŸŸข production-ready ์•ˆ์ •ํ™”, ์ ๊ทน ์‚ฌ์šฉ ๊ถŒ์žฅ 24
๐ŸŸก beta ๊ธฐ๋Šฅ ์™„์„ฑ, ์‹ค์‚ฌ์šฉ ๊ฒ€์ฆ ์ค‘ 78
๐Ÿ”ด alpha/WIP ๊ฐœ๋ฐœ ์ค‘, ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ ํ•„์š” 18
โš ๏ธ deprecated ๋Œ€์ฒด ํŒจํ‚ค์ง€ ์กด์žฌ, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ถŒ์žฅ 0

Extension & Adapter Matrix

์ด ์„น์…˜์€ docs/package-catalog.json์˜ extensionMatrix metadata์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์„ฑ์ˆ™๋„์™€ package test ์กด์žฌ ์—ฌ๋ถ€๋Š” ๋ณ„๋„ ์—ด๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

Adapter category definitions, official priorities, package naming rules, minimum compatibility criteria, and the certification checklist live in Adapter Ecosystem. Certification state is rendered from docs/package-catalog.json certification.records and is scoped to package, contract, runtime, package version, and evidence status.

Certification policy: extension packages in Provider, Integration, Transport, Host, Presentation require a certified record when maturity is production or when public docs make a Croco compatibility claim; candidate records require present liveSmoke evidence, and extension packages without those triggers render as not-applicable until candidate evidence is recorded.

Runtime columns: Node๋Š” ์žฅ๊ธฐ ์‹คํ–‰ ์„œ๋ฒ„/CLI, Lambda๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ํ•จ์ˆ˜, Workers๋Š” Cloudflare Workers, Frontend๋Š” browser/SSR frontend integration์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Provider

Package Role / subtype Domain Adapter Node Lambda Workers Frontend Required env/config Peer deps Features Maturity Package tests Certification
@croco/access-drizzle Plugins / provider Access control Drizzle repository yes yes - - database connection supplied by app drizzle-orm permission checks
policy storage
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/audit-drizzle Plugins / provider Audit Drizzle repository yes yes - - database connection supplied by app - audit event persistence
tenant audit lookup
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/auth-better-auth Plugins / provider Auth Better Auth + Drizzle provider yes yes - - BETTER_AUTH_URL
BETTER_AUTH_SECRET
BETTER_AUTH_WEBHOOK_SECRET optional
- session auth
webhooks
Drizzle schema
shared auth conformance
readiness diagnostics
optional live smoke
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/auth-clerk Plugins / provider Auth Clerk Backend provider yes yes - - CLERK_SECRET_KEY
CLERK_PUBLISHABLE_KEY optional
CLERK_WEBHOOK_SECRET optional
- token auth
session management
organizations
webhooks
shared auth conformance
readiness diagnostics
optional live smoke
๐Ÿ”ด alpha/WIP has package tests uncertified (0.0.4)
@croco/auth-core/AuthProvider
node
lambda
missing: liveSmoke
@croco/auth-drizzle Plugins / provider Auth Drizzle store yes yes - - database connection supplied by app drizzle-orm API key store
role registry
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/batch-qstash Plugins / provider Batch QStash chunk executor yes yes - - QSTASH_TOKEN
public webhook URL
- chunk scheduling
checkpoint resume
idempotent publish
shared conformance
redacted upstream Problems
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/billing-polar Plugins / provider Billing Polar billing gateway yes yes - - POLAR_ACCESS_TOKEN
POLAR_WEBHOOK_SECRET
POLAR_ORGANIZATION_ID optional
- checkout
webhooks
subscription lifecycle
customer portal
usage billing
durable usage delivery
customer meter state
explicit licensed-quantity unsupported diagnostic
๐ŸŸก beta has package tests uncertified (0.0.4)
@croco/billing-core/BillingGateway
node
lambda
missing: liveSmoke
@croco/credits-drizzle Plugins / provider Credits Transactional Drizzle credit ledger yes yes - - PostgreSQL connection supplied by app drizzle-orm atomic credit ledger persistence
concurrent overdraft prevention
durable idempotency
bounded grant expiry
deterministic ledger history
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/customer-health-drizzle Plugins / provider Customer health Drizzle repository yes yes - - database connection supplied by app drizzle-orm health score persistence
customer health lookup
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/engagement-drizzle Plugins / provider Engagement Transactional Drizzle engagement store yes yes - - PostgreSQL connection supplied by app drizzle-orm tenant-scoped contact endpoints
durable preferences and suppressions
logical dispatch idempotency
normalized delivery event deduplication
compare-and-set endpoint invalidation
deterministic delivery history
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/entitlements-drizzle Plugins / provider Entitlements Drizzle repository yes yes - - database connection supplied by app drizzle-orm entitlement persistence
billing entitlement lookup
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/execution-drizzle Plugins / provider Execution Drizzle execution store yes yes - - database connection supplied by app drizzle-orm execution state persistence
retryable failure records
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/invitation-drizzle Plugins / provider Invitation Drizzle repository yes yes - - database connection supplied by app - invitation persistence
transaction-aware repository
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/llm-openai Plugins / provider LLM OpenAI Responses provider yes yes - - OPENAI_API_KEY @croco/llm-core
@croco/problems-core
@croco/retry-core
@croco/telemetry-api
Responses text generation
SSE streaming
JSON Schema structured output
function tool calls
single and batch embeddings
usage and telemetry mapping
Problem normalization
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/membership-drizzle Plugins / provider Membership Drizzle repository yes yes - - database connection supplied by app - membership persistence
transaction-aware repository
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/metering-drizzle Plugins / provider Metering Drizzle usage store yes yes - - database connection supplied by app - usage persistence
quota lookup
migration scripts
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/metering-upstash Plugins / provider Metering Upstash Redis client adapter yes yes - - UPSTASH_REDIS_REST_URL
UPSTASH_REDIS_REST_TOKEN
- Redis command adapter
serverless usage storage
shared conformance
redacted upstream Problems
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/metrics-billing Plugins / provider Metrics Billing metrics bridge yes yes yes - none - billing event metrics
usage aggregation bridge
tenant propagation
event identity idempotency
dropped metric Problems
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/notifications-resend Plugins / provider Notifications Resend email provider yes yes - - RESEND_API_KEY
default from address
- email send
rendered template send
retry
idempotency key
explicit capability profile
shared capability conformance
safe diagnostics
redacted upstream Problems
optional live smoke
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/onboarding-drizzle Plugins / provider Onboarding Drizzle repository yes yes - - database connection supplied by app - onboarding state persistence
step completion storage
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/ratelimit-upstash Plugins / provider Rate limiting Upstash Redis rate-limit store yes yes - - UPSTASH_REDIS_REST_URL
UPSTASH_REDIS_REST_TOKEN
@upstash/redis sliding window
token bucket
fixed window
Lua atomicity
shared conformance
redacted upstream Problems
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/search-drizzle Plugins / provider Search Drizzle search index yes yes - - database connection supplied by app drizzle-orm search document persistence
tenant-aware lookup
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/search-meilisearch Plugins / provider Search Meilisearch engine yes yes - - MEILISEARCH_HOST
MEILISEARCH_API_KEY
- indexing
search
tenant tokens
search conformance
safe diagnostics
env-gated live smoke
๐ŸŸก beta has package tests uncertified (0.0.4)
@croco/search-core/SearchEngine
node
lambda
missing: liveSmoke
@croco/storage-cloudflare Plugins / provider Storage Cloudflare Images provider yes yes - - CLOUDFLARE_ACCOUNT_ID
CLOUDFLARE_API_TOKEN
CLOUDFLARE_ACCOUNT_HASH
- image upload
transform URLs
upload intents
signed URLs
storage conformance
diagnostics
optional live smoke
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/storage-cloudinary Plugins / provider Storage Cloudinary provider yes yes - - CLOUDINARY_CLOUD_NAME
CLOUDINARY_API_KEY
CLOUDINARY_API_SECRET
- file upload
transform URLs
upload intents
retry
storage conformance
diagnostics
optional live smoke
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/storage-r2 Plugins / provider Storage Cloudflare R2 S3-compatible provider yes yes - - R2_ACCOUNT_ID
R2_ACCESS_KEY_ID
R2_SECRET_ACCESS_KEY
R2_BUCKET
- put/get/delete
signed URLs
stream reads
retry
safe diagnostics
env-gated live smoke
๐ŸŸก beta has package tests uncertified (0.0.4)
@croco/storage-core/StorageProvider
node
lambda
missing: liveSmoke
@croco/tasks-qstash Plugins / provider Tasks QStash task runner yes yes - - UPSTASH_QSTASH_TOKEN
UPSTASH_QSTASH_DESTINATION_URL
- task publish
delay override
custom headers
deduplication id
shared conformance
redacted upstream Problems
๐Ÿ”ด alpha/WIP has package tests uncertified (0.0.4)
@croco/tasks-core/TaskRunner
node
lambda
missing: liveSmoke
@croco/triggers-qstash Plugins / provider Triggers QStash scheduler and webhook handler yes yes - - QSTASH_TOKEN
public webhook URL
- schedule publish
webhook verification
trigger dispatch
shared conformance
redacted schedule diagnostics
diagnostic-coded webhook failures
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim

Integration

Package Role / subtype Domain Adapter Node Lambda Workers Frontend Required env/config Peer deps Features Maturity Package tests Certification
@croco/analytics-posthog Plugins / integration Analytics PostHog analytics provider yes yes - - POSTHOG_API_KEY
POSTHOG_HOST optional
- event capture
user/group analytics
flush lifecycle
disabled-mode skip evidence
safe readiness diagnostics
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/features-posthog Plugins / integration Feature flags PostHog feature provider yes yes - - POSTHOG_API_KEY
POSTHOG_HOST optional
- feature flag lookup
PostHog client reuse
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/integrations-posthog Plugins / integration PostHog Shared PostHog client yes yes - - POSTHOG_API_KEY
POSTHOG_HOST optional
- client lifecycle
capture flush
diagnostics
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/telemetry-api Contracts / observability Telemetry OpenTelemetry application API yes yes yes yes none - Trace decorator
withSpan
recordError
trace context lookup
browser RPC correlation bridge
๐ŸŸข production-ready has package tests certified (0.1.0)
@croco/telemetry-api/Trace
node
lambda
cloudflare-workers
browser
evidence complete
@croco/telemetry-sdk-node Plugins / integration Telemetry OpenTelemetry Node SDK runtime yes yes - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT or OTEL_EXPORTER_OTLP_ENDPOINT
TELEMETRY_ENABLED optional
- SDK init
Lambda preset
OTLP export
forceFlush
๐ŸŸข production-ready has package tests certified (0.0.4)
@croco/telemetry-sdk-node/TelemetryRuntime
node
lambda
evidence complete

Transport

Package Role / subtype Domain Adapter Node Lambda Workers Frontend Required env/config Peer deps Features Maturity Package tests Certification
@croco/transports-graphql Plugins / transport GraphQL transport GraphQL Yoga transport yes yes - - none - GraphQL server
resolver execution
Problem mapping
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/transports-http Plugins / transport HTTP transport Hono HTTP/Lambda transport yes yes - - CROCO_DIAGNOSTICS_TOKEN optional
CROCO_HTTP_DI_VALIDATION optional
CROCO_HTTP_SECURITY_VALIDATION optional
- REST route execution
Lambda adapter
operational endpoints
diagnostics
๐ŸŸข production-ready has package tests certified (0.0.4)
@croco/transports-http/HttpTransport
node
lambda
evidence complete

Host

Package Role / subtype Domain Adapter Node Lambda Workers Frontend Required env/config Peer deps Features Maturity Package tests Certification
@croco/preset-lambda Plugins / host AWS Lambda host Lambda invocation lifecycle and build-target compatibility facade - yes - - AWS Lambda invocation context supplied by platform - invocation host
flush boundary
ESM build target
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/preset-cloudflare Plugins / host Cloudflare Workers host Workers fetch lifecycle and build-target compatibility facade - - yes - Cloudflare Worker env object supplied by platform - fetch lifecycle host
runtime context bridge
ESM build target
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/transports-cloudflare-workers Plugins / host Cloudflare Workers host Legacy-named Workers fetch lifecycle adapter - - yes - Cloudflare Worker env object supplied by platform - Worker fetch adapter
request context bridge
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/preset-node Plugins / host Node host Node process/server lifecycle and build-target compatibility facade yes - - - PORT optional
HOST optional
- server start
graceful close
dual-format build target
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim

Presentation

Package Role / subtype Domain Adapter Node Lambda Workers Frontend Required env/config Peer deps Features Maturity Package tests Certification
@croco/admin-react Plugins / presentation Admin React Tenant and cross-domain business workspace primitives yes - - yes none react
react-dom
billing panel contract
contract-aware DataTable
entitlement status primitives
pagination and search adapters
usage quota meters
provider failure state
tenant switcher
impersonation banner
permission inspector
append-only credit operations
ledger allocation and reservation evidence
audited grant, refund, release, and adjustment controls
Tenant 360 source workspace
partial-source state and refresh
permission-aware action launcher
structural extension slots
Problem-preserving console failures
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/ui-astryx Plugins / presentation Astryx UI Croco-aware Astryx React presentation adapter yes - - yes none react
react-dom
Astryx neutral theme provider
application shell
Problem recovery display
auth and session states
prebuilt StyleX CSS consumer path
generated Vite SPA smoke
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/frontend-problems Plugins / presentation Frontend Problems Problem-aware client runtime - - yes yes none - Problem Details parsing
Problem-aware fetch results
declared Problem unions
form Problem mapping
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/frontend-react Plugins / presentation Frontend React React integration helpers yes - - yes none @croco/meta-vite
react
react-dom
React bindings
meta-vite integration
browser hydration smoke
page data hydration flow
generated meta-vite fullstack smoke
auth gate primitives
tenant and entitlement bridge
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/meta-vite Tooling / build-target Frontend routing Meta Vite runtime yes yes yes yes optional Redis-compatible ISR adapter config
Worker-safe IsrCacheStore required for durable Workers ISR
ioredis
react
react-dom
vite
zod
route registry
server actions
SSR/RSC streaming
ISR v1 exact-key TTL
Node/Lambda durable ISR smoke
Workers ISR boundary smoke
generated page/API/action/ISR smoke
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/frontend-cloudflare Plugins / presentation Frontend SSR Cloudflare SSR handler - - yes - API_WORKER binding optional
ASSETS binding optional
- Worker SSR request handling
service binding API routing
ASSETS fallback
streaming Response preservation
RuntimeContext env propagation
generated Worker smoke
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/frontend-vite Tooling / build-target Frontend Vite Vite integration helpers yes - yes yes none @cloudflare/vite-plugin
vite
Vite config helpers
Cloudflare Vite compatibility
optional Cloudflare peer diagnostics
SPA browser build smoke
meta-vite generated build smoke
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim
@croco/notifications-react-email Plugins / presentation Notifications React Email renderer yes yes - - none @react-email/render
react
react-dom
typed email content
HTML rendering
plain-text fallback
deterministic fixture previews
redacted rendering Problems
๐Ÿ”ด alpha/WIP has package tests not-applicable
not required until production-ready or compatibility claim
@croco/presentation-preset Profiles / composition Presentation preset Backend/frontend preset composition yes yes yes yes none - preset composition
contract wiring
generated app support
output contract validation
๐ŸŸก beta has package tests not-applicable
not required until production-ready or compatibility claim

๐ŸŸข production-ready

ํŒจํ‚ค์ง€ ๊ทธ๋ฃน ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฌธ์„œ
@croco/dataloader-core Core packages/dataloader-core README, API, tests
@croco/events-core Core packages/events-core README, API, tests
@croco/framework-context Core packages/framework-context README, API, tests
@croco/problems-core Core packages/problems-core README, API, tests
@croco/repository-core Core packages/repository-core README, API, tests
@croco/retry-core Core packages/retry-core README, API, tests
@croco/tx-core Core packages/tx-core README, API, tests
@croco/tx-drizzle Core packages/tx-drizzle README, API, tests
@croco/audit-core Domain packages/audit-core README, API, tests
@croco/auth-core Domain packages/auth-core README, API, tests
@croco/billing-core Domain packages/billing-core README, API, tests
@croco/invitation-core Domain packages/invitation-core README, API, tests
@croco/llm-core Domain packages/llm-core README, API, tests
@croco/llm-metering Domain packages/llm-metering README, API, tests
@croco/membership-core Domain packages/membership-core README, API, tests
@croco/metering-core Domain packages/metering-core README, API, tests
@croco/metrics-core Domain packages/metrics-core README, API, tests
@croco/ratelimit-core Domain packages/ratelimit-core README, API, tests
@croco/search-core Domain packages/search-core README, API, tests
@croco/telemetry-api Integration packages/telemetry-api README, API, tests
@croco/telemetry-sdk-node Integration packages/telemetry-sdk-node README, API, tests
@croco/protocols-rest Protocol packages/protocols-rest README, API, tests
@croco/migration-runner Tooling packages/migration-runner README, API, tests
@croco/transports-http Transport packages/transports-http README, API, tests

๐ŸŸก beta

ํŒจํ‚ค์ง€ ๊ทธ๋ฃน ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฌธ์„œ
@croco/framework-preset Build Target packages/framework-preset README, API, tests
@croco/cache-core Core packages/cache-core README, API, tests
@croco/diagnostics-core Core packages/diagnostics-core README, API, tests
@croco/events-inmemory Core packages/events-inmemory README, API, tests
@croco/events-tx Core packages/events-tx README, API, tests
@croco/framework-config Core packages/framework-config README, API, tests
@croco/framework-logger Core packages/framework-logger README, API, tests
@croco/framework-module Core packages/framework-module README, API, tests
@croco/framework-routes Core packages/framework-routes README, API, tests
@croco/gid-core Core packages/gid-core README, API, tests
@croco/health-core Core packages/health-core README, API, tests
@croco/idempotency-core Core packages/idempotency-core README, API, tests
@croco/outbox-core Core packages/outbox-core README, API, tests
@croco/pagination-core Core packages/pagination-core README, API, tests
@croco/tenant-core Core packages/tenant-core README, API, tests
@croco/webhooks-core Core packages/webhooks-core README, API, tests
@croco/access-core Domain packages/access-core README, API, tests
@croco/admin-core Domain packages/admin-core README, API, tests
@croco/admin-ops Domain packages/admin-ops README, API, tests
@croco/analytics-core Domain packages/analytics-core README, API, tests
@croco/batch-core Domain packages/batch-core README, API, tests
@croco/customer-health-core Domain packages/customer-health-core README, API, tests
@croco/engagement-core Domain packages/engagement-core README, API, tests
@croco/entitlements-core Domain packages/entitlements-core README, API, tests
@croco/execution-core Domain packages/execution-core README, API, tests
@croco/features-core Domain packages/features-core README, API, tests
@croco/governance-core Domain packages/governance-core README, API, tests
@croco/impersonation-core Domain packages/impersonation-core README, API, tests
@croco/lifecycle-core Domain packages/lifecycle-core README, API, tests
@croco/notifications-core Domain packages/notifications-core README, API, tests
@croco/onboarding-core Domain packages/onboarding-core README, API, tests
@croco/storage-core Domain packages/storage-core README, API, tests
@croco/tasks-core Domain packages/tasks-core README, API, tests
@croco/triggers-core Domain packages/triggers-core README, API, tests
@croco/workflow-core Domain packages/workflow-core README, API, tests
@croco/preset-cloudflare Host packages/preset-cloudflare README, API, tests
@croco/preset-lambda Host packages/preset-lambda README, API, tests
@croco/preset-node Host packages/preset-node README, API, tests
@croco/transports-cloudflare-workers Host packages/transports-cloudflare-workers README, API, tests
@croco/analytics-posthog Integration packages/analytics-posthog README, API, tests
@croco/features-posthog Integration packages/features-posthog README, API, tests
@croco/integrations-posthog Integration packages/integrations-posthog README, API, tests
@croco/frontend-cloudflare Presentation packages/frontend-cloudflare README, API, tests
@croco/frontend-react Presentation packages/frontend-react README, API, tests
@croco/frontend-vite Presentation packages/frontend-vite README, API, tests
@croco/meta-vite Presentation packages/meta-vite README, API, tests
@croco/presentation-preset Presentation packages/presentation-preset README, API, tests
@croco/ui-astryx Presentation packages/ui-astryx README, API, tests
@croco/openapi-spec Protocol packages/openapi-spec README, API, tests
@croco/protocol-codegen Protocol packages/protocol-codegen README, API, tests
@croco/protocols-core Protocol packages/protocols-core README, API, tests
@croco/protocols-graphql Protocol packages/protocols-graphql README, API, tests
@croco/protocols-trpc Protocol packages/protocols-trpc README, API, tests
@croco/rpc-codegen Protocol packages/rpc-codegen README, API, tests
@croco/access-drizzle Provider packages/access-drizzle README, API, tests
@croco/audit-drizzle Provider packages/audit-drizzle README, API, tests
@croco/auth-drizzle Provider packages/auth-drizzle README, API, tests
@croco/billing-polar Provider packages/billing-polar README, API, tests
@croco/customer-health-drizzle Provider packages/customer-health-drizzle README, API, tests
@croco/entitlements-drizzle Provider packages/entitlements-drizzle README, API, tests
@croco/execution-drizzle Provider packages/execution-drizzle README, API, tests
@croco/invitation-drizzle Provider packages/invitation-drizzle README, API, tests
@croco/llm-openai Provider packages/llm-openai README, API, tests
@croco/membership-drizzle Provider packages/membership-drizzle README, API, tests
@croco/metering-drizzle Provider packages/metering-drizzle README, API, tests
@croco/metrics-billing Provider packages/metrics-billing README, API, tests
@croco/onboarding-drizzle Provider packages/onboarding-drizzle README, API, tests
@croco/search-drizzle Provider packages/search-drizzle README, API, tests
@croco/search-meilisearch Provider packages/search-meilisearch README, API, tests
@croco/storage-cloudinary Provider packages/storage-cloudinary README, API, tests
@croco/storage-r2 Provider packages/storage-r2 README, API, tests
@croco/architecture-policy Tooling packages/architecture-policy README, API, tests
@croco/cli Tooling packages/cli README, API, tests
create-croco-app Tooling packages/create-croco-app README, API, tests
@croco/esbuild-plugin Tooling packages/esbuild-plugin README, API, tests
@croco/testing Tooling packages/testing README, API, tests
@croco/testing-resources Tooling packages/testing-resources README, API, tests
@croco/transports-graphql Transport packages/transports-graphql README, API, tests

๐Ÿ”ด alpha/WIP

ํŒจํ‚ค์ง€ ๊ทธ๋ฃน ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฌธ์„œ
@croco/credits-core Domain packages/credits-core README, API, tests
@croco/admin-react Presentation packages/admin-react README, API, tests
@croco/frontend-problems Presentation packages/frontend-problems README, API, tests
@croco/notifications-react-email Presentation packages/notifications-react-email README, API, tests
@croco/admin-generated Protocol packages/admin-generated README, API, tests
@croco/desktop-codegen Protocol packages/desktop-codegen README, API, tests
@croco/protocols-desktop Protocol packages/protocols-desktop README, API, tests
@croco/auth-better-auth Provider packages/auth-better-auth README, API, tests
@croco/auth-clerk Provider packages/auth-clerk README, API, tests
@croco/batch-qstash Provider packages/batch-qstash README, API, tests
@croco/credits-drizzle Provider packages/credits-drizzle README, API, tests
@croco/engagement-drizzle Provider packages/engagement-drizzle README, API, tests
@croco/metering-upstash Provider packages/metering-upstash README, API, tests
@croco/notifications-resend Provider packages/notifications-resend README, API, tests
@croco/ratelimit-upstash Provider packages/ratelimit-upstash README, API, tests
@croco/storage-cloudflare Provider packages/storage-cloudflare README, API, tests
@croco/tasks-qstash Provider packages/tasks-qstash README, API, tests
@croco/triggers-qstash Provider packages/triggers-qstash README, API, tests

Documentation Gate

  • pnpm docs:catalog:check๋Š” README ์นดํƒˆ๋กœ๊ทธ, extension matrix reference ๋ฌธ์„œ, ๋ฌธ์„œ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ฆฌํฌํŠธ drift๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ ๊ทœ public package๋Š” docs/package-catalog.json์— ๊ทธ๋ฃน/์„ฑ์ˆ™๋„ metadata๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ ๊ทœ public package์˜ README, API docs, tests ๋ˆ„๋ฝ์€ docs/package-docs-baseline.json์— ์—†๋Š” ํ•œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
  • production-ready package์˜ API docs ๋ˆ„๋ฝ์€ legacy baseline์œผ๋กœ ์ˆจ๊ธธ ์ˆ˜ ์—†๊ณ , ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์งง์€ ์‚ฌ์œ ๊ฐ€ ์žˆ๋Š” temporaryProductionApiDocExceptions์—๋งŒ ์ž„์‹œ๋กœ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ›  ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

์ฝ”๋“œ ํ’ˆ์งˆ ๋„๊ตฌ

  • Oxlint / Oxfmt: root quality gate์™€ pre-commit hook์—์„œ lint์™€ format์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • TypeScript: ์—„๊ฒฉ ๋ชจ๋“œ + ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ง€์›
  • Vitest / Turbo: package test์™€ repo-wide task orchestration์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • Catalog / release drift gates: README package catalog, first-success docs, release docs, package manifests, public API, static misuse๋ฅผ checked scripts๋กœ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๋ช…๋ น์–ด

pnpm install          # ์˜์กด์„ฑ ์„ค์น˜
pnpm build            # turbo build
pnpm lint             # turbo lint
pnpm format           # oxfmt write
pnpm check            # repository policy, docs/catalog/release drift, lint, format, static gates
pnpm docs:catalog:check      # README package catalog and package docs drift
pnpm first-success:verify    # README, getting-started, examples, and first-success command drift
pnpm release-docs:check      # release guide and Changesets config drift
pnpm release:spine-evidence  # consolidated release spine evidence gate
pnpm test             # ํ…Œ์ŠคํŠธ ์‹คํ–‰
pnpm typecheck        # TypeScript ํƒ€์ž… ๊ฒ€์‚ฌ

Git Hooks (Lefthook)

  • Pre-commit: oxlint/oxfmt ์ž๋™ ์ˆ˜์ •
  • Pre-push: auto-changeset, ํ…Œ์ŠคํŠธ, ํƒ€์ž… ๊ฒ€์‚ฌ

๐Ÿšข ๋ฐฐํฌ ์ „๋žต

Croco๋Š” AWS Lambda๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

  • Fast Startup: ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ๋ฐฐ์ œํ•˜๊ณ  ํŠธ๋ฆฌ์‰์ดํ‚น์— ์ตœ์ ํ™”๋œ ๋นŒ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • API Gateway v2 Support: ๊ณ ์„ฑ๋Šฅ HTTP API๋ฅผ ์œ„ํ•œ ์–ด๋Œ‘ํ„ฐ๋ฅผ ๊ธฐ๋ณธ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • pnpm + Turbo: ๊ณ ์„ฑ๋Šฅ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ๋ฐฐํฌ ์†๋„๋ฅผ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.
pnpm run deploy -- --otp <otp>

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

๊ธฐ์—ฌ ๋ฐฉ๋ฒ•, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •, ์ฝ”๋“œ ์Šคํƒ€์ผ, Git ์›Œํฌํ”Œ๋กœ์šฐ๋Š” CONTRIBUTING.md๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.


๐Ÿ“„ ๋ผ์ด์„ ์Šค

Apache License 2.0. Copyright (c) 2026 Croco Team.

About

๐ŸŠ Move fast, build robustly. โ€” AWS Lambda 1๋“ฑ ์‹œ๋ฏผ, SaaS-first TypeScript ํ”„๋ ˆ์ž„์›Œํฌ

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages