@duke333/builder-backend
v0.2.2
Published
Server-side router, usecases, migrations, and runtime adapters for Winu Builder.
Readme
@duke333/builder-backend
Backend Builder package for Express apps.
What It Owns
- Builder admin/runtime router
- Builder metadata use cases
- Builder schema migration service
- Generic runtime adapters
- Prisma/Postgres repository factory
- Setup validator
It does not own host app domain logic.
Install
pnpm add @duke333/builder-contracts @duke333/builder-backendHost Setup
Use one backend bind file:
import { createBuilderBackendIntegration } from "@duke333/builder-backend/integration";
import { createBuilderPrismaRepositories } from "@duke333/builder-backend/prisma";
const repositories = createBuilderPrismaRepositories({ prisma, prismaUnfiltered });
export const builder = createBuilderBackendIntegration({
requireAuth,
requirePermission,
auditFromRequest,
errors,
repositories,
triggerRunner,
fieldTriggerRunner,
adminPermission: "org:manage",
defaultViewPermission: "org:manage",
missingRuntimePermission: "deny",
});
export const { builderRouter, runBuilderMigrations, requireBuilderSchemaVersion } = builder;Mount it:
routes.use("/builder", builderRouter);Prisma
builder init creates:
prisma/builder.schema.prismaprisma/migrations/00000000000000_builder_metadata/migration.sql
Merge the schema snippet into your Prisma schema, then run your normal app migration flow.
Required tables:
builder_definitionsbuilder_viewsbuilder_schema_migrations
Optional Table Override
export const builder = createBuilderBackendIntegration({
// other one-time config
repositories,
runtimeTables: {
products: {
// Only domain-specific behavior belongs here.
},
},
});The package creates the generic runtime adapter from repositories. Consumer apps do not wrap or
forward generic list/create/update/delete calls.
Trigger Example
export const triggerRunner = createBuilderTriggerRunner({
handlers: {
audit: auditTriggerHandler,
callApi: callApiTriggerHandler,
validate: validateTriggerHandler,
},
deps: { logger, errors },
});Validation
pnpm typecheck
pnpm test:run