{
 "type": "excalidraw",
 "version": 2,
 "source": "https://excalidraw.com",
 "elements": [
  {
   "id": "r989942221",
   "type": "rectangle",
   "x": 610,
   "y": 230,
   "width": 280,
   "height": 160,
   "angle": 0,
   "strokeColor": "#3d7a4e",
   "backgroundColor": "#eaf4ec",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 3
   },
   "seed": 1931884675,
   "versionNonce": 1693709103,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false
  },
  {
   "id": "t72174182",
   "type": "text",
   "x": 620,
   "y": 238,
   "width": 84.7,
   "height": 17.5,
   "angle": 0,
   "strokeColor": "#111111",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 996306131,
   "versionNonce": 534455562,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "Domain core",
   "fontSize": 14,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "Domain core",
   "lineHeight": 1.25,
   "baseline": 14
  },
  {
   "id": "t642080791",
   "type": "text",
   "x": 620,
   "y": 258,
   "width": 217.8,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 714307270,
   "versionNonce": 1579122209,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "entities, aggregates, business logic",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "entities, aggregates, business logic",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "t1796030696",
   "type": "text",
   "x": 620,
   "y": 273,
   "width": 260.15000000000003,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1403001303,
   "versionNonce": 872293272,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "no web framework, no ORM, no message broker",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "no web framework, no ORM, no message broker",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "r1734056617",
   "type": "rectangle",
   "x": 380,
   "y": 260,
   "width": 190,
   "height": 100,
   "angle": 0,
   "strokeColor": "#111111",
   "backgroundColor": "#ffffff",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 3
   },
   "seed": 769393793,
   "versionNonce": 1462128752,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false
  },
  {
   "id": "t1676895895",
   "type": "text",
   "x": 390,
   "y": 268,
   "width": 115.50000000000001,
   "height": 17.5,
   "angle": 0,
   "strokeColor": "#111111",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 901092563,
   "versionNonce": 195688531,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "Inbound port(s)",
   "fontSize": 14,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "Inbound port(s)",
   "lineHeight": 1.25,
   "baseline": 14
  },
  {
   "id": "t1910714659",
   "type": "text",
   "x": 390,
   "y": 288,
   "width": 193.60000000000002,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 256932669,
   "versionNonce": 370381905,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "what the core can be asked to do",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "what the core can be asked to do",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "t1309262686",
   "type": "text",
   "x": 390,
   "y": 303,
   "width": 199.65,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 528592946,
   "versionNonce": 1175746553,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "e.g. createReview(), placeOrder()",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "e.g. createReview(), placeOrder()",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "r612036536",
   "type": "rectangle",
   "x": 950,
   "y": 260,
   "width": 190,
   "height": 100,
   "angle": 0,
   "strokeColor": "#111111",
   "backgroundColor": "#ffffff",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 3
   },
   "seed": 1835980782,
   "versionNonce": 774562492,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false
  },
  {
   "id": "t647681754",
   "type": "text",
   "x": 960,
   "y": 268,
   "width": 123.20000000000002,
   "height": 17.5,
   "angle": 0,
   "strokeColor": "#111111",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1477247355,
   "versionNonce": 679669039,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "Outbound port(s)",
   "fontSize": 14,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "Outbound port(s)",
   "lineHeight": 1.25,
   "baseline": 14
  },
  {
   "id": "t910722771",
   "type": "text",
   "x": 960,
   "y": 288,
   "width": 205.70000000000002,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1637344119,
   "versionNonce": 1816228118,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "what the core needs from the world",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "what the core needs from the world",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "t1463289804",
   "type": "text",
   "x": 960,
   "y": 303,
   "width": 163.35000000000002,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 63852382,
   "versionNonce": 23398936,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "e.g. findBySku(), persist()",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "e.g. findBySku(), persist()",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "r1877492856",
   "type": "rectangle",
   "x": 50,
   "y": 90,
   "width": 260,
   "height": 110,
   "angle": 0,
   "strokeColor": "#999999",
   "backgroundColor": "#ffffff",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 3
   },
   "seed": 147320045,
   "versionNonce": 1941865862,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false
  },
  {
   "id": "t1341094384",
   "type": "text",
   "x": 60,
   "y": 98,
   "width": 115.50000000000001,
   "height": 17.5,
   "angle": 0,
   "strokeColor": "#111111",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1332837465,
   "versionNonce": 428185182,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "REST controller",
   "fontSize": 14,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "REST controller",
   "lineHeight": 1.25,
   "baseline": 14
  },
  {
   "id": "t1454807971",
   "type": "text",
   "x": 60,
   "y": 118,
   "width": 211.75000000000003,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1131019435,
   "versionNonce": 192927660,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "e.g. ReviewResource (ch.11 excerpt)",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "e.g. ReviewResource (ch.11 excerpt)",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "t1806903917",
   "type": "text",
   "x": 60,
   "y": 133,
   "width": 260.15000000000003,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 259210377,
   "versionNonce": 1063547018,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "translates an HTTP request into a port call",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "translates an HTTP request into a port call",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "r1626627154",
   "type": "rectangle",
   "x": 50,
   "y": 255,
   "width": 260,
   "height": 110,
   "angle": 0,
   "strokeColor": "#999999",
   "backgroundColor": "#ffffff",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 3
   },
   "seed": 986695834,
   "versionNonce": 5851323,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false
  },
  {
   "id": "t570180304",
   "type": "text",
   "x": 60,
   "y": 263,
   "width": 92.4,
   "height": 17.5,
   "angle": 0,
   "strokeColor": "#111111",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1466578429,
   "versionNonce": 1079279735,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "gRPC service",
   "fontSize": 14,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "gRPC service",
   "lineHeight": 1.25,
   "baseline": 14
  },
  {
   "id": "t1315787877",
   "type": "text",
   "x": 60,
   "y": 283,
   "width": 260.15000000000003,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1148584072,
   "versionNonce": 688568080,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "translates an incoming RPC into a port call",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "translates an incoming RPC into a port call",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "r508750853",
   "type": "rectangle",
   "x": 50,
   "y": 420,
   "width": 260,
   "height": 110,
   "angle": 0,
   "strokeColor": "#999999",
   "backgroundColor": "#ffffff",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 3
   },
   "seed": 137550253,
   "versionNonce": 801017912,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false
  },
  {
   "id": "t1992908471",
   "type": "text",
   "x": 60,
   "y": 428,
   "width": 123.20000000000002,
   "height": 17.5,
   "angle": 0,
   "strokeColor": "#111111",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 762337523,
   "versionNonce": 1091892537,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "Message consumer",
   "fontSize": 14,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "Message consumer",
   "lineHeight": 1.25,
   "baseline": 14
  },
  {
   "id": "t323174844",
   "type": "text",
   "x": 60,
   "y": 448,
   "width": 223.85000000000002,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 923839172,
   "versionNonce": 750041381,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "translates an incoming broker message",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "translates an incoming broker message",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "t1806123541",
   "type": "text",
   "x": 60,
   "y": 463,
   "width": 96.80000000000001,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 26208965,
   "versionNonce": 1458304291,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "into a port call",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "into a port call",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "r1563352110",
   "type": "rectangle",
   "x": 1190,
   "y": 160,
   "width": 260,
   "height": 130,
   "angle": 0,
   "strokeColor": "#999999",
   "backgroundColor": "#ffffff",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 3
   },
   "seed": 307795582,
   "versionNonce": 129369393,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false
  },
  {
   "id": "t134669137",
   "type": "text",
   "x": 1200,
   "y": 168,
   "width": 146.3,
   "height": 17.5,
   "angle": 0,
   "strokeColor": "#111111",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1440284846,
   "versionNonce": 629748138,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "Database repository",
   "fontSize": 14,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "Database repository",
   "lineHeight": 1.25,
   "baseline": 14
  },
  {
   "id": "t1222851851",
   "type": "text",
   "x": 1200,
   "y": 188,
   "width": 223.85000000000002,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1504103515,
   "versionNonce": 446116641,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "e.g. ReviewRepository (ch.11 excerpt)",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "e.g. ReviewRepository (ch.11 excerpt)",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "t1851284193",
   "type": "text",
   "x": 1200,
   "y": 203,
   "width": 169.4,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1983092760,
   "versionNonce": 412042109,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "implements the outbound port",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "implements the outbound port",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "r1449253161",
   "type": "rectangle",
   "x": 1190,
   "y": 360,
   "width": 260,
   "height": 130,
   "angle": 0,
   "strokeColor": "#999999",
   "backgroundColor": "#ffffff",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 3
   },
   "seed": 740355570,
   "versionNonce": 654757855,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false
  },
  {
   "id": "t1332470425",
   "type": "text",
   "x": 1200,
   "y": 368,
   "width": 115.50000000000001,
   "height": 17.5,
   "angle": 0,
   "strokeColor": "#111111",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1472239427,
   "versionNonce": 15898922,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "Event publisher",
   "fontSize": 14,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "Event publisher",
   "lineHeight": 1.25,
   "baseline": 14
  },
  {
   "id": "t1254225129",
   "type": "text",
   "x": 1200,
   "y": 388,
   "width": 169.4,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1115977973,
   "versionNonce": 1130231233,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "implements the outbound port",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "implements the outbound port",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "t472377251",
   "type": "text",
   "x": 1200,
   "y": 403,
   "width": 102.85000000000001,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 419762855,
   "versionNonce": 1940181227,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "the core declared",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "the core declared",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "a197943799",
   "type": "arrow",
   "x": 278.3333333333333,
   "y": 200.0,
   "width": 107.27272727272731,
   "height": 60.0,
   "angle": 0,
   "strokeColor": "#2f5f3d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 2
   },
   "seed": 323302667,
   "versionNonce": 1803248213,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "points": [
    [
     0,
     0
    ],
    [
     107.27272727272731,
     60.0
    ]
   ],
   "lastCommittedPoint": null,
   "startBinding": null,
   "endBinding": null,
   "startArrowhead": null,
   "endArrowhead": "arrow"
  },
  {
   "id": "a599738964",
   "type": "arrow",
   "x": 310.0,
   "y": 310.0,
   "width": 70.0,
   "height": 0.0,
   "angle": 0,
   "strokeColor": "#2f5f3d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 2
   },
   "seed": 1129130582,
   "versionNonce": 1840840401,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "points": [
    [
     0,
     0
    ],
    [
     70.0,
     0.0
    ]
   ],
   "lastCommittedPoint": null,
   "startBinding": null,
   "endBinding": null,
   "startArrowhead": null,
   "endArrowhead": "arrow"
  },
  {
   "id": "a569379098",
   "type": "arrow",
   "x": 278.3333333333333,
   "y": 420.0,
   "width": 107.27272727272731,
   "height": 60.0,
   "angle": 0,
   "strokeColor": "#2f5f3d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 2
   },
   "seed": 1469283040,
   "versionNonce": 968016574,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "points": [
    [
     0,
     0
    ],
    [
     107.27272727272731,
     -60.0
    ]
   ],
   "lastCommittedPoint": null,
   "startBinding": null,
   "endBinding": null,
   "startArrowhead": null,
   "endArrowhead": "arrow"
  },
  {
   "id": "a860966080",
   "type": "arrow",
   "x": 570.0,
   "y": 310.0,
   "width": 40.0,
   "height": 0.0,
   "angle": 0,
   "strokeColor": "#2f5f3d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 2
   },
   "seed": 1451452404,
   "versionNonce": 586272703,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "points": [
    [
     0,
     0
    ],
    [
     40.0,
     0.0
    ]
   ],
   "lastCommittedPoint": null,
   "startBinding": null,
   "endBinding": null,
   "startArrowhead": null,
   "endArrowhead": "arrow"
  },
  {
   "id": "t322433832",
   "type": "text",
   "x": 590.0,
   "y": 296.0,
   "width": 302.5,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#2f5f3d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1761599518,
   "versionNonce": 1267428346,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "dependency points inward -- adapters are swappable",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "dependency points inward -- adapters are swappable",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "a1721480446",
   "type": "arrow",
   "x": 1190.0,
   "y": 265.1818181818182,
   "width": 50.0,
   "height": 15.454545454545439,
   "angle": 0,
   "strokeColor": "#2f5f3d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 2
   },
   "seed": 1804354817,
   "versionNonce": 357688886,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "points": [
    [
     0,
     0
    ],
    [
     -50.0,
     15.454545454545439
    ]
   ],
   "lastCommittedPoint": null,
   "startBinding": null,
   "endBinding": null,
   "startArrowhead": null,
   "endArrowhead": "arrow"
  },
  {
   "id": "a538754281",
   "type": "arrow",
   "x": 1190.0,
   "y": 370.6363636363636,
   "width": 50.0,
   "height": 20.909090909090878,
   "angle": 0,
   "strokeColor": "#2f5f3d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 2
   },
   "seed": 570388372,
   "versionNonce": 1046350040,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "points": [
    [
     0,
     0
    ],
    [
     -50.0,
     -20.909090909090878
    ]
   ],
   "lastCommittedPoint": null,
   "startBinding": null,
   "endBinding": null,
   "startArrowhead": null,
   "endArrowhead": "arrow"
  },
  {
   "id": "a1716522870",
   "type": "arrow",
   "x": 950.0,
   "y": 310.0,
   "width": 60.0,
   "height": 0.0,
   "angle": 0,
   "strokeColor": "#2f5f3d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 2,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": {
    "type": 2
   },
   "seed": 222573425,
   "versionNonce": 1885357861,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "points": [
    [
     0,
     0
    ],
    [
     -60.0,
     0.0
    ]
   ],
   "lastCommittedPoint": null,
   "startBinding": null,
   "endBinding": null,
   "startArrowhead": null,
   "endArrowhead": "arrow"
  },
  {
   "id": "t1035498167",
   "type": "text",
   "x": 920.0,
   "y": 296.0,
   "width": 296.45000000000005,
   "height": 13.75,
   "angle": 0,
   "strokeColor": "#2f5f3d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1285958914,
   "versionNonce": 374609169,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "core declares the port; the adapter implements it",
   "fontSize": 11,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "core declares the port; the adapter implements it",
   "lineHeight": 1.25,
   "baseline": 11
  },
  {
   "id": "t1761402950",
   "type": "text",
   "x": 750.0,
   "y": 22,
   "width": 757.35,
   "height": 21.25,
   "angle": 0,
   "strokeColor": "#1d1d1d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 445994335,
   "versionNonce": 1733251283,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "ch.11 -- Hexagonal architecture: ports and adapters, dependencies pointing inward",
   "fontSize": 17,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "ch.11 -- Hexagonal architecture: ports and adapters, dependencies pointing inward",
   "lineHeight": 1.25,
   "baseline": 17
  },
  {
   "id": "t553403616",
   "type": "text",
   "x": 750.0,
   "y": 46,
   "width": 796.95,
   "height": 14.375,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1623282328,
   "versionNonce": 1519387935,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "driving adapters translate a protocol into an inbound-port call; driven adapters implement the outbound port the core declared",
   "fontSize": 11.5,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "driving adapters translate a protocol into an inbound-port call; driven adapters implement the outbound port the core declared",
   "lineHeight": 1.25,
   "baseline": 11.5
  },
  {
   "id": "t166960925",
   "type": "text",
   "x": 750.0,
   "y": 206,
   "width": 508.20000000000005,
   "height": 13.125,
   "angle": 0,
   "strokeColor": "#2f5f3d",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1637914401,
   "versionNonce": 115032103,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "the core never imports a protocol -- a protocol can be swapped without the core noticing",
   "fontSize": 10.5,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "the core never imports a protocol -- a protocol can be swapped without the core noticing",
   "lineHeight": 1.25,
   "baseline": 10.5
  },
  {
   "id": "t10177110",
   "type": "text",
   "x": 40,
   "y": 550,
   "width": 733.4250000000001,
   "height": 13.125,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 14464395,
   "versionNonce": 561138690,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "Caveat (ch.11's own): examples/02-review-service's ReviewRepository is a concrete class, not a declared Port interface the core",
   "fontSize": 10.5,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "Caveat (ch.11's own): examples/02-review-service's ReviewRepository is a concrete class, not a declared Port interface the core",
   "lineHeight": 1.25,
   "baseline": 10.5
  },
  {
   "id": "t1858400329",
   "type": "text",
   "x": 40,
   "y": 564,
   "width": 739.2,
   "height": 13.125,
   "angle": 0,
   "strokeColor": "#555555",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 1745493169,
   "versionNonce": 1987511867,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "programs against -- what made Review cheap to extract was zero outbound edges to other contexts, not a textbook-perfect hexagon.",
   "fontSize": 10.5,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "programs against -- what made Review cheap to extract was zero outbound edges to other contexts, not a textbook-perfect hexagon.",
   "lineHeight": 1.25,
   "baseline": 10.5
  },
  {
   "id": "t984288455",
   "type": "text",
   "x": 40,
   "y": 594,
   "width": 1094.5,
   "height": 12.5,
   "angle": 0,
   "strokeColor": "#777777",
   "backgroundColor": "transparent",
   "fillStyle": "solid",
   "strokeWidth": 1,
   "strokeStyle": "solid",
   "roughness": 1,
   "opacity": 100,
   "groupIds": [],
   "frameId": null,
   "roundness": null,
   "seed": 250640139,
   "versionNonce": 287180881,
   "isDeleted": false,
   "boundElements": [],
   "updated": 1,
   "link": null,
   "locked": false,
   "text": "Sourced from _docs/11-ddd-and-hexagonal.md (\"Hexagonal architecture\", \"Why Review could leave first\") -- ReviewResource/ReviewService/ReviewRepository quoted verbatim from examples/02-review-service.",
   "fontSize": 10,
   "fontFamily": 1,
   "textAlign": "left",
   "verticalAlign": "top",
   "containerId": null,
   "originalText": "Sourced from _docs/11-ddd-and-hexagonal.md (\"Hexagonal architecture\", \"Why Review could leave first\") -- ReviewResource/ReviewService/ReviewRepository quoted verbatim from examples/02-review-service.",
   "lineHeight": 1.25,
   "baseline": 10
  }
 ],
 "appState": {
  "viewBackgroundColor": "#ffffff",
  "gridSize": null
 },
 "files": {}
}