Package dependency
Fast to install, but the code you rely on lives outside your repo and upgrades are someone else's release cycle.
UCR pulls audited source templates into Bun, Node, and Next projects, keeps them in your repo, and makes upgrades diffable.
Today, UCR supports Bun-managed projects for bun-http, npm- and pnpm-managed projects for node-http, and Bun-, npm-, and pnpm-managed Next projects for next-app-router.
You usually have to choose between:
UCR gives you a third option:
diff and upgradeThe checked examples/next-app app includes a real posts resource installed with granular UCR blocks.
Representative install commands from that flow:
ucr add entity-contract --target . --instance posts --input entity=Post --input plural=posts --input-file fields=./post.fields.json
ucr add next-collection-route --target . --instance posts --input entity=Post --input plural=posts
ucr add admin-page --target . --instance posts --input entity=Post --input plural=postsThose installs land as normal source files inside the app:
src/ucr/posts/contract/model.ts
src/app/api/posts/route.ts
src/app/posts/page.tsxUCR also keeps the install tracked inside the project:
.ucr/lock.json # installed items, inputs, and owned files
.ucr/state.json # upstream snapshots used for diff and upgradeIn the checked example, .ucr/lock.json records the exact files owned by the posts installs, including:
{
"entity-contract:posts": {
"files": ["src/ucr/posts/contract/model.ts"]
},
"next-collection-route:posts": {
"files": ["src/app/api/posts/route.ts"]
},
"admin-page:posts": {
"files": ["src/app/posts/page.tsx"]
}
}That is the point of UCR: the code is yours now, and later you can still ask what changed upstream.
ucr diff entity-contract --instance posts
ucr upgrade entity-contract --instance postsexamples/next-app shows source installs under src/ucr/..., API routes under src/app/api/..., UI outputs under src/app/..., and real .ucr tracking files.examples/bun-service shows the same model for bun-http, with source under ucr/... and routes under server/routes/....examples/node-service shows the Node HTTP flow with source under ucr/..., routes under server/routes/..., a checked server/index.ts entrypoint, and npm-managed .ucr state.UCR is for you if:
bun-http, node-http, or next-app-routerUCR is not for you if:
ucr init in a managed Bun, npm, or pnpm project.bun-http, node-http, or next-app-router from the target project shape.diff or upgrade later when the upstream template changes.The system details still matter, but they are lower on the stack:
.ucr/config.json, .ucr/lock.json, and .ucr/state.json explain how the install is trackedUCR_REGISTRY_AUTH_HEADERdiff and upgrade work after local edits