The more the community invests in a bridge, the more powerful the tool becomes“DomainCraft” is a working title
DomainCraft

Bridges

Each bridge is one layer in one axis: a thin certified core plus role layers on top. `extends` builds the chain, `--replace` swaps a layer — no forks, no N×M repositories.

csharp-rest

ready

C#

ASP.NET Core + EF Core + PostgreSQL + JWT + Clean Architecture (core → domain → efcore → rest)

csharp-core

ready

C#

Thin language core — enum wire values, entity types, query schema

ts-core

ready

TypeScript

Thin language core — typed query DSL, permissions, wire values

ts-client

ready

TypeScript

Zod validation, JWT fetch client, per-entity CRUD (extends ts-core)

react-rest

ready

TypeScript

React glue (extends ts-client) — TanStack Query hooks, typed filters, auth

admin-alpine

ready

HTML

Admin panel with Alpine.js + 0build UIkit — CRUD for any REST backend

appwrite

ready

JSON

Appwrite schema: TablesDB + role teams + settings, deployed via the Appwrite CLI

Planned: csharp-dapper (persistence),csharp-grpc (transport) and vue-rest / svelte-rest (thin adapters over ts-client).

Use a bridge

Resolve by registry ID, local path or GitHub shorthand. The CLI clones known bridges on demand into~/.domaincraft/bridges/.

# By registry ID
domaincraft generate --domain domain.yaml --bridge csharp-rest

# By local path
domaincraft generate --domain domain.yaml --bridge ../domaincraft-bridge-csharp-rest

# Swap one layer (Dapper persistence instead of EF Core)
domaincraft generate --domain domain.yaml --bridge csharp-rest --replace persistence=csharp-dapper

# With an admin panel (default admin-alpine)
domaincraft generate --domain domain.yaml --bridge csharp-rest --admin

Add your own

A bridge is just templates and a manifest — no Go code required. Append an entry to the core registry and write a bridge.yaml plus your templates.

Read the writing-a-bridge guide →