BC Canvas

Put the system on the wall, one context at a time.

The Bounded Context Canvas gives every part of a system one loud page: what it is for, what it listens to, what it promises. This is an editor, a CLI, an MCP server and a markdown fence for exactly that page — and the file never leaves your repo.

  • command What it is told to do
  • event What it announces happened
  • query What it will answer
  • policy The rules it enforces
  • collaborator Who is on the other end
Each of these has a fixed place on the sheet. Filling them in is the workshop.
Open the editor

Why write it down

Documentation is not the point — deciding is.

Every field on the sheet is a small verdict: the purpose has to fit in one sentence, every message needs a named sender, and Shipment gets the one definition the whole team will use. What a wiki page lets you leave vague, the canvas makes you put in writing — where everyone can point at it.

field note

Names get sharp the moment they are written where the whole team can see them.

field note

The gaps you leave showing are the agenda for the next workshop.

The life of one file

Most canvases die as whiteboard photos. This one is a small .bcc.json that keeps working after the workshop ends — the same sheet drawn by every tool that touches it.

01

Born on a workshop wall

The sheet starts in the editor — projected, argued over, filled in live. Command, event, query: the workshop's grammar is already printed on it.

bc-canvas.pages.dev

02

Committed beside the code

In the repo it behaves like source: check reads through the editor's own parser, fmt writes canonical bytes, diffs stay honest.

$ npx --yes github:mitchellvanw/bc-canvas-editor check

4 canvases check out.

4 images match the canvas beside them.

03

Drawn in the docs

A fence in any markdown file points at the canvas, and the remark plugin draws the sheet when the site builds. One path in the fence, nothing else.

```bcc

../canvases/order-fulfillment.bcc.json

```

04

Live while you write

The VS Code extension draws the same fence in the markdown preview and redraws it the moment the canvas beside it changes.

orders.md — Preview

# Order flow

The fulfillment context

owns this handoff:

```bcc

./orders.bcc.json

```

05

Read aloud in a conversation

The MCP server reads the canvas as prose and explains what each section is for, so the whole context fits in a conversation with an agent.

What does Order Fulfillment promise downstream?

It announces Order Shipped to Notifications and the Carriers — and it stops owning the order once picking starts.

The tools

Each station above is a tool you can pick up on its own. The docs cover every one end to end — install, the day-to-day commands, and the edges where it stops.

The examples

Four invented domains ship with the editor — from every section filled to mid-workshop, open questions still winning. Open the closest one and rewrite it into yours.

Order Fulfillment

core

Coordinates picking, packing and shipping once an order is paid.

in
6 in
out
4 out
terms
4 terms
open
2 open

Notifications

generic

Delivers order updates to customers on their preferred channel.

in
1 in
out
1 out
terms
2 terms
open
1 open

Appointment Scheduling

supporting

Books patients into clinic slots and keeps no-shows down.

in
5 in
out
3 out
terms
4 terms
open
1 open

Royalty Distribution

Splits streaming revenue among rights holders.

in
2 in
out
1 out
terms
2 terms
open
4 open

or

Blank canvas

Eleven empty sections and a name to pick.

Nothing leaves your machine.

attribution

The Bounded Context Canvas is by the ddd-crew, licensed CC BY 4.0. This wall just holds the paper.

You made it to the end.

Nothing below here but the editor.

Enter the editor