766a6a8 ←98b5010antonApr 6, 2026 api

create architecture.excalidraw via macOS

A /docs/undefined +339 -0
A /docs/undefined +339 -0
1{
2 "type": "excalidraw",
3 "version": 2,
4 "elements": [
5 {
6 "id": "client",
7 "type": "rectangle",
8 "x": 50,
9 "y": 50,
10 "width": 160,
11 "height": 80,
12 "strokeColor": "#1e1e1e",
13 "backgroundColor": "#a5d8ff",
14 "fillStyle": "solid",
15 "strokeWidth": 2,
16 "roughness": 1,
17 "opacity": 100,
18 "angle": 0,
19 "roundness": { "type": 3 },
20 "isDeleted": false,
21 "boundElements": [
22 { "id": "client-text", "type": "text" },
23 { "id": "c-to-api", "type": "arrow" },
24 { "id": "c-to-git", "type": "arrow" }
25 ]
26 },
27 {
28 "id": "client-text",
29 "type": "text",
30 "x": 95,
31 "y": 78,
32 "width": 70,
33 "height": 25,
34 "text": "Client",
35 "fontSize": 20,
36 "fontFamily": 1,
37 "textAlign": "center",
38 "verticalAlign": "middle",
39 "strokeColor": "#1e1e1e",
40 "backgroundColor": "transparent",
41 "fillStyle": "solid",
42 "strokeWidth": 1,
43 "roughness": 1,
44 "opacity": 100,
45 "angle": 0,
46 "isDeleted": false,
47 "containerId": "client"
48 },
49 {
50 "id": "api",
51 "type": "rectangle",
52 "x": 350,
53 "y": 50,
54 "width": 160,
55 "height": 80,
56 "strokeColor": "#1e1e1e",
57 "backgroundColor": "#b2f2bb",
58 "fillStyle": "solid",
59 "strokeWidth": 2,
60 "roughness": 1,
61 "opacity": 100,
62 "angle": 0,
63 "roundness": { "type": 3 },
64 "isDeleted": false,
65 "boundElements": [
66 { "id": "api-text", "type": "text" },
67 { "id": "api-to-db", "type": "arrow" },
68 { "id": "api-to-cas", "type": "arrow" }
69 ]
70 },
71 {
72 "id": "api-text",
73 "type": "text",
74 "x": 382,
75 "y": 78,
76 "width": 96,
77 "height": 25,
78 "text": "API Worker",
79 "fontSize": 16,
80 "fontFamily": 1,
81 "textAlign": "center",
82 "verticalAlign": "middle",
83 "strokeColor": "#1e1e1e",
84 "backgroundColor": "transparent",
85 "fillStyle": "solid",
86 "strokeWidth": 1,
87 "roughness": 1,
88 "opacity": 100,
89 "angle": 0,
90 "isDeleted": false,
91 "containerId": "api"
92 },
93 {
94 "id": "git",
95 "type": "rectangle",
96 "x": 350,
97 "y": 180,
98 "width": 160,
99 "height": 80,
100 "strokeColor": "#1e1e1e",
101 "backgroundColor": "#d0bfff",
102 "fillStyle": "solid",
103 "strokeWidth": 2,
104 "roughness": 1,
105 "opacity": 100,
106 "angle": 0,
107 "roundness": { "type": 3 },
108 "isDeleted": false,
109 "boundElements": [
110 { "id": "git-text", "type": "text" },
111 { "id": "git-to-db", "type": "arrow" },
112 { "id": "git-to-cas", "type": "arrow" }
113 ]
114 },
115 {
116 "id": "git-text",
117 "type": "text",
118 "x": 382,
119 "y": 208,
120 "width": 96,
121 "height": 25,
122 "text": "Git Worker",
123 "fontSize": 16,
124 "fontFamily": 1,
125 "textAlign": "center",
126 "verticalAlign": "middle",
127 "strokeColor": "#1e1e1e",
128 "backgroundColor": "transparent",
129 "fillStyle": "solid",
130 "strokeWidth": 1,
131 "roughness": 1,
132 "opacity": 100,
133 "angle": 0,
134 "isDeleted": false,
135 "containerId": "git"
136 },
137 {
138 "id": "db",
139 "type": "rectangle",
140 "x": 650,
141 "y": 50,
142 "width": 160,
143 "height": 80,
144 "strokeColor": "#1e1e1e",
145 "backgroundColor": "#ffec99",
146 "fillStyle": "solid",
147 "strokeWidth": 2,
148 "roughness": 1,
149 "opacity": 100,
150 "angle": 0,
151 "roundness": { "type": 3 },
152 "isDeleted": false,
153 "boundElements": [
154 { "id": "db-text", "type": "text" }
155 ]
156 },
157 {
158 "id": "db-text",
159 "type": "text",
160 "x": 680,
161 "y": 78,
162 "width": 100,
163 "height": 25,
164 "text": "PostgreSQL",
165 "fontSize": 16,
166 "fontFamily": 1,
167 "textAlign": "center",
168 "verticalAlign": "middle",
169 "strokeColor": "#1e1e1e",
170 "backgroundColor": "transparent",
171 "fillStyle": "solid",
172 "strokeWidth": 1,
173 "roughness": 1,
174 "opacity": 100,
175 "angle": 0,
176 "isDeleted": false,
177 "containerId": "db"
178 },
179 {
180 "id": "cas",
181 "type": "rectangle",
182 "x": 650,
183 "y": 180,
184 "width": 160,
185 "height": 80,
186 "strokeColor": "#1e1e1e",
187 "backgroundColor": "#ffc9c9",
188 "fillStyle": "solid",
189 "strokeWidth": 2,
190 "roughness": 1,
191 "opacity": 100,
192 "angle": 0,
193 "roundness": { "type": 3 },
194 "isDeleted": false,
195 "boundElements": [
196 { "id": "cas-text", "type": "text" }
197 ]
198 },
199 {
200 "id": "cas-text",
201 "type": "text",
202 "x": 690,
203 "y": 208,
204 "width": 80,
205 "height": 25,
206 "text": "R2 CAS",
207 "fontSize": 16,
208 "fontFamily": 1,
209 "textAlign": "center",
210 "verticalAlign": "middle",
211 "strokeColor": "#1e1e1e",
212 "backgroundColor": "transparent",
213 "fillStyle": "solid",
214 "strokeWidth": 1,
215 "roughness": 1,
216 "opacity": 100,
217 "angle": 0,
218 "isDeleted": false,
219 "containerId": "cas"
220 },
221 {
222 "id": "c-to-api",
223 "type": "arrow",
224 "x": 210,
225 "y": 80,
226 "width": 140,
227 "height": 0,
228 "strokeColor": "#1e1e1e",
229 "backgroundColor": "transparent",
230 "fillStyle": "solid",
231 "strokeWidth": 2,
232 "roughness": 1,
233 "opacity": 100,
234 "angle": 0,
235 "points": [[0, 0], [140, 0]],
236 "startBinding": { "elementId": "client", "focus": 0, "gap": 1 },
237 "endBinding": { "elementId": "api", "focus": 0, "gap": 1 },
238 "isDeleted": false
239 },
240 {
241 "id": "c-to-git",
242 "type": "arrow",
243 "x": 210,
244 "y": 110,
245 "width": 140,
246 "height": 110,
247 "strokeColor": "#1e1e1e",
248 "backgroundColor": "transparent",
249 "fillStyle": "solid",
250 "strokeWidth": 2,
251 "roughness": 1,
252 "opacity": 100,
253 "angle": 0,
254 "points": [[0, 0], [140, 110]],
255 "startBinding": { "elementId": "client", "focus": 0, "gap": 1 },
256 "endBinding": { "elementId": "git", "focus": 0, "gap": 1 },
257 "isDeleted": false
258 },
259 {
260 "id": "api-to-db",
261 "type": "arrow",
262 "x": 510,
263 "y": 80,
264 "width": 140,
265 "height": 0,
266 "strokeColor": "#1e1e1e",
267 "backgroundColor": "transparent",
268 "fillStyle": "solid",
269 "strokeWidth": 2,
270 "roughness": 1,
271 "opacity": 100,
272 "angle": 0,
273 "points": [[0, 0], [140, 0]],
274 "startBinding": { "elementId": "api", "focus": 0, "gap": 1 },
275 "endBinding": { "elementId": "db", "focus": 0, "gap": 1 },
276 "isDeleted": false
277 },
278 {
279 "id": "api-to-cas",
280 "type": "arrow",
281 "x": 510,
282 "y": 110,
283 "width": 140,
284 "height": 110,
285 "strokeColor": "#1e1e1e",
286 "backgroundColor": "transparent",
287 "fillStyle": "solid",
288 "strokeWidth": 2,
289 "roughness": 1,
290 "opacity": 100,
291 "angle": 0,
292 "points": [[0, 0], [140, 110]],
293 "startBinding": { "elementId": "api", "focus": 0, "gap": 1 },
294 "endBinding": { "elementId": "cas", "focus": 0, "gap": 1 },
295 "isDeleted": false
296 },
297 {
298 "id": "git-to-db",
299 "type": "arrow",
300 "x": 510,
301 "y": 200,
302 "width": 140,
303 "height": 110,
304 "strokeColor": "#1e1e1e",
305 "backgroundColor": "transparent",
306 "fillStyle": "solid",
307 "strokeWidth": 2,
308 "roughness": 1,
309 "opacity": 100,
310 "angle": 0,
311 "points": [[0, 0], [140, -110]],
312 "startBinding": { "elementId": "git", "focus": 0, "gap": 1 },
313 "endBinding": { "elementId": "db", "focus": 0, "gap": 1 },
314 "isDeleted": false
315 },
316 {
317 "id": "git-to-cas",
318 "type": "arrow",
319 "x": 510,
320 "y": 220,
321 "width": 140,
322 "height": 0,
323 "strokeColor": "#1e1e1e",
324 "backgroundColor": "transparent",
325 "fillStyle": "solid",
326 "strokeWidth": 2,
327 "roughness": 1,
328 "opacity": 100,
329 "angle": 0,
330 "points": [[0, 0], [140, 0]],
331 "startBinding": { "elementId": "git", "focus": 0, "gap": 1 },
332 "endBinding": { "elementId": "cas", "focus": 0, "gap": 1 },
333 "isDeleted": false
334 }
335 ],
336 "appState": {
337 "viewBackgroundColor": "#ffffff"
338 }
339}