From 95b0c5f1ad883a9908bf8ea5701bedd7bc752585 Mon Sep 17 00:00:00 2001 From: Eden Kirin Date: Thu, 18 Jan 2024 13:17:45 +0100 Subject: [PATCH 1/5] FE tweaks --- frontend/public/index.html | 41 +++++--------------------- frontend/src/components/ProductCard.js | 2 +- 2 files changed, 9 insertions(+), 34 deletions(-) diff --git a/frontend/public/index.html b/frontend/public/index.html index aa069f2..6dfef82 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -1,43 +1,18 @@ - + + - - - - - - React App - - +
- - - + \ No newline at end of file diff --git a/frontend/src/components/ProductCard.js b/frontend/src/components/ProductCard.js index b8d7958..45846c4 100644 --- a/frontend/src/components/ProductCard.js +++ b/frontend/src/components/ProductCard.js @@ -7,7 +7,7 @@ import { CardActionArea } from "@mui/material"; import { PRODUCT_IMAGE_DIR } from "../const"; function ProductCard({ product }) { - const productImg = `${PRODUCT_IMAGE_DIR}/${product.image}`; + const productImg = `${PRODUCT_IMAGE_DIR}${product.image}`; return ( From 3d6e4e6f34b846ef861c3edd7e73328b47047fcf Mon Sep 17 00:00:00 2001 From: Eden Kirin Date: Tue, 23 Jan 2024 20:14:01 +0100 Subject: [PATCH 2/5] Move apps to different ports --- docker-compose.yml | 4 +- frontend/public/manifest.json | 46 +- machines/Makefile | 3 +- machines/app/cfg/config.go | 4 +- media/demo-overview.excalidraw | 1726 ++++++++++++++++---------------- products/Makefile | 3 +- products/app/cfg/config.go | 2 +- proxy/envoy.yaml | 4 +- 8 files changed, 895 insertions(+), 897 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 7afddd5..057549b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,7 +24,7 @@ services: networks: - backend-net environment: - - APPPORT=3000 + - APPPORT=4000 - DBHOST=db - DBPORT=5432 - DBNAME=komponiranje @@ -44,7 +44,7 @@ services: networks: - backend-net environment: - - APPPORT=3000 + - APPPORT=4001 - DBHOST=db - DBPORT=5432 - DBNAME=komponiranje diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json index 080d6c7..7815387 100644 --- a/frontend/public/manifest.json +++ b/frontend/public/manifest.json @@ -1,25 +1,25 @@ { - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" + "short_name": "Komponiranje", + "name": "Komponiranje frontend demo", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" } diff --git a/machines/Makefile b/machines/Makefile index 3765ea6..68fc109 100644 --- a/machines/Makefile +++ b/machines/Makefile @@ -26,8 +26,7 @@ docker-build: clean docker-run: @docker run \ --name $(CONTAINER_NAME) \ - --publish 3000:3000 \ - --env CONTAINER_NAME="Awesome API server" \ + --publish 4000:4000 \ --env DBPORT=55432 \ --detach \ $(IMAGE_NAME) diff --git a/machines/app/cfg/config.go b/machines/app/cfg/config.go index a64c239..22232a3 100644 --- a/machines/app/cfg/config.go +++ b/machines/app/cfg/config.go @@ -6,13 +6,13 @@ import ( type configStruct struct { AppHost string `default:"0.0.0.0"` - AppPort int `default:"3000"` + AppPort int `default:"4000"` DbHost string `default:"localhost"` DbPort int `default:"55432"` DbName string `default:"komponiranje"` DbUser string `default:"pero"` DbPassword string `default:"pero.000"` - ProductsAppUrl string `default:"http://localhost:3001"` + ProductsAppUrl string `default:"http://localhost:4001"` } const ENV_PREFIX = "" diff --git a/media/demo-overview.excalidraw b/media/demo-overview.excalidraw index dfb2c4f..d3bba1d 100644 --- a/media/demo-overview.excalidraw +++ b/media/demo-overview.excalidraw @@ -1105,8 +1105,8 @@ }, { "type": "text", - "version": 320, - "versionNonce": 365561188, + "version": 324, + "versionNonce": 2028613100, "isDeleted": false, "id": "RExyWP6iEbwZEwWGJ7ynn", "fillStyle": "cross-hatch", @@ -1128,7 +1128,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441161952, + "updated": 1706036591642, "link": null, "locked": false, "fontSize": 20, @@ -1303,8 +1303,8 @@ }, { "type": "text", - "version": 362, - "versionNonce": 1202724708, + "version": 366, + "versionNonce": 76084948, "isDeleted": false, "id": "FCRGzjxk1UBzWmGqDlFB5", "fillStyle": "cross-hatch", @@ -1326,7 +1326,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441154250, + "updated": 1706036591642, "link": null, "locked": false, "fontSize": 20, @@ -1411,7 +1411,7 @@ "containerId": "4H8oN-ypeQCBWDzOVtVQW", "originalText": "Products Container", "lineHeight": 1.25, - "baseline": 23 + "baseline": 26 }, { "type": "rectangle", @@ -1505,12 +1505,12 @@ "containerId": "sgmwBqZMfXCJB7d57hCMQ", "originalText": "products app 2", "lineHeight": 1.25, - "baseline": 23 + "baseline": 26 }, { "type": "text", - "version": 419, - "versionNonce": 1882419676, + "version": 423, + "versionNonce": 499486828, "isDeleted": false, "id": "u1OuuXnvKcO5rBbQ9og-m", "fillStyle": "cross-hatch", @@ -1532,7 +1532,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441154250, + "updated": 1706036591643, "link": null, "locked": false, "fontSize": 20, @@ -1547,8 +1547,8 @@ }, { "type": "text", - "version": 108, - "versionNonce": 1218507612, + "version": 112, + "versionNonce": 929758292, "isDeleted": false, "id": "puauPPmatsxiYK7nuxUmV", "fillStyle": "cross-hatch", @@ -1568,7 +1568,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441199515, + "updated": 1706036591643, "link": null, "locked": false, "fontSize": 20, @@ -1583,8 +1583,8 @@ }, { "type": "text", - "version": 214, - "versionNonce": 553347812, + "version": 218, + "versionNonce": 101753580, "isDeleted": false, "id": "ZR8aurk5K826Erslgmf7s", "fillStyle": "cross-hatch", @@ -1604,7 +1604,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441149449, + "updated": 1706036591643, "link": null, "locked": false, "fontSize": 20, @@ -1667,8 +1667,8 @@ }, { "type": "text", - "version": 49, - "versionNonce": 697640036, + "version": 53, + "versionNonce": 451957204, "isDeleted": false, "id": "nN4zD0iptScrivQUob483", "fillStyle": "cross-hatch", @@ -1688,7 +1688,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441191412, + "updated": 1706036591643, "link": null, "locked": false, "fontSize": 20, @@ -1703,8 +1703,8 @@ }, { "type": "text", - "version": 40, - "versionNonce": 1295725532, + "version": 44, + "versionNonce": 139814252, "isDeleted": false, "id": "EDr7aM0sLSQAwc4dMr2bn", "fillStyle": "cross-hatch", @@ -1724,7 +1724,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441170683, + "updated": 1706036591644, "link": null, "locked": false, "fontSize": 20, @@ -1739,8 +1739,8 @@ }, { "type": "text", - "version": 146, - "versionNonce": 1250391396, + "version": 152, + "versionNonce": 620979028, "isDeleted": false, "id": "mexveX3hsuycJnV_xFlwn", "fillStyle": "cross-hatch", @@ -1760,23 +1760,23 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441182149, + "updated": 1706036641928, "link": null, "locked": false, "fontSize": 20, "fontFamily": 3, - "text": "machines-app:3000", + "text": "machines-app:4000", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "machines-app:3000", + "originalText": "machines-app:4000", "lineHeight": 1.2, "baseline": 19 }, { "type": "text", - "version": 318, - "versionNonce": 2047133788, + "version": 327, + "versionNonce": 504143596, "isDeleted": false, "id": "nWQ6dNawezlmi4uYfgWBy", "fillStyle": "cross-hatch", @@ -1786,7 +1786,7 @@ "opacity": 100, "angle": 0, "x": 4316.116079608326, - "y": -10700.817169101681, + "y": -10701.54448621816, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", "width": 222.65625, @@ -1796,23 +1796,23 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441158184, + "updated": 1706036661239, "link": null, "locked": false, "fontSize": 20, "fontFamily": 3, - "text": "products-app-1:3000", + "text": "products-app-1:4001", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "products-app-1:3000", + "originalText": "products-app-1:4001", "lineHeight": 1.2, "baseline": 19 }, { "type": "text", - "version": 337, - "versionNonce": 1952066020, + "version": 345, + "versionNonce": 1571720148, "isDeleted": false, "id": "GWChLBYhFI9kdropPUQeG", "fillStyle": "cross-hatch", @@ -1832,16 +1832,16 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441154250, + "updated": 1706036665127, "link": null, "locked": false, "fontSize": 20, "fontFamily": 3, - "text": "products-app-2:3000", + "text": "products-app-2:4001", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "products-app-2:3000", + "originalText": "products-app-2:4001", "lineHeight": 1.2, "baseline": 19 }, @@ -1899,8 +1899,8 @@ }, { "type": "text", - "version": 79, - "versionNonce": 677247068, + "version": 83, + "versionNonce": 1991506540, "isDeleted": false, "id": "MRa2-4EMmdkvVd8S4eA5x", "fillStyle": "cross-hatch", @@ -1920,7 +1920,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705440260386, + "updated": 1706036591645, "link": null, "locked": false, "fontSize": 20, @@ -1935,8 +1935,8 @@ }, { "type": "text", - "version": 53, - "versionNonce": 249645924, + "version": 57, + "versionNonce": 2054173268, "isDeleted": false, "id": "9D7Gw2OyaxH8PvxvmUAw1", "fillStyle": "cross-hatch", @@ -1961,7 +1961,7 @@ "type": "arrow" } ], - "updated": 1705440260386, + "updated": 1706036591645, "link": null, "locked": false, "fontSize": 20, @@ -2027,105 +2027,110 @@ ] }, { - "id": "r_c7nHWR8rBuftXFM1gBg", "type": "text", - "x": 3029.532031419297, - "y": -11431.188956566499, - "width": 464.0625, - "height": 43.199999999999996, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "dotted", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1823765092, "version": 100, "versionNonce": 1710628956, "isDeleted": false, - "boundElements": null, - "updated": 1705441184799, - "link": null, - "locked": false, - "text": "Container architecture", - "fontSize": 36, - "fontFamily": 3, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 34, - "containerId": null, - "originalText": "Container architecture", - "lineHeight": 1.2 - }, - { - "id": "ZVpAJ96jxDbQt2t491a4d", - "type": "text", - "x": 6603.211082577714, - "y": -11386.63432897264, - "width": 210.9375, - "height": 43.199999999999996, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", + "id": "r_c7nHWR8rBuftXFM1gBg", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "dotted", "roughness": 2, "opacity": 100, + "angle": 0, + "x": 3029.532031419297, + "y": -11431.188956566499, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 464.0625, + "height": 43.199999999999996, + "seed": 1823765092, "groupIds": [], "frameId": null, "roundness": null, - "seed": 967337572, + "boundElements": [], + "updated": 1705441184799, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 3, + "text": "Container architecture", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Container architecture", + "lineHeight": 1.2, + "baseline": 34 + }, + { + "type": "text", "version": 118, "versionNonce": 460374244, "isDeleted": false, - "boundElements": null, + "id": "ZVpAJ96jxDbQt2t491a4d", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 6603.211082577714, + "y": -11386.63432897264, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 210.9375, + "height": 43.199999999999996, + "seed": 967337572, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], "updated": 1705441420840, "link": null, "locked": false, - "text": "Networking", "fontSize": 36, "fontFamily": 3, + "text": "Networking", "textAlign": "left", "verticalAlign": "top", - "baseline": 34, "containerId": null, "originalText": "Networking", - "lineHeight": 1.2 + "lineHeight": 1.2, + "baseline": 34 }, { - "id": "gj9Q1sVRJBGQzoszNuczP", "type": "line", - "x": 6735.546682598612, - "y": -10487.071737264107, - "width": 1660.3640878767465, - "height": 0, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "seed": 2022623204, "version": 511, "versionNonce": 832200164, "isDeleted": false, - "boundElements": null, + "id": "gj9Q1sVRJBGQzoszNuczP", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 6735.546682598612, + "y": -10487.071737264107, + "strokeColor": "#2f9e44", + "backgroundColor": "#a5d8ff", + "width": 1660.3640878767465, + "height": 0, + "seed": 2022623204, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], "updated": 1705441081536, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2135,41 +2140,41 @@ 1660.3640878767465, 0 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "KchvvXpab95B0FYbzrqNF", "type": "line", - "x": 6745.546682598612, - "y": -10395.7257326578, - "width": 1660.3640878767465, - "height": 0, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "seed": 1925033700, "version": 554, "versionNonce": 2051971548, "isDeleted": false, - "boundElements": null, + "id": "KchvvXpab95B0FYbzrqNF", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 6745.546682598612, + "y": -10395.7257326578, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 1660.3640878767465, + "height": 0, + "seed": 1925033700, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], "updated": 1705441074037, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2179,41 +2184,41 @@ 1660.3640878767465, 0 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "85VXDSSe-kRyP1rXzfvQd", "type": "line", - "x": 7091.237341611951, - "y": -10581.071531753176, - "width": 1308.7660277331643, - "height": 0, - "angle": 0, - "strokeColor": "#9c36b5", - "backgroundColor": "#a5d8ff", + "version": 795, + "versionNonce": 1818301796, + "isDeleted": false, + "id": "85VXDSSe-kRyP1rXzfvQd", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 2, "opacity": 100, + "angle": 0, + "x": 7091.237341611951, + "y": -10581.071531753176, + "strokeColor": "#9c36b5", + "backgroundColor": "#a5d8ff", + "width": 1308.7660277331643, + "height": 0, + "seed": 1703919324, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 1703919324, - "version": 795, - "versionNonce": 1818301796, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1705441105755, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2223,41 +2228,41 @@ 1308.7660277331643, 0 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "s3wp2TRECBQ2eUXa3zz8L", "type": "line", - "x": 7112.3354612364255, - "y": -10967.229466930909, - "width": 0, - "height": 383.18222031518235, - "angle": 0, - "strokeColor": "#9c36b5", - "backgroundColor": "#a5d8ff", + "version": 253, + "versionNonce": 1441817308, + "isDeleted": false, + "id": "s3wp2TRECBQ2eUXa3zz8L", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 7112.3354612364255, + "y": -10967.229466930909, + "strokeColor": "#9c36b5", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 383.18222031518235, + "seed": 1123354980, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 1123354980, - "version": 253, - "versionNonce": 1441817308, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1705441105755, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2267,41 +2272,41 @@ 0, 383.18222031518235 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "B-pdRIIkwxFAQsAiOWpX1", "type": "line", - "x": 6838.2784631836, - "y": -10962.948112593833, - "width": 0, - "height": 470.9502292069137, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#a5d8ff", + "version": 464, + "versionNonce": 304996956, + "isDeleted": false, + "id": "B-pdRIIkwxFAQsAiOWpX1", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 6838.2784631836, + "y": -10962.948112593833, + "strokeColor": "#2f9e44", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 470.9502292069137, + "seed": 1356495068, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 1356495068, - "version": 464, - "versionNonce": 304996956, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1705441081536, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2311,41 +2316,41 @@ 0, 470.9502292069137 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "1El7R8dNnDXTi2SErVJmw", "type": "line", - "x": 7047.59092248943, - "y": -10966.515916948125, - "width": 0, - "height": 475.94513352677313, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#a5d8ff", + "version": 454, + "versionNonce": 1507656036, + "isDeleted": false, + "id": "1El7R8dNnDXTi2SErVJmw", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 7047.59092248943, + "y": -10966.515916948125, + "strokeColor": "#2f9e44", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 475.94513352677313, + "seed": 967795676, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 967795676, - "version": 454, - "versionNonce": 1507656036, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1705441081536, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2355,85 +2360,41 @@ 0, 475.94513352677313 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "sSPO6to-V0zFaYEZEOk2r", "type": "line", - "x": 6991.22973972345, - "y": -10967.932879993785, - "width": 0, - "height": 570.8385053264337, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "seed": 1475481436, "version": 585, "versionNonce": 1274057700, "isDeleted": false, - "boundElements": null, - "updated": 1705441069570, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 570.8385053264337 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null - }, - { - "id": "xOsQZGw6-nv6DQiBEtiky", - "type": "line", - "x": 6768.948457184312, - "y": -10968.413516277185, - "width": 0, - "height": 570.8385053264337, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#a5d8ff", + "id": "sSPO6to-V0zFaYEZEOk2r", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 6991.22973972345, + "y": -10967.932879993785, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 570.8385053264337, + "seed": 1475481436, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 152029020, - "version": 674, - "versionNonce": 1708398436, - "isDeleted": false, - "boundElements": null, - "updated": 1705441286670, + "boundElements": [], + "updated": 1705441069570, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2443,37 +2404,76 @@ 0, 570.8385053264337 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "7Kh9H0drGycCW4BkV0dpo", - "type": "rectangle", - "x": 6692.5687089555095, - "y": -11229.217309379159, - "width": 211.4195084561806, - "height": 258.508161024889, + "type": "line", + "version": 674, + "versionNonce": 1708398436, + "isDeleted": false, + "id": "xOsQZGw6-nv6DQiBEtiky", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, "angle": 0, - "strokeColor": "#1971c2", + "x": 6768.948457184312, + "y": -10968.413516277185, + "strokeColor": "#e03131", "backgroundColor": "#a5d8ff", + "width": 0, + "height": 570.8385053264337, + "seed": 152029020, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1705441286670, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 570.8385053264337 + ] + ] + }, + { + "type": "rectangle", + "version": 145, + "versionNonce": 1548033756, + "isDeleted": false, + "id": "7Kh9H0drGycCW4BkV0dpo", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 2, "opacity": 100, + "angle": 0, + "x": 6692.5687089555095, + "y": -11229.217309379159, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 750388188, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 750388188, - "version": 145, - "versionNonce": 1548033756, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -2485,65 +2485,65 @@ "locked": false }, { - "id": "0SpHmipBS3K7LSJT47xFN", "type": "text", - "x": 6723.164434252935, - "y": -11144.963228866714, - "width": 150.22805786132812, - "height": 90, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 502564060, "version": 170, "versionNonce": 2110419932, "isDeleted": false, - "boundElements": null, - "updated": 1705441473993, - "link": null, - "locked": false, - "text": "Frontend\n/ nginx", - "fontSize": 36, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 76, - "containerId": "7Kh9H0drGycCW4BkV0dpo", - "originalText": "Frontend\n/ nginx", - "lineHeight": 1.25 - }, - { - "id": "KdfHGbZuBhHKzMqDVXpPX", - "type": "rectangle", - "x": 6942.52720199149, - "y": -11229.217309379159, - "width": 211.4195084561806, - "height": 258.508161024889, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", + "id": "0SpHmipBS3K7LSJT47xFN", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 2, "opacity": 100, + "angle": 0, + "x": 6723.164434252935, + "y": -11144.963228866714, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 150.22805786132812, + "height": 90, + "seed": 502564060, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1705441473993, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Frontend\n/ nginx", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "7Kh9H0drGycCW4BkV0dpo", + "originalText": "Frontend\n/ nginx", + "lineHeight": 1.25, + "baseline": 79 + }, + { + "type": "rectangle", + "version": 215, + "versionNonce": 1819599708, + "isDeleted": false, + "id": "KdfHGbZuBhHKzMqDVXpPX", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 6942.52720199149, + "y": -11229.217309379159, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 375135588, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 375135588, - "version": 215, - "versionNonce": 1819599708, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -2555,65 +2555,65 @@ "locked": false }, { - "id": "9ghDrRtbL23NqtS0gJvEM", "type": "text", - "x": 7000.068941693213, - "y": -11122.463228866714, - "width": 96.33602905273438, - "height": 45, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 587848412, "version": 221, "versionNonce": 1816301668, "isDeleted": false, - "boundElements": null, - "updated": 1705441119897, - "link": null, - "locked": false, - "text": "Proxy", - "fontSize": 36, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 31, - "containerId": "KdfHGbZuBhHKzMqDVXpPX", - "originalText": "Proxy", - "lineHeight": 1.25 - }, - { - "id": "BiJveNc-a28JUWofV5Exi", - "type": "rectangle", - "x": 7192.485695027471, - "y": -11229.217309379159, - "width": 211.4195084561806, - "height": 258.508161024889, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", + "id": "9ghDrRtbL23NqtS0gJvEM", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 2, "opacity": 100, + "angle": 0, + "x": 7000.068941693213, + "y": -11122.463228866714, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 96.33602905273438, + "height": 45, + "seed": 587848412, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1705441119897, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Proxy", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "KdfHGbZuBhHKzMqDVXpPX", + "originalText": "Proxy", + "lineHeight": 1.25, + "baseline": 34 + }, + { + "type": "rectangle", + "version": 264, + "versionNonce": 1530402780, + "isDeleted": false, + "id": "BiJveNc-a28JUWofV5Exi", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7192.485695027471, + "y": -11229.217309379159, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 2029075556, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 2029075556, - "version": 264, - "versionNonce": 1530402780, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -2625,65 +2625,65 @@ "locked": false }, { - "id": "t5mb7pIFeZ_YfGWq24617", "type": "text", - "x": 7222.505423925971, - "y": -11144.963228866714, - "width": 151.3800506591797, - "height": 90, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 924462044, "version": 282, "versionNonce": 635102180, "isDeleted": false, - "boundElements": null, - "updated": 1705441119897, - "link": null, - "locked": false, - "text": "Machines\napp", - "fontSize": 36, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 76, - "containerId": "BiJveNc-a28JUWofV5Exi", - "originalText": "Machines\napp", - "lineHeight": 1.25 - }, - { - "id": "MkquHBUdX8GXhkl6wO46V", - "type": "rectangle", - "x": 7442.444188063451, - "y": -11229.217309379159, - "width": 211.4195084561806, - "height": 258.508161024889, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", + "id": "t5mb7pIFeZ_YfGWq24617", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 2, "opacity": 100, + "angle": 0, + "x": 7222.505423925971, + "y": -11144.963228866714, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 151.3800506591797, + "height": 90, + "seed": 924462044, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1705441119897, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Machines\napp", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "BiJveNc-a28JUWofV5Exi", + "originalText": "Machines\napp", + "lineHeight": 1.25, + "baseline": 79 + }, + { + "type": "rectangle", + "version": 302, + "versionNonce": 1688255580, + "isDeleted": false, + "id": "MkquHBUdX8GXhkl6wO46V", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7442.444188063451, + "y": -11229.217309379159, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 1085136100, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1085136100, - "version": 302, - "versionNonce": 1688255580, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -2695,65 +2695,65 @@ "locked": false }, { - "id": "2IzOZJULaydksKEgDFRMj", "type": "text", - "x": 7469.097912018104, - "y": -11144.963228866714, - "width": 158.112060546875, - "height": 90, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1331024732, "version": 332, "versionNonce": 1075627876, "isDeleted": false, - "boundElements": null, - "updated": 1705441119897, - "link": null, - "locked": false, - "text": "Products\napp 1", - "fontSize": 36, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 76, - "containerId": "MkquHBUdX8GXhkl6wO46V", - "originalText": "Products\napp 1", - "lineHeight": 1.25 - }, - { - "id": "q2uKvHqnDuua6Q75zhnum", - "type": "rectangle", - "x": 7692.402681099432, - "y": -11229.217309379159, - "width": 211.4195084561806, - "height": 258.508161024889, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", + "id": "2IzOZJULaydksKEgDFRMj", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 2, "opacity": 100, + "angle": 0, + "x": 7469.097912018104, + "y": -11144.963228866714, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 158.112060546875, + "height": 90, + "seed": 1331024732, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1705441119897, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Products\napp 1", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "MkquHBUdX8GXhkl6wO46V", + "originalText": "Products\napp 1", + "lineHeight": 1.25, + "baseline": 79 + }, + { + "type": "rectangle", + "version": 316, + "versionNonce": 1921044700, + "isDeleted": false, + "id": "q2uKvHqnDuua6Q75zhnum", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7692.402681099432, + "y": -11229.217309379159, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 824728668, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 824728668, - "version": 316, - "versionNonce": 1921044700, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -2765,65 +2765,65 @@ "locked": false }, { - "id": "3z9F38R_dkHV9JSg1hqeL", "type": "text", - "x": 7719.056405054084, - "y": -11144.963228866714, - "width": 158.112060546875, - "height": 90, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 425666404, "version": 347, "versionNonce": 257309412, "isDeleted": false, - "boundElements": null, - "updated": 1705441119897, - "link": null, - "locked": false, - "text": "Products\napp 2", - "fontSize": 36, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "baseline": 76, - "containerId": "q2uKvHqnDuua6Q75zhnum", - "originalText": "Products\napp 2", - "lineHeight": 1.25 - }, - { - "id": "rsGuERvEqYoZWlibKQh87", - "type": "rectangle", - "x": 7941.679039630749, - "y": -11229.217309379159, - "width": 211.4195084561806, - "height": 258.508161024889, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", + "id": "3z9F38R_dkHV9JSg1hqeL", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 2, "opacity": 100, + "angle": 0, + "x": 7719.056405054084, + "y": -11144.963228866714, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 158.112060546875, + "height": 90, + "seed": 425666404, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1705441119897, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Products\napp 2", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "q2uKvHqnDuua6Q75zhnum", + "originalText": "Products\napp 2", + "lineHeight": 1.25, + "baseline": 79 + }, + { + "type": "rectangle", + "version": 378, + "versionNonce": 1684690268, + "isDeleted": false, + "id": "rsGuERvEqYoZWlibKQh87", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7941.679039630749, + "y": -11229.217309379159, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 239653340, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 239653340, - "version": 378, - "versionNonce": 1684690268, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -2835,69 +2835,74 @@ "locked": false }, { - "id": "s3x5rJeP_wSwipyNmFsQj", "type": "text", - "x": 7958.396758946729, - "y": -11122.463228866714, - "width": 177.98406982421875, - "height": 45, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", + "version": 417, + "versionNonce": 773144164, + "isDeleted": false, + "id": "s3x5rJeP_wSwipyNmFsQj", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 2, "opacity": 100, + "angle": 0, + "x": 7958.396758946729, + "y": -11122.463228866714, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 177.98406982421875, + "height": 45, + "seed": 1959447012, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1959447012, - "version": 417, - "versionNonce": 773144164, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1705441119897, "link": null, "locked": false, - "text": "Database", "fontSize": 36, "fontFamily": 1, + "text": "Database", "textAlign": "center", "verticalAlign": "middle", - "baseline": 31, "containerId": "rsGuERvEqYoZWlibKQh87", "originalText": "Database", - "lineHeight": 1.25 + "lineHeight": 1.25, + "baseline": 34 }, { - "id": "kYfNetUfiZbhn7peOqnBp", "type": "line", - "x": 7293.557142782072, - "y": -10965.216083419364, - "width": 0, - "height": 380.45528682085387, - "angle": 0, - "strokeColor": "#9c36b5", - "backgroundColor": "#a5d8ff", + "version": 220, + "versionNonce": 165726436, + "isDeleted": false, + "id": "kYfNetUfiZbhn7peOqnBp", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 7293.557142782072, + "y": -10965.216083419364, + "strokeColor": "#9c36b5", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 380.45528682085387, + "seed": 2139347420, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 2139347420, - "version": 220, - "versionNonce": 165726436, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1705441105755, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2907,41 +2912,41 @@ 0, 380.45528682085387 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "9-eSG2UppmWdChzApkms7", "type": "line", - "x": 7545.289081451066, - "y": -10965.216083419364, - "width": 0, - "height": 109.3021014542901, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", + "version": 365, + "versionNonce": 787891804, + "isDeleted": false, + "id": "9-eSG2UppmWdChzApkms7", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 7545.289081451066, + "y": -10965.216083419364, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 109.3021014542901, + "seed": 469163100, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 469163100, - "version": 365, - "versionNonce": 787891804, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1705441320360, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2951,41 +2956,41 @@ 0, 109.3021014542901 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "9XuJ8V0lGHetqA_LPxEPy", "type": "line", - "x": 7796.339093773622, - "y": -10965.216083419364, - "width": 0, - "height": 107.87500148872277, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", + "version": 374, + "versionNonce": 389864804, + "isDeleted": false, + "id": "9XuJ8V0lGHetqA_LPxEPy", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 7796.339093773622, + "y": -10965.216083419364, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 107.87500148872277, + "seed": 1710240860, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 1710240860, - "version": 374, - "versionNonce": 389864804, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1705441320360, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -2995,41 +3000,41 @@ 0, 107.87500148872277 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "3GWhaNvA6Hdc5wOSnmcHC", "type": "line", - "x": 7664.463859448984, - "y": -10732.467929530423, - "width": 0, - "height": 150.5615506245431, - "angle": 0, - "strokeColor": "#9c36b5", - "backgroundColor": "#a5d8ff", + "version": 520, + "versionNonce": 404203356, + "isDeleted": false, + "id": "3GWhaNvA6Hdc5wOSnmcHC", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 7664.463859448984, + "y": -10732.467929530423, + "strokeColor": "#9c36b5", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 150.5615506245431, + "seed": 1751004004, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 1751004004, - "version": 520, - "versionNonce": 404203356, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1705441105755, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -3039,41 +3044,41 @@ 0, 150.5615506245431 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "FFJPCFqtq-oKA80rRiF0f", "type": "line", - "x": 8048.752854709942, - "y": -10965.216083419364, - "width": 0, - "height": 381.8823867864212, - "angle": 0, - "strokeColor": "#9c36b5", - "backgroundColor": "#a5d8ff", + "version": 337, + "versionNonce": 1411255396, + "isDeleted": false, + "id": "FFJPCFqtq-oKA80rRiF0f", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 8048.752854709942, + "y": -10965.216083419364, + "strokeColor": "#9c36b5", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 381.8823867864212, + "seed": 1286033884, "groupIds": [], "frameId": null, "roundness": { "type": 2 }, - "seed": 1286033884, - "version": 337, - "versionNonce": 1411255396, - "isDeleted": false, - "boundElements": null, + "boundElements": [], "updated": 1705441105755, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -3083,109 +3088,104 @@ 0, 381.8823867864212 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "730LbSCguZiMfk6hgnXMb", "type": "text", - "x": 8145.880221636061, - "y": -10542.462473392661, - "width": 196.875, - "height": 33.6, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1484973404, "version": 297, "versionNonce": 58377948, "isDeleted": false, - "boundElements": null, - "updated": 1705441110352, - "link": null, - "locked": false, - "text": "frontend-net", - "fontSize": 28, - "fontFamily": 3, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 26, - "containerId": null, - "originalText": "frontend-net", - "lineHeight": 1.2 - }, - { - "id": "plaDlYXRWzCcelw8JS2NR", - "type": "text", - "x": 8145.880221636061, - "y": -10637.826587276302, - "width": 180.46875, - "height": 33.6, - "angle": 0, - "strokeColor": "#9c36b5", - "backgroundColor": "#a5d8ff", + "id": "730LbSCguZiMfk6hgnXMb", "fillStyle": "cross-hatch", "strokeWidth": 4, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 8145.880221636061, + "y": -10542.462473392661, + "strokeColor": "#2f9e44", + "backgroundColor": "#a5d8ff", + "width": 196.875, + "height": 33.6, + "seed": 1484973404, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1473110748, + "boundElements": [], + "updated": 1705441110352, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": "frontend-net", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "frontend-net", + "lineHeight": 1.2, + "baseline": 26 + }, + { + "type": "text", "version": 383, "versionNonce": 232938460, "isDeleted": false, - "boundElements": null, + "id": "plaDlYXRWzCcelw8JS2NR", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 8145.880221636061, + "y": -10637.826587276302, + "strokeColor": "#9c36b5", + "backgroundColor": "#a5d8ff", + "width": 180.46875, + "height": 33.6, + "seed": 1473110748, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], "updated": 1705441105755, "link": null, "locked": false, - "text": "backend-net", "fontSize": 28, "fontFamily": 3, + "text": "backend-net", "textAlign": "left", "verticalAlign": "top", - "baseline": 26, "containerId": null, "originalText": "backend-net", - "lineHeight": 1.2 + "lineHeight": 1.2, + "baseline": 26 }, { - "id": "2ogTwHyVd9PQ7GHLkTBof", "type": "rectangle", - "x": 7460.952620064934, - "y": -10856.257815328992, - "width": 406.5272898717867, - "height": 121.41250017362836, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "#a5d8ff", + "version": 110, + "versionNonce": 837228132, + "isDeleted": false, + "id": "2ogTwHyVd9PQ7GHLkTBof", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 7460.952620064934, + "y": -10856.257815328992, + "strokeColor": "#f08c00", + "backgroundColor": "#a5d8ff", + "width": 406.5272898717867, + "height": 121.41250017362836, + "seed": 1289667932, "groupIds": [], "frameId": null, "roundness": { "type": 3 }, - "seed": 1289667932, - "version": 110, - "versionNonce": 837228132, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -3197,292 +3197,292 @@ "locked": false }, { - "id": "4_umjt84YhrUDZLKlYYa6", "type": "text", - "x": 7545.344225205906, - "y": -10840.551565242178, - "width": 237.74407958984375, - "height": 90, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1253760988, "version": 91, "versionNonce": 344388060, "isDeleted": false, - "boundElements": null, + "id": "4_umjt84YhrUDZLKlYYa6", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7545.344225205906, + "y": -10840.551565242178, + "strokeColor": "#f08c00", + "backgroundColor": "#a5d8ff", + "width": 237.74407958984375, + "height": 90, + "seed": 1253760988, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], "updated": 1705441115252, "link": null, "locked": false, - "text": "Docker\nload balancer", "fontSize": 36, "fontFamily": 1, + "text": "Docker\nload balancer", "textAlign": "center", "verticalAlign": "middle", - "baseline": 76, "containerId": "2ogTwHyVd9PQ7GHLkTBof", "originalText": "Docker\nload balancer", - "lineHeight": 1.25 + "lineHeight": 1.25, + "baseline": 79 }, { - "id": "TQvSfcnA3nV_jQz4WK0yV", "type": "text", + "version": 194, + "versionNonce": 1403565420, + "isDeleted": false, + "id": "TQvSfcnA3nV_jQz4WK0yV", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, "x": 7308.873461664136, "y": -10944.092218889733, - "width": 131.25, - "height": 67.2, - "angle": 0, "strokeColor": "#9c36b5", "backgroundColor": "#a5d8ff", + "width": 131.25, + "height": 67.2, + "seed": 729029980, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706036673699, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": "machines\n:4000", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "machines\n:4000", + "lineHeight": 1.2, + "baseline": 60 + }, + { + "type": "text", + "version": 305, + "versionNonce": 548713580, + "isDeleted": false, + "id": "GhWBD8m4qB9vNzbezVu43", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 729029980, - "version": 188, - "versionNonce": 270957412, - "isDeleted": false, - "boundElements": null, - "updated": 1705441378547, - "link": null, - "locked": false, - "text": "machines\n:3000", - "fontSize": 28, - "fontFamily": 3, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 60, - "containerId": null, - "originalText": "machines\n:3000", - "lineHeight": 1.2 - }, - { - "id": "GhWBD8m4qB9vNzbezVu43", - "type": "text", + "angle": 0, "x": 7677.337678003597, "y": -10705.090811521612, + "strokeColor": "#9c36b5", + "backgroundColor": "#a5d8ff", "width": 131.25, "height": 67.2, - "angle": 0, - "strokeColor": "#9c36b5", - "backgroundColor": "#a5d8ff", + "seed": 206822628, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706036677866, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": "products\n:4001", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "products\n:4001", + "lineHeight": 1.2, + "baseline": 60 + }, + { + "type": "text", + "version": 392, + "versionNonce": 1412517740, + "isDeleted": false, + "id": "QLb8RhDef96RQoEssu6gv", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 206822628, - "version": 297, - "versionNonce": 321509220, - "isDeleted": false, - "boundElements": null, - "updated": 1705441384022, - "link": null, - "locked": false, - "text": "products\n:3000", - "fontSize": 28, - "fontFamily": 3, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 60, - "containerId": null, - "originalText": "products\n:3000", - "lineHeight": 1.2 - }, - { - "id": "QLb8RhDef96RQoEssu6gv", - "type": "text", + "angle": 0, "x": 8065.894304717478, "y": -10947.883170625757, + "strokeColor": "#9c36b5", + "backgroundColor": "#a5d8ff", "width": 82.03125, "height": 67.2, - "angle": 0, - "strokeColor": "#9c36b5", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, + "seed": 2002053596, "groupIds": [], "frameId": null, "roundness": null, - "seed": 2002053596, - "version": 388, - "versionNonce": 922738908, - "isDeleted": false, - "boundElements": null, - "updated": 1705441403224, + "boundElements": [], + "updated": 1706036591646, "link": null, "locked": false, - "text": "db\n:5432", "fontSize": 28, "fontFamily": 3, + "text": "db\n:5432", "textAlign": "left", "verticalAlign": "top", - "baseline": 60, "containerId": null, "originalText": "db\n:5432", - "lineHeight": 1.2 + "lineHeight": 1.2, + "baseline": 60 }, { - "id": "AG0YCVYw9SFmKCPVJzRU2", "type": "text", + "version": 267, + "versionNonce": 1038003540, + "isDeleted": false, + "id": "AG0YCVYw9SFmKCPVJzRU2", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, "x": 7126.6168861146925, "y": -10940.005768872516, - "width": 98.4375, - "height": 67.2, - "angle": 0, "strokeColor": "#9c36b5", "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, + "width": 98.4375, + "height": 67.2, + "seed": 388964580, "groupIds": [], "frameId": null, "roundness": null, - "seed": 388964580, - "version": 263, - "versionNonce": 1716491484, - "isDeleted": false, - "boundElements": null, - "updated": 1705441362035, + "boundElements": [], + "updated": 1706036591646, "link": null, "locked": false, - "text": "proxy\n:10000", "fontSize": 28, "fontFamily": 3, + "text": "proxy\n:10000", "textAlign": "left", "verticalAlign": "top", - "baseline": 60, "containerId": null, "originalText": "proxy\n:10000", - "lineHeight": 1.2 + "lineHeight": 1.2, + "baseline": 60 }, { - "id": "whqwF4_ZRiAywlHdKXhU0", "type": "text", - "x": 8145.880221636061, - "y": -10444.384448896912, - "width": 196.875, - "height": 33.6, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 782532580, "version": 41, "versionNonce": 1307757788, "isDeleted": false, - "boundElements": null, + "id": "whqwF4_ZRiAywlHdKXhU0", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 8145.880221636061, + "y": -10444.384448896912, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 196.875, + "height": 33.6, + "seed": 782532580, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], "updated": 1705441330343, "link": null, "locked": false, - "text": "host network", "fontSize": 28, "fontFamily": 3, + "text": "host network", "textAlign": "left", "verticalAlign": "top", - "baseline": 26, "containerId": null, "originalText": "host network", - "lineHeight": 1.2 + "lineHeight": 1.2, + "baseline": 26 }, { - "id": "Srw7ueHf48m5xHOQFuThQ", "type": "text", - "x": 6876.8351663453695, - "y": -10931.619280941908, - "width": 98.4375, - "height": 33.6, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#a5d8ff", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 260990948, "version": 52, "versionNonce": 467214692, "isDeleted": false, - "boundElements": null, - "updated": 1705441245931, - "link": null, - "locked": false, - "text": ":10000", - "fontSize": 28, - "fontFamily": 3, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 26, - "containerId": null, - "originalText": ":10000", - "lineHeight": 1.2 - }, - { - "id": "nXPshb-tThGBj3OkGgWS9", - "type": "text", - "x": 6667.7574528677405, - "y": -10931.619280941908, - "width": 82.03125, - "height": 33.6, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#a5d8ff", + "id": "Srw7ueHf48m5xHOQFuThQ", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 0, "opacity": 100, + "angle": 0, + "x": 6876.8351663453695, + "y": -10931.619280941908, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 98.4375, + "height": 33.6, + "seed": 260990948, "groupIds": [], "frameId": null, "roundness": null, - "seed": 1683621212, + "boundElements": [], + "updated": 1705441245931, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": ":10000", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": ":10000", + "lineHeight": 1.2, + "baseline": 26 + }, + { + "type": "text", "version": 123, "versionNonce": 1961997540, "isDeleted": false, - "boundElements": null, + "id": "nXPshb-tThGBj3OkGgWS9", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 6667.7574528677405, + "y": -10931.619280941908, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 82.03125, + "height": 33.6, + "seed": 1683621212, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], "updated": 1705441309258, "link": null, "locked": false, - "text": ":8080", "fontSize": 28, "fontFamily": 3, + "text": ":8080", "textAlign": "left", "verticalAlign": "top", - "baseline": 26, "containerId": null, "originalText": ":8080", - "lineHeight": 1.2 + "lineHeight": 1.2, + "baseline": 26 } ], "appState": { diff --git a/products/Makefile b/products/Makefile index ac7ce55..1f1fe71 100644 --- a/products/Makefile +++ b/products/Makefile @@ -26,8 +26,7 @@ docker-build: clean docker-run: @docker run \ --name $(CONTAINER_NAME) \ - --publish 3000:3000 \ - --env CONTAINER_NAME="Awesome API server" \ + --publish 4001:4001 \ --env DBPORT=55432 \ --detach \ $(IMAGE_NAME) diff --git a/products/app/cfg/config.go b/products/app/cfg/config.go index d23ffcf..e24fff3 100644 --- a/products/app/cfg/config.go +++ b/products/app/cfg/config.go @@ -6,7 +6,7 @@ import ( type configStruct struct { AppHost string `default:"0.0.0.0"` - AppPort int `default:"3001"` + AppPort int `default:"4001"` DbHost string `default:"localhost"` DbPort int `default:"55432"` DbName string `default:"komponiranje"` diff --git a/proxy/envoy.yaml b/proxy/envoy.yaml index 8747de1..640c83f 100644 --- a/proxy/envoy.yaml +++ b/proxy/envoy.yaml @@ -43,7 +43,7 @@ static_resources: address: socket_address: address: machines-app - port_value: 3000 + port_value: 4000 - name: products-app connect_timeout: 0.25s type: strict_dns @@ -56,7 +56,7 @@ static_resources: address: socket_address: address: products-app - port_value: 3000 + port_value: 4001 admin: access_log_path: "/dev/null" address: From 0a344ed1cec69744942c53d24ca671984b0c449f Mon Sep 17 00:00:00 2001 From: Eden Kirin Date: Tue, 23 Jan 2024 21:40:57 +0100 Subject: [PATCH 3/5] DC in local network --- docker-compose-local.yml | 65 ++ frontend/public/manifest.json | 25 - media/demo-overview.excalidraw | 1690 ++++++++++++++++++++++++++------ products/app/api/router.go | 4 + proxy/envoy-local.yaml | 59 ++ proxy/envoy.yaml | 6 - 6 files changed, 1537 insertions(+), 312 deletions(-) create mode 100644 docker-compose-local.yml delete mode 100644 frontend/public/manifest.json create mode 100644 proxy/envoy-local.yaml diff --git a/docker-compose-local.yml b/docker-compose-local.yml new file mode 100644 index 0000000..5aa1d64 --- /dev/null +++ b/docker-compose-local.yml @@ -0,0 +1,65 @@ +version: "3.8" + +services: + db: + build: + context: ./database + dockerfile: Dockerfile + network_mode: "host" + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres + command: -p 55432 + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -p 55432"] + interval: 1s + timeout: 5s + retries: 10 + machines-app: + build: + context: ./machines + dockerfile: Dockerfile + network_mode: "host" + environment: + - APPPORT=4000 + - DBHOST=localhost + - DBPORT=55432 + - DBNAME=komponiranje + - DBUSER=pero + - DBPASSWORD=pero.000 + - PRODUCTSAPPURL=http://localhost:10000 + depends_on: + db: + condition: service_healthy + products-app: + build: + context: ./products + dockerfile: Dockerfile + network_mode: "host" + environment: + - APPPORT=4001 + - DBHOST=localhost + - DBPORT=55432 + - DBNAME=komponiranje + - DBUSER=pero + - DBPASSWORD=pero.000 + depends_on: + db: + condition: service_healthy + proxy: + image: envoyproxy/envoy:v1.28-latest + network_mode: "host" + volumes: + - ./proxy/envoy-local.yaml:/etc/envoy/envoy.yaml + depends_on: + - machines-app + - products-app + frontend-app: + build: + context: ./frontend + dockerfile: Dockerfile + network_mode: "host" + environment: + - REACT_APP_BACKEND_API_URL="http://localhost:10000" + depends_on: + - proxy diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json deleted file mode 100644 index 7815387..0000000 --- a/frontend/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "Komponiranje", - "name": "Komponiranje frontend demo", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/media/demo-overview.excalidraw b/media/demo-overview.excalidraw index d3bba1d..1251274 100644 --- a/media/demo-overview.excalidraw +++ b/media/demo-overview.excalidraw @@ -79,8 +79,8 @@ }, { "type": "rectangle", - "version": 408, - "versionNonce": 1908234340, + "version": 409, + "versionNonce": 472073044, "isDeleted": false, "id": "IdWgQ7K35j_LT3pdoxDq0", "fillStyle": "solid", @@ -123,9 +123,13 @@ { "id": "12ktETjUSPoRsMJk3PXBy", "type": "arrow" + }, + { + "id": "PeZQxw18zbvvapiGRTFE2", + "type": "arrow" } ], - "updated": 1705441164467, + "updated": 1706041358431, "link": null, "locked": false }, @@ -473,8 +477,8 @@ }, { "type": "rectangle", - "version": 353, - "versionNonce": 235672548, + "version": 389, + "versionNonce": 2009737940, "isDeleted": false, "id": "ai0osAWJ1RBoQ4JBro3L0", "fillStyle": "cross-hatch", @@ -483,7 +487,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 5125.188105592076, + "x": 5348.783447396858, "y": -10988.629967017767, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", @@ -503,14 +507,14 @@ "id": "Lcioux1OAkfxYsRwg7tPh" } ], - "updated": 1705441149449, + "updated": 1706041251955, "link": null, "locked": false }, { "type": "text", - "version": 288, - "versionNonce": 928681052, + "version": 324, + "versionNonce": 342208596, "isDeleted": false, "id": "Lcioux1OAkfxYsRwg7tPh", "fillStyle": "cross-hatch", @@ -519,7 +523,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 5205.9707246927355, + "x": 5429.566066497518, "y": -10983.629967017767, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", @@ -532,7 +536,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441149449, + "updated": 1706041251955, "link": null, "locked": false, "fontSize": 28, @@ -547,8 +551,8 @@ }, { "type": "rectangle", - "version": 518, - "versionNonce": 1789392740, + "version": 554, + "versionNonce": 1853130196, "isDeleted": false, "id": "wUuH6P3y0n2bIbcULauqL", "fillStyle": "solid", @@ -557,7 +561,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 5160.680604618469, + "x": 5384.275946423251, "y": -10914.938628465508, "strokeColor": "#2f9e44", "backgroundColor": "#b2f2bb", @@ -589,14 +593,14 @@ "type": "arrow" } ], - "updated": 1705441149449, + "updated": 1706041251955, "link": null, "locked": false }, { "type": "text", - "version": 469, - "versionNonce": 1837146332, + "version": 505, + "versionNonce": 453815124, "isDeleted": false, "id": "TtJzzXuOaQrik6UMq4Jrt", "fillStyle": "cross-hatch", @@ -605,7 +609,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 5287.563055625353, + "x": 5511.158397430135, "y": -10864.457831299003, "strokeColor": "#2f9e44", "backgroundColor": "transparent", @@ -618,7 +622,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441149449, + "updated": 1706041251955, "link": null, "locked": false, "fontSize": 28, @@ -685,8 +689,8 @@ }, { "type": "arrow", - "version": 755, - "versionNonce": 1308441692, + "version": 831, + "versionNonce": 154280404, "isDeleted": false, "id": "RhRkQFd2AVMdyJzXPC51f", "fillStyle": "cross-hatch", @@ -696,11 +700,11 @@ "opacity": 100, "angle": 0, "x": 4138.5006918313, - "y": -10915.373079875531, + "y": -10892.88131296792, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", - "width": 393.01154901695827, - "height": 281.5830979902312, + "width": 616.6068908217403, + "height": 312.08904928367156, "seed": 671174000, "groupIds": [], "frameId": null, @@ -708,7 +712,7 @@ "type": 2 }, "boundElements": [], - "updated": 1705441179149, + "updated": 1706041252173, "link": null, "locked": false, "startBinding": { @@ -730,67 +734,15 @@ 0 ], [ - 393.01154901695827, - -281.5830979902312 + 616.6068908217403, + -312.08904928367156 ] ] }, { "type": "arrow", - "version": 977, - "versionNonce": 2020919644, - "isDeleted": false, - "id": "GxvBGakscR8qvQ3hBN8J-", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 60, - "angle": 0, - "x": 4135.914493311512, - "y": -10825.001805017082, - "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", - "width": 398.28852405815724, - "height": 358.11152052741454, - "seed": 675507056, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1705440260385, - "link": null, - "locked": false, - "startBinding": { - "elementId": "IdWgQ7K35j_LT3pdoxDq0", - "focus": -0.5261163283059266, - "gap": 1 - }, - "endBinding": { - "elementId": "A7BseBs_mEzk9-lk1eJj_", - "focus": -0.7652501739770003, - "gap": 1 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 398.28852405815724, - 358.11152052741454 - ] - ] - }, - { - "type": "arrow", - "version": 477, - "versionNonce": 713080036, + "version": 591, + "versionNonce": 947278060, "isDeleted": false, "id": "waoFatUFaAnlvBo9y6yfH", "fillStyle": "cross-hatch", @@ -799,7 +751,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4905.0303949298595, + "x": 5128.625736734642, "y": -11176.041425588117, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", @@ -812,18 +764,18 @@ "type": 2 }, "boundElements": [], - "updated": 1705441199515, + "updated": 1706041252742, "link": null, "locked": false, "startBinding": { "elementId": "n75eoynQQIjXOS72X19Jr", "focus": -0.7930567958349166, - "gap": 1.6363098673245986 + "gap": 1.6363098673250533 }, "endBinding": { "elementId": "wUuH6P3y0n2bIbcULauqL", "focus": -0.6807926534852702, - "gap": 1.0000000000004547 + "gap": 1 }, "lastCommittedPoint": null, "startArrowhead": null, @@ -841,60 +793,8 @@ }, { "type": "arrow", - "version": 655, - "versionNonce": 1067002596, - "isDeleted": false, - "id": "kUvKwE5bb6v-aDmquYB91", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 4908.438407094829, - "y": -10475.755425099864, - "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", - "width": 251.24219752364024, - "height": 354.9802750337112, - "seed": 2020535664, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1705441204281, - "link": null, - "locked": false, - "startBinding": { - "elementId": "A7BseBs_mEzk9-lk1eJj_", - "focus": 0.8143068746561463, - "gap": 2.541990396939582 - }, - "endBinding": { - "elementId": "wUuH6P3y0n2bIbcULauqL", - "focus": 0.7490125782834083, - "gap": 1.0000000000004547 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 251.24219752364024, - -354.9802750337112 - ] - ] - }, - { - "type": "arrow", - "version": 462, - "versionNonce": 537032164, + "version": 538, + "versionNonce": 1547960916, "isDeleted": false, "id": "fz4-v3BbLpHUlDxmoU9oC", "fillStyle": "cross-hatch", @@ -903,12 +803,12 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4717.369360395205, + "x": 4912.467741681868, "y": -11097.686408298954, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", - "width": 581.4057282513213, - "height": 273.2944022042084, + "width": 776.5041095379838, + "height": 274.5423042532075, "seed": 988591472, "groupIds": [], "frameId": null, @@ -916,7 +816,7 @@ "type": 2 }, "boundElements": [], - "updated": 1705441175416, + "updated": 1706041252173, "link": null, "locked": false, "startBinding": { @@ -938,15 +838,15 @@ 0 ], [ - -581.4057282513213, - 273.2944022042084 + -776.5041095379838, + 274.5423042532075 ] ] }, { "type": "rectangle", - "version": 468, - "versionNonce": 428297828, + "version": 504, + "versionNonce": 506534996, "isDeleted": false, "id": "YPhfkjzNcQxaFwAcVmQUU", "fillStyle": "cross-hatch", @@ -955,7 +855,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4497.208186707921, + "x": 4720.803528512703, "y": -11309.888505042825, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", @@ -975,14 +875,14 @@ "id": "3v1ShPfiBCgX1ECWIRrnP" } ], - "updated": 1705441161952, + "updated": 1706041251955, "link": null, "locked": false }, { "type": "text", - "version": 372, - "versionNonce": 539376092, + "version": 408, + "versionNonce": 66220500, "isDeleted": false, "id": "3v1ShPfiBCgX1ECWIRrnP", "fillStyle": "cross-hatch", @@ -991,7 +891,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4588.336844626941, + "x": 4811.932186431723, "y": -11304.888505042825, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", @@ -1004,7 +904,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441161952, + "updated": 1706041251955, "link": null, "locked": false, "fontSize": 28, @@ -1019,8 +919,8 @@ }, { "type": "rectangle", - "version": 416, - "versionNonce": 131588580, + "version": 452, + "versionNonce": 569186132, "isDeleted": false, "id": "n75eoynQQIjXOS72X19Jr", "fillStyle": "solid", @@ -1029,7 +929,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4532.700685734315, + "x": 4756.296027539097, "y": -11237.794155610209, "strokeColor": "#2f9e44", "backgroundColor": "#b2f2bb", @@ -1061,14 +961,14 @@ "type": "arrow" } ], - "updated": 1705441161952, + "updated": 1706041251955, "link": null, "locked": false }, { "type": "text", - "version": 352, - "versionNonce": 1803198044, + "version": 388, + "versionNonce": 1148652756, "isDeleted": false, "id": "tRbFn4eaW1fPFGHbh26_R", "fillStyle": "cross-hatch", @@ -1077,7 +977,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4630.897025291003, + "x": 4854.492367095785, "y": -11187.313358443704, "strokeColor": "#2f9e44", "backgroundColor": "transparent", @@ -1090,7 +990,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441161952, + "updated": 1706041251955, "link": null, "locked": false, "fontSize": 28, @@ -1105,8 +1005,8 @@ }, { "type": "text", - "version": 324, - "versionNonce": 2028613100, + "version": 360, + "versionNonce": 197418452, "isDeleted": false, "id": "RExyWP6iEbwZEwWGJ7ynn", "fillStyle": "cross-hatch", @@ -1115,7 +1015,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4543.161785873755, + "x": 4766.7571276785375, "y": -11072.380779771478, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", @@ -1128,7 +1028,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1706036591642, + "updated": 1706041251955, "link": null, "locked": false, "fontSize": 20, @@ -1143,8 +1043,8 @@ }, { "type": "rectangle", - "version": 664, - "versionNonce": 340519012, + "version": 700, + "versionNonce": 815891284, "isDeleted": false, "id": "VwKFGNiRjQbbSavZfiH7u", "fillStyle": "cross-hatch", @@ -1153,7 +1053,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4499.710518343276, + "x": 4723.305860148058, "y": -10625.784026425175, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", @@ -1173,14 +1073,14 @@ "id": "65GKihY2pwS9D03KoVJx7" } ], - "updated": 1705441154250, + "updated": 1706041251955, "link": null, "locked": false }, { "type": "text", - "version": 603, - "versionNonce": 353386460, + "version": 639, + "versionNonce": 1505622228, "isDeleted": false, "id": "65GKihY2pwS9D03KoVJx7", "fillStyle": "cross-hatch", @@ -1189,7 +1089,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4588.221164787686, + "x": 4811.816506592468, "y": -10620.784026425175, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", @@ -1202,7 +1102,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441154250, + "updated": 1706041251955, "link": null, "locked": false, "fontSize": 28, @@ -1217,8 +1117,8 @@ }, { "type": "rectangle", - "version": 614, - "versionNonce": 855194596, + "version": 650, + "versionNonce": 1655684692, "isDeleted": false, "id": "A7BseBs_mEzk9-lk1eJj_", "fillStyle": "solid", @@ -1227,7 +1127,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4535.203017369669, + "x": 4758.798359174451, "y": -10546.873210644435, "strokeColor": "#2f9e44", "backgroundColor": "#b2f2bb", @@ -1259,14 +1159,14 @@ "type": "arrow" } ], - "updated": 1705441154250, + "updated": 1706041251955, "link": null, "locked": false }, { "type": "text", - "version": 550, - "versionNonce": 20178012, + "version": 586, + "versionNonce": 1145885652, "isDeleted": false, "id": "OqcOXay_DWRyOtRdobP08", "fillStyle": "cross-hatch", @@ -1275,7 +1175,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4620.477291191494, + "x": 4844.072632996276, "y": -10496.39241347793, "strokeColor": "#2f9e44", "backgroundColor": "transparent", @@ -1288,7 +1188,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441154250, + "updated": 1706041251955, "link": null, "locked": false, "fontSize": 28, @@ -1303,8 +1203,8 @@ }, { "type": "text", - "version": 366, - "versionNonce": 76084948, + "version": 402, + "versionNonce": 1911179732, "isDeleted": false, "id": "FCRGzjxk1UBzWmGqDlFB5", "fillStyle": "cross-hatch", @@ -1313,7 +1213,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4553.161889878033, + "x": 4776.7572316828155, "y": -10380.1254285094, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", @@ -1326,7 +1226,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1706036591642, + "updated": 1706041251955, "link": null, "locked": false, "fontSize": 20, @@ -1341,8 +1241,8 @@ }, { "type": "rectangle", - "version": 725, - "versionNonce": 1651439836, + "version": 761, + "versionNonce": 858386260, "isDeleted": false, "id": "4H8oN-ypeQCBWDzOVtVQW", "fillStyle": "cross-hatch", @@ -1351,7 +1251,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4499.710518343276, + "x": 4723.305860148058, "y": -10259.21263273098, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", @@ -1371,14 +1271,14 @@ "id": "X4Z5tuXdxKYRPhNP4Q9gb" } ], - "updated": 1705441154250, + "updated": 1706041251955, "link": null, "locked": false }, { "type": "text", - "version": 663, - "versionNonce": 2059309796, + "version": 699, + "versionNonce": 1213785300, "isDeleted": false, "id": "X4Z5tuXdxKYRPhNP4Q9gb", "fillStyle": "cross-hatch", @@ -1387,7 +1287,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4588.221164787686, + "x": 4811.816506592468, "y": -10254.21263273098, "strokeColor": "#1971c2", "backgroundColor": "#a5d8ff", @@ -1400,7 +1300,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441154250, + "updated": 1706041251955, "link": null, "locked": false, "fontSize": 28, @@ -1415,8 +1315,8 @@ }, { "type": "rectangle", - "version": 677, - "versionNonce": 72580444, + "version": 713, + "versionNonce": 386738772, "isDeleted": false, "id": "sgmwBqZMfXCJB7d57hCMQ", "fillStyle": "solid", @@ -1425,7 +1325,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4535.203017369669, + "x": 4758.798359174451, "y": -10180.30181695024, "strokeColor": "#2f9e44", "backgroundColor": "#b2f2bb", @@ -1465,14 +1365,14 @@ "type": "arrow" } ], - "updated": 1705441154250, + "updated": 1706041251955, "link": null, "locked": false }, { "type": "text", - "version": 610, - "versionNonce": 984782436, + "version": 646, + "versionNonce": 1646051284, "isDeleted": false, "id": "EnUpsUDbjeySL8HabFf0F", "fillStyle": "cross-hatch", @@ -1481,7 +1381,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4614.303264702236, + "x": 4837.8986065070185, "y": -10129.821019783734, "strokeColor": "#2f9e44", "backgroundColor": "transparent", @@ -1494,7 +1394,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1705441154250, + "updated": 1706041251955, "link": null, "locked": false, "fontSize": 28, @@ -1509,8 +1409,8 @@ }, { "type": "text", - "version": 423, - "versionNonce": 499486828, + "version": 459, + "versionNonce": 576992724, "isDeleted": false, "id": "u1OuuXnvKcO5rBbQ9og-m", "fillStyle": "cross-hatch", @@ -1519,7 +1419,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4553.161889878033, + "x": 4776.7572316828155, "y": -10013.554034815204, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", @@ -1532,7 +1432,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1706036591643, + "updated": 1706041251956, "link": null, "locked": false, "fontSize": 20, @@ -1547,8 +1447,8 @@ }, { "type": "text", - "version": 112, - "versionNonce": 929758292, + "version": 148, + "versionNonce": 361126740, "isDeleted": false, "id": "puauPPmatsxiYK7nuxUmV", "fillStyle": "cross-hatch", @@ -1557,7 +1457,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 5042.714377606636, + "x": 5266.309719411418, "y": -11068.377456878285, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", @@ -1568,7 +1468,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1706036591643, + "updated": 1706041251956, "link": null, "locked": false, "fontSize": 20, @@ -1583,8 +1483,8 @@ }, { "type": "text", - "version": 218, - "versionNonce": 101753580, + "version": 254, + "versionNonce": 2085081300, "isDeleted": false, "id": "ZR8aurk5K826Erslgmf7s", "fillStyle": "cross-hatch", @@ -1593,7 +1493,7 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 5108.239754933882, + "x": 5331.835096738664, "y": -10632.40602369569, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", @@ -1604,7 +1504,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1706036591643, + "updated": 1706041251956, "link": null, "locked": false, "fontSize": 20, @@ -1739,8 +1639,8 @@ }, { "type": "text", - "version": 152, - "versionNonce": 620979028, + "version": 181, + "versionNonce": 1331779052, "isDeleted": false, "id": "mexveX3hsuycJnV_xFlwn", "fillStyle": "cross-hatch", @@ -1749,8 +1649,8 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4219.394331660588, - "y": -11150.082041487154, + "x": 4394.381974340535, + "y": -11167.094754723212, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", "width": 199.21875, @@ -1760,7 +1660,7 @@ "frameId": null, "roundness": null, "boundElements": [], - "updated": 1706036641928, + "updated": 1706041255022, "link": null, "locked": false, "fontSize": 20, @@ -1775,8 +1675,8 @@ }, { "type": "text", - "version": 327, - "versionNonce": 504143596, + "version": 430, + "versionNonce": 585603436, "isDeleted": false, "id": "nWQ6dNawezlmi4uYfgWBy", "fillStyle": "cross-hatch", @@ -1785,34 +1685,34 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4316.116079608326, - "y": -10701.54448621816, + "x": 3988.8837929604206, + "y": -10696.47893924777, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", - "width": 222.65625, + "width": 199.21875, "height": 24, "seed": 1203968507, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1706036661239, + "updated": 1706041416204, "link": null, "locked": false, "fontSize": 20, "fontFamily": 3, - "text": "products-app-1:4001", + "text": "products-app:4001", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "products-app-1:4001", + "originalText": "products-app:4001", "lineHeight": 1.2, "baseline": 19 }, { "type": "text", - "version": 345, - "versionNonce": 1571720148, + "version": 499, + "versionNonce": 151997268, "isDeleted": false, "id": "GWChLBYhFI9kdropPUQeG", "fillStyle": "cross-hatch", @@ -1821,81 +1721,65 @@ "roughness": 2, "opacity": 100, "angle": 0, - "x": 4153.042614670918, - "y": -10370.13837505832, + "x": 4540.565051775024, + "y": -10646.063500066391, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", - "width": 222.65625, + "width": 164.0625, "height": 24, "seed": 1087064533, "groupIds": [], "frameId": null, "roundness": null, "boundElements": [], - "updated": 1706036665127, + "updated": 1706041447897, "link": null, "locked": false, "fontSize": 20, "fontFamily": 3, - "text": "products-app-2:4001", + "text": "products-app-1", "textAlign": "left", "verticalAlign": "top", "containerId": null, - "originalText": "products-app-2:4001", + "originalText": "products-app-1", "lineHeight": 1.2, "baseline": 19 }, { - "type": "arrow", - "version": 162, - "versionNonce": 1944053732, + "type": "text", + "version": 433, + "versionNonce": 678535508, "isDeleted": false, - "id": "12ktETjUSPoRsMJk3PXBy", + "id": "Btjpwc0Rg4sVBUzUFRj0X", "fillStyle": "cross-hatch", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 2, - "opacity": 60, + "opacity": 100, "angle": 0, - "x": 4137.504982923524, - "y": -10821.943638734365, + "x": 4439.094133044105, + "y": -10317.026113796024, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", - "width": 400.6504031289887, - "height": 714.2560698272282, - "seed": 1850086261, + "width": 164.0625, + "height": 24, + "seed": 1165568980, "groupIds": [], "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1705440260386, + "roundness": null, + "boundElements": null, + "updated": 1706041441915, "link": null, "locked": false, - "startBinding": { - "elementId": "IdWgQ7K35j_LT3pdoxDq0", - "focus": -0.7214192287183446, - "gap": 2.0682815463108 - }, - "endBinding": { - "elementId": "sgmwBqZMfXCJB7d57hCMQ", - "focus": -0.8623062595162034, - "gap": 4.761951908674746 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 400.6504031289887, - 714.2560698272282 - ] - ] + "fontSize": 20, + "fontFamily": 3, + "text": "products-app-2", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "products-app-2", + "lineHeight": 1.2, + "baseline": 19 }, { "type": "text", @@ -1935,8 +1819,8 @@ }, { "type": "text", - "version": 57, - "versionNonce": 2054173268, + "version": 59, + "versionNonce": 838180972, "isDeleted": false, "id": "9D7Gw2OyaxH8PvxvmUAw1", "fillStyle": "cross-hatch", @@ -1959,9 +1843,17 @@ { "id": "fz4-v3BbLpHUlDxmoU9oC", "type": "arrow" + }, + { + "id": "GxvBGakscR8qvQ3hBN8J-", + "type": "arrow" + }, + { + "id": "PeZQxw18zbvvapiGRTFE2", + "type": "arrow" } ], - "updated": 1706036591645, + "updated": 1706041394351, "link": null, "locked": false, "fontSize": 20, @@ -1976,8 +1868,8 @@ }, { "type": "arrow", - "version": 141, - "versionNonce": 1127648476, + "version": 255, + "versionNonce": 1556118252, "isDeleted": false, "id": "EqT0Q5frh1UBL9rxtlgsl", "fillStyle": "cross-hatch", @@ -1986,7 +1878,7 @@ "roughness": 1, "opacity": 100, "angle": 0, - "x": 4906.900924831709, + "x": 5130.496266636491, "y": -10109.38787249232, "strokeColor": "#1e1e1e", "backgroundColor": "#a5d8ff", @@ -1999,18 +1891,18 @@ "type": 2 }, "boundElements": [], - "updated": 1705440260386, + "updated": 1706041252743, "link": null, "locked": false, "startBinding": { "elementId": "sgmwBqZMfXCJB7d57hCMQ", "focus": 0.8962818637395497, - "gap": 1.0045081338193995 + "gap": 1.0045081338198543 }, "endBinding": { "elementId": "wUuH6P3y0n2bIbcULauqL", "focus": 0.8699732884032452, - "gap": 2.5818794988804257 + "gap": 2.581879498879971 }, "lastCommittedPoint": null, "startArrowhead": null, @@ -2098,6 +1990,42 @@ "lineHeight": 1.2, "baseline": 34 }, + { + "type": "text", + "version": 239, + "versionNonce": 2045982700, + "isDeleted": false, + "id": "q0H3IhROzRUXh6rZ4V6Ap", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 6665.211052060135, + "y": -9612.63416112596, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 527.34375, + "height": 43.199999999999996, + "seed": 210263148, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041097877, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 3, + "text": "Networking - host network", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Networking - host network", + "lineHeight": 1.2, + "baseline": 34 + }, { "type": "line", "version": 511, @@ -2186,6 +2114,50 @@ ] ] }, + { + "type": "line", + "version": 779, + "versionNonce": 1124554860, + "isDeleted": false, + "id": "bKhWLdB6c04RR93lmttHj", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 6807.546652081034, + "y": -8940.7262405574, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 1361.3470093804544, + "height": 0, + "seed": 714731244, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": null, + "updated": 1706041220107, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 1361.3470093804544, + 0 + ] + ] + }, { "type": "line", "version": 795, @@ -2274,6 +2246,50 @@ ] ] }, + { + "type": "line", + "version": 390, + "versionNonce": 2144720596, + "isDeleted": false, + "id": "MMWKsxg3PHsQ92lR0k7Jh", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7174.335430718847, + "y": -9193.229299084229, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 253.73255995626096, + "seed": 1708470636, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": null, + "updated": 1706041193857, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 253.73255995626096 + ] + ] + }, { "type": "line", "version": 464, @@ -2406,6 +2422,50 @@ ] ] }, + { + "type": "line", + "version": 756, + "versionNonce": 958178156, + "isDeleted": false, + "id": "QoXHqi12H7EBwAASLjdNK", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7053.229709205872, + "y": -9193.932712147105, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 253.61435269317553, + "seed": 1462853844, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": null, + "updated": 1706041156792, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 253.61435269317553 + ] + ] + }, { "type": "line", "version": 674, @@ -2450,6 +2510,50 @@ ] ] }, + { + "type": "line", + "version": 816, + "versionNonce": 1955677292, + "isDeleted": false, + "id": "JxlIIDv5p9_kgp0YXYrz2", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 6830.948426666734, + "y": -9194.413348430506, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 250.6351122573633, + "seed": 2008073836, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": null, + "updated": 1706041151776, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 250.6351122573633 + ] + ] + }, { "type": "rectangle", "version": 145, @@ -2520,6 +2624,76 @@ "lineHeight": 1.25, "baseline": 79 }, + { + "type": "rectangle", + "version": 249, + "versionNonce": 1883716716, + "isDeleted": false, + "id": "tlV1Xf6FzfAA3OKyd85H5", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 6754.568678437931, + "y": -9455.21714153248, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 762717780, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "_5Xl3fn6hvoISlfgM97TO" + } + ], + "updated": 1706041032812, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 273, + "versionNonce": 1937559276, + "isDeleted": false, + "id": "_5Xl3fn6hvoISlfgM97TO", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 6785.164403735357, + "y": -9370.963061020035, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 150.22805786132812, + "height": 90, + "seed": 690297068, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041032812, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Frontend\n/ nginx", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "tlV1Xf6FzfAA3OKyd85H5", + "originalText": "Frontend\n/ nginx", + "lineHeight": 1.25, + "baseline": 79 + }, { "type": "rectangle", "version": 215, @@ -2590,6 +2764,76 @@ "lineHeight": 1.25, "baseline": 34 }, + { + "type": "rectangle", + "version": 319, + "versionNonce": 1331433836, + "isDeleted": false, + "id": "e130y7WVv6bvZcfqh32B0", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7004.527171473912, + "y": -9455.21714153248, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 973487060, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "xUxJBo21hH2LeoTiobdVa" + } + ], + "updated": 1706041032812, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 324, + "versionNonce": 590283756, + "isDeleted": false, + "id": "xUxJBo21hH2LeoTiobdVa", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7062.068911175635, + "y": -9348.463061020035, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 96.33602905273438, + "height": 45, + "seed": 2104171372, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041032812, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Proxy", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "e130y7WVv6bvZcfqh32B0", + "originalText": "Proxy", + "lineHeight": 1.25, + "baseline": 34 + }, { "type": "rectangle", "version": 264, @@ -2660,6 +2904,76 @@ "lineHeight": 1.25, "baseline": 79 }, + { + "type": "rectangle", + "version": 368, + "versionNonce": 352298604, + "isDeleted": false, + "id": "D9S6DttGwto-nBrg83qxX", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7254.485664509893, + "y": -9455.21714153248, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 922198356, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "liaS42F2t8j0mI6DHLY97" + } + ], + "updated": 1706041032812, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 385, + "versionNonce": 2040002796, + "isDeleted": false, + "id": "liaS42F2t8j0mI6DHLY97", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7284.505393408393, + "y": -9370.963061020035, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 151.3800506591797, + "height": 90, + "seed": 248303084, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041032812, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Machines\napp", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "D9S6DttGwto-nBrg83qxX", + "originalText": "Machines\napp", + "lineHeight": 1.25, + "baseline": 79 + }, { "type": "rectangle", "version": 302, @@ -2730,6 +3044,76 @@ "lineHeight": 1.25, "baseline": 79 }, + { + "type": "rectangle", + "version": 406, + "versionNonce": 2088893292, + "isDeleted": false, + "id": "YZFeRBlb9fPinGb-rL9fV", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7504.444157545873, + "y": -9455.21714153248, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 731928276, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "yNbyWoUXE1SuaOMeuUorJ" + } + ], + "updated": 1706041032812, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 443, + "versionNonce": 1368980972, + "isDeleted": false, + "id": "yNbyWoUXE1SuaOMeuUorJ", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7531.097881500526, + "y": -9348.463061020035, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 158.112060546875, + "height": 45, + "seed": 508833900, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041057160, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Products", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "YZFeRBlb9fPinGb-rL9fV", + "originalText": "Products", + "lineHeight": 1.25, + "baseline": 31 + }, { "type": "rectangle", "version": 316, @@ -2870,6 +3254,76 @@ "lineHeight": 1.25, "baseline": 34 }, + { + "type": "rectangle", + "version": 559, + "versionNonce": 902735852, + "isDeleted": false, + "id": "LPmc1UmXX2LFffOZUdd4D", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7751.938445646899, + "y": -9455.21714153248, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 211.4195084561806, + "height": 258.508161024889, + "seed": 732934612, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "OGkejGvfrG8oIV78MQSqa" + } + ], + "updated": 1706041214123, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 597, + "versionNonce": 2081081964, + "isDeleted": false, + "id": "OGkejGvfrG8oIV78MQSqa", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 7768.656164962879, + "y": -9348.463061020035, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "width": 177.98406982421875, + "height": 45, + "seed": 1841038700, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041214123, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Database", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "LPmc1UmXX2LFffOZUdd4D", + "originalText": "Database", + "lineHeight": 1.25, + "baseline": 34 + }, { "type": "line", "version": 220, @@ -2914,6 +3368,50 @@ ] ] }, + { + "type": "line", + "version": 347, + "versionNonce": 1290312404, + "isDeleted": false, + "id": "qebRGGRq8X9IZI8FJ4iU7", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7355.557112264494, + "y": -9191.215915572684, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 248.80881481533106, + "seed": 1610766164, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": null, + "updated": 1706041197458, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 248.80881481533106 + ] + ] + }, { "type": "line", "version": 365, @@ -3046,6 +3544,50 @@ ] ] }, + { + "type": "line", + "version": 738, + "versionNonce": 819305044, + "isDeleted": false, + "id": "8EKTPkAlhscd0rLB4vi3r", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7613.671932354703, + "y": -9194.96530710543, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 254.01333165329925, + "seed": 1794284140, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": null, + "updated": 1706041201091, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 254.01333165329925 + ] + ] + }, { "type": "line", "version": 337, @@ -3090,6 +3632,50 @@ ] ] }, + { + "type": "line", + "version": 551, + "versionNonce": 463379692, + "isDeleted": false, + "id": "AJCUeIksJewumF0msOOZp", + "fillStyle": "cross-hatch", + "strokeWidth": 4, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7859.012260726092, + "y": -9191.215915572684, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 0, + "height": 249.53643297741291, + "seed": 1726714452, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": null, + "updated": 1706041214123, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 249.53643297741291 + ] + ] + }, { "type": "text", "version": 297, @@ -3268,6 +3854,42 @@ "lineHeight": 1.2, "baseline": 60 }, + { + "type": "text", + "version": 298, + "versionNonce": 1781397076, + "isDeleted": false, + "id": "JCtNoqXAtRXWCKeXeyioB", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7370.873431146558, + "y": -9170.092051043053, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 131.25, + "height": 67.2, + "seed": 669983212, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041188298, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": "machines\n:4000", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "machines\n:4000", + "lineHeight": 1.2, + "baseline": 60 + }, { "type": "text", "version": 305, @@ -3304,6 +3926,42 @@ "lineHeight": 1.2, "baseline": 60 }, + { + "type": "text", + "version": 456, + "versionNonce": 278022380, + "isDeleted": false, + "id": "P4F7Fs__PPffE5XzurTFI", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7639.001222628836, + "y": -9170.092051043053, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 131.25, + "height": 67.2, + "seed": 1803371220, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041188298, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": "products\n:4001", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "products\n:4001", + "lineHeight": 1.2, + "baseline": 60 + }, { "type": "text", "version": 392, @@ -3340,6 +3998,42 @@ "lineHeight": 1.2, "baseline": 60 }, + { + "type": "text", + "version": 573, + "versionNonce": 1846812524, + "isDeleted": false, + "id": "pVWOx2rl6PLW3-R5p-X6F", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7876.153710733628, + "y": -9173.883002779077, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 82.03125, + "height": 67.2, + "seed": 135005292, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041214123, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": "db\n:5432", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "db\n:5432", + "lineHeight": 1.2, + "baseline": 60 + }, { "type": "text", "version": 267, @@ -3376,6 +4070,42 @@ "lineHeight": 1.2, "baseline": 60 }, + { + "type": "text", + "version": 371, + "versionNonce": 1605520236, + "isDeleted": false, + "id": "td3o4yeQe6iofbJVoiN3f", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7188.616855597114, + "y": -9166.005601025836, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 98.4375, + "height": 67.2, + "seed": 1375062100, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041188298, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": "proxy\n:10000", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "proxy\n:10000", + "lineHeight": 1.2, + "baseline": 60 + }, { "type": "text", "version": 41, @@ -3412,6 +4142,42 @@ "lineHeight": 1.2, "baseline": 26 }, + { + "type": "text", + "version": 304, + "versionNonce": 196432364, + "isDeleted": false, + "id": "W917RITvq_UAGkMWWN4-x", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 7956.13962765221, + "y": -8989.384956796512, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 196.875, + "height": 33.6, + "seed": 1198036716, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041214123, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": "host network", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "host network", + "lineHeight": 1.2, + "baseline": 26 + }, { "type": "text", "version": 52, @@ -3448,6 +4214,42 @@ "lineHeight": 1.2, "baseline": 26 }, + { + "type": "text", + "version": 154, + "versionNonce": 1798606188, + "isDeleted": false, + "id": "Je1MRjNJtLgb4A3wQAlZn", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 6938.835135827791, + "y": -9157.619113095228, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 98.4375, + "height": 33.6, + "seed": 843161044, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041032812, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": ":10000", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": ":10000", + "lineHeight": 1.2, + "baseline": 26 + }, { "type": "text", "version": 123, @@ -3483,6 +4285,332 @@ "originalText": ":8080", "lineHeight": 1.2, "baseline": 26 + }, + { + "type": "text", + "version": 250, + "versionNonce": 2135310444, + "isDeleted": false, + "id": "cBtZRGSkJNkf9fu79MN-k", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 6764.356189542294, + "y": -9157.619113095228, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "width": 49.21875, + "height": 33.6, + "seed": 1116658028, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": null, + "updated": 1706041107761, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 3, + "text": ":80", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": ":80", + "lineHeight": 1.2, + "baseline": 26 + }, + { + "id": "TF0Zz4K9Hr0mJh93FYmWa", + "type": "rectangle", + "x": 4295.820992163472, + "y": -10729.164501808415, + "width": 201.72202553753232, + "height": 267.34215976293854, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 26149228, + "version": 108, + "versionNonce": 683769428, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "9-7loP1Y96GFuWaWQ9wuS" + }, + { + "id": "12ktETjUSPoRsMJk3PXBy", + "type": "arrow" + }, + { + "id": "GxvBGakscR8qvQ3hBN8J-", + "type": "arrow" + }, + { + "id": "PeZQxw18zbvvapiGRTFE2", + "type": "arrow" + } + ], + "updated": 1706041358431, + "link": null, + "locked": false + }, + { + "id": "9-7loP1Y96GFuWaWQ9wuS", + "type": "text", + "x": 4339.9677715338, + "y": -10647.993421926945, + "width": 113.428466796875, + "height": 105, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "#a5d8ff", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 948299372, + "version": 111, + "versionNonce": 1797118292, + "isDeleted": false, + "boundElements": null, + "updated": 1706041483056, + "link": null, + "locked": false, + "text": "docker\nload\nbalancer", + "fontSize": 28, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "middle", + "baseline": 93, + "containerId": "TF0Zz4K9Hr0mJh93FYmWa", + "originalText": "docker\nload\nbalancer", + "lineHeight": 1.25 + }, + { + "type": "arrow", + "version": 1156, + "versionNonce": 2048562412, + "isDeleted": false, + "id": "GxvBGakscR8qvQ3hBN8J-", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 4500.837360104936, + "y": -10623.230747171558, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 255.9243130890227, + "height": 143.83476641726702, + "seed": 675507056, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706041378250, + "link": null, + "locked": false, + "startBinding": { + "elementId": "TF0Zz4K9Hr0mJh93FYmWa", + "focus": -0.4532261287491711, + "gap": 3.2943424039322053 + }, + "endBinding": { + "elementId": "A7BseBs_mEzk9-lk1eJj_", + "focus": -0.6088300485940744, + "gap": 2.0366859804930755 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 255.9243130890227, + 143.83476641726702 + ] + ] + }, + { + "type": "arrow", + "version": 350, + "versionNonce": 2135716948, + "isDeleted": false, + "id": "12ktETjUSPoRsMJk3PXBy", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 4500.868955670756, + "y": -10524.88589149273, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 255.24090265007453, + "height": 409.9916585293977, + "seed": 1850086261, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706041421961, + "link": null, + "locked": false, + "startBinding": { + "elementId": "TF0Zz4K9Hr0mJh93FYmWa", + "focus": -0.32719871477620305, + "gap": 3.325937969751976 + }, + "endBinding": { + "elementId": "sgmwBqZMfXCJB7d57hCMQ", + "focus": -0.8188811925759577, + "gap": 2.6885008536214627 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 255.24090265007453, + 409.9916585293977 + ] + ] + }, + { + "type": "arrow", + "version": 770, + "versionNonce": 2142731348, + "isDeleted": false, + "id": "kUvKwE5bb6v-aDmquYB91", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "angle": 0, + "x": 5132.033748899611, + "y": -10475.755425099864, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 251.24219752364024, + "height": 354.9802750337112, + "seed": 2020535664, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706041343195, + "link": null, + "locked": false, + "startBinding": { + "elementId": "A7BseBs_mEzk9-lk1eJj_", + "focus": 0.8143068746561463, + "gap": 2.5419903969400366 + }, + "endBinding": { + "elementId": "wUuH6P3y0n2bIbcULauqL", + "focus": 0.7490125782834083, + "gap": 1 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 251.24219752364024, + -354.9802750337112 + ] + ] + }, + { + "id": "PeZQxw18zbvvapiGRTFE2", + "type": "arrow", + "x": 4139.128597108126, + "y": -10820.9957654486, + "width": 154.46858391535898, + "height": 219.78074981517602, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "fillStyle": "cross-hatch", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 2, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1646695380, + "version": 108, + "versionNonce": 625469420, + "isDeleted": false, + "boundElements": null, + "updated": 1706041395156, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 154.46858391535898, + 219.78074981517602 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "9D7Gw2OyaxH8PvxvmUAw1", + "focus": -0.9513286989721706, + "gap": 12.522171098273247 + }, + "endBinding": { + "elementId": "TF0Zz4K9Hr0mJh93FYmWa", + "focus": -0.5085158289682294, + "gap": 2.2238111399865375 + }, + "startArrowhead": null, + "endArrowhead": "arrow" } ], "appState": { diff --git a/products/app/api/router.go b/products/app/api/router.go index 23acfb5..890b088 100644 --- a/products/app/api/router.go +++ b/products/app/api/router.go @@ -39,6 +39,10 @@ func handleGetProducts(dbConn *gorm.DB) gin.HandlerFunc { products := db.GetProducts(dbConn, machineId) + // for i := 0; i < len(*products); i++ { + // (*products)[i].Name = fmt.Sprintf("[local] %s", (*products)[i].Name) + // } + c.JSON( http.StatusOK, GetProductsResponse{ diff --git a/proxy/envoy-local.yaml b/proxy/envoy-local.yaml new file mode 100644 index 0000000..03ba9c0 --- /dev/null +++ b/proxy/envoy-local.yaml @@ -0,0 +1,59 @@ +static_resources: + listeners: + - address: + socket_address: + address: 127.0.0.1 + port_value: 10000 + filter_chains: + - filters: + - name: envoy.filters.network.http_connection_manager + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager + codec_type: auto + stat_prefix: ingress_http + route_config: + name: local_route + virtual_hosts: + - name: backend + domains: + - "*" + routes: + - match: + prefix: "/machines" + route: + cluster: machines-app + - match: + prefix: "/products" + route: + cluster: products-app + http_filters: + - name: envoy.filters.http.router + typed_config: + "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router + clusters: + - name: machines-app + connect_timeout: 0.25s + type: strict_dns + lb_policy: round_robin + load_assignment: + cluster_name: machines-app + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: 127.0.0.1 + port_value: 4000 + - name: products-app + connect_timeout: 0.25s + type: strict_dns + lb_policy: round_robin + load_assignment: + cluster_name: products-app + endpoints: + - lb_endpoints: + - endpoint: + address: + socket_address: + address: 127.0.0.1 + port_value: 4001 diff --git a/proxy/envoy.yaml b/proxy/envoy.yaml index 640c83f..40e2646 100644 --- a/proxy/envoy.yaml +++ b/proxy/envoy.yaml @@ -57,9 +57,3 @@ static_resources: socket_address: address: products-app port_value: 4001 -admin: - access_log_path: "/dev/null" - address: - socket_address: - address: 0.0.0.0 - port_value: 800 From ea7c54a5dcaf879b5f7b1523ad265401aa1d7661 Mon Sep 17 00:00:00 2001 From: Eden Kirin Date: Tue, 23 Jan 2024 22:32:11 +0100 Subject: [PATCH 4/5] Product detail modal --- frontend/public/manifest.json | 8 ++++++ frontend/src/api/common.js | 3 --- frontend/src/api/index.js | 1 + frontend/src/api/machines.js | 9 ++++--- frontend/src/api/products.js | 12 +++++++++ frontend/src/components/ProductCard.js | 19 ++++++------- frontend/src/components/ProductModal.js | 36 +++++++++++++++++++++++++ frontend/src/components/Products.js | 24 ++++++++++++++++- frontend/src/const.js | 3 ++- frontend/src/pages/Home.js | 2 -- 10 files changed, 98 insertions(+), 19 deletions(-) create mode 100644 frontend/public/manifest.json create mode 100644 frontend/src/api/products.js create mode 100644 frontend/src/components/ProductModal.js diff --git a/frontend/public/manifest.json b/frontend/public/manifest.json new file mode 100644 index 0000000..cd713dd --- /dev/null +++ b/frontend/public/manifest.json @@ -0,0 +1,8 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "start_url": "./index.html", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/frontend/src/api/common.js b/frontend/src/api/common.js index d3e2848..2af2011 100644 --- a/frontend/src/api/common.js +++ b/frontend/src/api/common.js @@ -1,5 +1,4 @@ import axios from "axios"; -import { API_URL } from "../const"; export class ApiBase {} @@ -12,7 +11,6 @@ const commonHeaders = { }; export const axiosUnauthorizedInstance = axios.create({ - baseURL: API_URL, timeout: 5000, headers: commonHeaders, }); @@ -25,7 +23,6 @@ axiosUnauthorizedInstance.interceptors.response.use( ); export const axiosInstance = axios.create({ - baseURL: API_URL, timeout: 5000, headers: { ...commonHeaders, diff --git a/frontend/src/api/index.js b/frontend/src/api/index.js index 0bd0a78..68350ae 100644 --- a/frontend/src/api/index.js +++ b/frontend/src/api/index.js @@ -1 +1,2 @@ export { machinesApi } from "./machines"; +export { productsApi } from "./products"; diff --git a/frontend/src/api/machines.js b/frontend/src/api/machines.js index 6f9de38..58a0f1b 100644 --- a/frontend/src/api/machines.js +++ b/frontend/src/api/machines.js @@ -1,14 +1,17 @@ import { axiosInstance, ApiBase } from "./common"; +import { MACHINES_API_URL } from "../const"; + +const baseUrl = `${MACHINES_API_URL}/machines`; class MachinesApi extends ApiBase { list = async () => { - return axiosInstance.get(`/machines`, {}); + return axiosInstance.get(`${baseUrl}`, {}); }; get = async (machineId) => { - return axiosInstance.get(`/machines/${machineId}`, {}); + return axiosInstance.get(`${baseUrl}/${machineId}`, {}); }; listProducts = async (machineId) => { - return axiosInstance.get(`/machines/${machineId}/products`, {}); + return axiosInstance.get(`${baseUrl}/${machineId}/products`, {}); }; } diff --git a/frontend/src/api/products.js b/frontend/src/api/products.js new file mode 100644 index 0000000..9fa81b6 --- /dev/null +++ b/frontend/src/api/products.js @@ -0,0 +1,12 @@ +import { axiosInstance, ApiBase } from "./common"; +import { PRODUCTS_API_URL } from "../const"; + +const baseUrl = `${PRODUCTS_API_URL}/products`; + +class ProductsApi extends ApiBase { + get = async (productId) => { + return axiosInstance.get(`${baseUrl}/${productId}`, {}); + }; +} + +export const productsApi = new ProductsApi(); diff --git a/frontend/src/components/ProductCard.js b/frontend/src/components/ProductCard.js index 45846c4..47b6eaa 100644 --- a/frontend/src/components/ProductCard.js +++ b/frontend/src/components/ProductCard.js @@ -6,20 +6,21 @@ import Typography from "@mui/material/Typography"; import { CardActionArea } from "@mui/material"; import { PRODUCT_IMAGE_DIR } from "../const"; -function ProductCard({ product }) { - const productImg = `${PRODUCT_IMAGE_DIR}${product.image}`; +function ProductCard({ product, onClick }) { + const productImg = `${PRODUCT_IMAGE_DIR}/${product.image}`; return ( - - - + + { + onClick(product.id); + }} + > + - + {product.name} - - {product.description} - diff --git a/frontend/src/components/ProductModal.js b/frontend/src/components/ProductModal.js new file mode 100644 index 0000000..e0e6090 --- /dev/null +++ b/frontend/src/components/ProductModal.js @@ -0,0 +1,36 @@ +import * as React from "react"; +import Button from "@mui/material/Button"; +import Dialog from "@mui/material/Dialog"; +import DialogActions from "@mui/material/DialogActions"; +import DialogContent from "@mui/material/DialogContent"; +import DialogContentText from "@mui/material/DialogContentText"; +import DialogTitle from "@mui/material/DialogTitle"; +import CardMedia from "@mui/material/CardMedia"; +import { PRODUCT_IMAGE_DIR } from "../const"; + +function ProductModal({ product, onClose }) { + const productImg = `${PRODUCT_IMAGE_DIR}/${product.image}`; + + return ( + + {product.name} + + + {product.description} + + + + + + ); +} + +export { ProductModal }; diff --git a/frontend/src/components/Products.js b/frontend/src/components/Products.js index 0d02b15..71aab9c 100644 --- a/frontend/src/components/Products.js +++ b/frontend/src/components/Products.js @@ -2,12 +2,32 @@ import * as React from "react"; import Grid from "@mui/material/Unstable_Grid2"; import Typography from "@mui/material/Typography"; import { ProductCard } from "./ProductCard"; +import { ProductModal } from "./ProductModal"; +import { productsApi } from "../api"; function Products({ machineName, products, onSelect }) { + const [productModal, setProductModal] = React.useState({ isOpen: false, product: null }); + + const onProductSelect = (productId) => { + productsApi.get(productId).then((response) => { + setProductModal({ + isOpen: true, + product: response.data, + }); + }); + }; + + const onProductModalClose = () => { + setProductModal({ + isOpen: false, + productId: null, + }); + }; + const productItems = products.map((product) => { return ( - + ); }); @@ -21,6 +41,8 @@ function Products({ machineName, products, onSelect }) { {productItems} + + {productModal.isOpen && } ); } diff --git a/frontend/src/const.js b/frontend/src/const.js index 6e46ebd..d146677 100644 --- a/frontend/src/const.js +++ b/frontend/src/const.js @@ -1,2 +1,3 @@ -export const API_URL = process.env.REACT_APP_BACKEND_API_URL || "http://localhost:10000"; +export const MACHINES_API_URL = process.env.REACT_APP_MACHINES_API_URL || "http://localhost:4000"; +export const PRODUCTS_API_URL = process.env.REACT_APP_PRODUCTS_API_URL || "http://localhost:4001"; export const PRODUCT_IMAGE_DIR = "/static/products/"; diff --git a/frontend/src/pages/Home.js b/frontend/src/pages/Home.js index bd83bcd..d7231bb 100644 --- a/frontend/src/pages/Home.js +++ b/frontend/src/pages/Home.js @@ -18,9 +18,7 @@ function Home() { }, []); const onMachineSelect = (machineName, machineId) => { - console.log("selected:", machineName); machinesApi.listProducts(machineId).then((response) => { - console.log(response.data.products); setProductsData({ machineName, products: response.data.products, From aa22b487466464ca412417c1630105ae32c57d93 Mon Sep 17 00:00:00 2001 From: Eden Kirin Date: Tue, 23 Jan 2024 22:55:21 +0100 Subject: [PATCH 5/5] Frontend env arguments --- docker-compose-local.yml | 5 +++-- docker-compose.yml | 5 +++-- frontend/Dockerfile | 6 ++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/docker-compose-local.yml b/docker-compose-local.yml index 5aa1d64..583f6f6 100644 --- a/docker-compose-local.yml +++ b/docker-compose-local.yml @@ -58,8 +58,9 @@ services: build: context: ./frontend dockerfile: Dockerfile + args: + - REACT_APP_MACHINES_API_URL=http://localhost:10000 + - REACT_APP_PRODUCTS_API_URL=http://localhost:10000 network_mode: "host" - environment: - - REACT_APP_BACKEND_API_URL="http://localhost:10000" depends_on: - proxy diff --git a/docker-compose.yml b/docker-compose.yml index 057549b..5879528 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -69,10 +69,11 @@ services: build: context: ./frontend dockerfile: Dockerfile + args: + - REACT_APP_MACHINES_API_URL=http://localhost:10000 + - REACT_APP_PRODUCTS_API_URL=http://localhost:10000 networks: - frontend-net - environment: - - REACT_APP_BACKEND_API_URL="http://localhost:10000" ports: - "8080:80" depends_on: diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 44afcdf..e379901 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -3,6 +3,12 @@ FROM node:21 as node-builder WORKDIR /node-builder +ARG REACT_APP_MACHINES_API_URL +ARG REACT_APP_PRODUCTS_API_URL + +ENV REACT_APP_MACHINES_API_URL $REACT_APP_MACHINES_API_URL +ENV REACT_APP_PRODUCTS_API_URL $REACT_APP_PRODUCTS_API_URL + COPY ./package.json . COPY ./package-lock.json . COPY ./public ./public