-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsystem-architecture
247 lines (247 loc) · 29.8 KB
/
system-architecture
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0" version="24.7.17">
<diagram name="Page-1" id="d66fe2ae-3e9f-cf2f-6d29-e24063ad5d60">
<mxGraphModel dx="1110" dy="1263" grid="1" gridSize="7" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="291" pageHeight="413" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="gZTpgJS-cmUbefmCrz4a-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;" parent="1" target="gZTpgJS-cmUbefmCrz4a-22" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="987" y="170" as="targetPoint" />
<Array as="points">
<mxPoint x="417" y="249" />
</Array>
<mxPoint x="417" y="105" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="woS77DfUE7qVaqpRjCta-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="693" y="42" as="targetPoint" />
<mxPoint x="595" y="-92" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-8" value="<b>Google OAuth Flow</b>" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;imageAspect=0;aspect=fixed;image=https://cdn4.iconfinder.com/data/icons/socialcones/508/Google-128.png;imageBorder=none;strokeWidth=1;perimeterSpacing=5;imageBackground=none;rounded=0;" parent="1" vertex="1">
<mxGeometry x="539" y="-117.5" width="50" height="50" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.05;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;strokeColor=#545454;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="675.125" y="80" as="targetPoint" />
<mxPoint x="447" y="80" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-12" value="" style="image;html=1;points=[];align=center;fontSize=12;image=img/lib/mscae/Cache_Redis_Product.svg;imageBorder=none;rounded=0;" parent="1" vertex="1">
<mxGeometry x="884.62" y="-114" width="50" height="42.015" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="gZTpgJS-cmUbefmCrz4a-19" target="iPADTMuKVbamn9YwnN-3-2" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1217.8000000000002" y="93" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-128" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="gZTpgJS-cmUbefmCrz4a-75" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1022" y="138" as="sourcePoint" />
<mxPoint x="1022" y="245" as="targetPoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-19" value="<b>API</b>" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda_function;perimeterSpacing=5;rounded=0;" parent="1" vertex="1">
<mxGeometry x="992" y="48" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-18" value="" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;imageAspect=0;aspect=fixed;image=https://cdn1.iconfinder.com/data/icons/ionicons-fill-vol-2/512/logo-vercel-128.png;rounded=0;" parent="1" vertex="1">
<mxGeometry x="1042" y="88" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="DFZmp7aHpEtEA7-cnIVW-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;" parent="1" source="gZTpgJS-cmUbefmCrz4a-22" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="701.2" y="136" as="targetPoint" />
<Array as="points">
<mxPoint x="701" y="178" />
<mxPoint x="701" y="178" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-22" value="<b>Web-Client SSR<br></b>" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda_function;perimeterSpacing=5;rounded=0;" parent="1" vertex="1">
<mxGeometry x="671" y="219" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-23" value="" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;imageAspect=0;aspect=fixed;image=https://cdn1.iconfinder.com/data/icons/ionicons-fill-vol-2/512/logo-vercel-128.png;rounded=0;" parent="1" vertex="1">
<mxGeometry x="721" y="259" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;entryX=0.864;entryY=1.025;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="gZTpgJS-cmUbefmCrz4a-19" target="gZTpgJS-cmUbefmCrz4a-12" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="927" y="-21" as="targetPoint" />
<Array as="points">
<mxPoint x="927" y="78" />
<mxPoint x="927" y="-21" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;" parent="1" source="gZTpgJS-cmUbefmCrz4a-31" target="gZTpgJS-cmUbefmCrz4a-19" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="896" y="84" />
<mxPoint x="896" y="84" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-31" value="<b>Edge Middleware</b>" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;strokeColor=#232F3E;fillColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda_function;rounded=0;perimeterSpacing=5;" parent="1" vertex="1">
<mxGeometry x="674.5" y="50" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-30" value="" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;imageAspect=0;aspect=fixed;image=https://cdn1.iconfinder.com/data/icons/ionicons-fill-vol-2/512/logo-vercel-128.png;rounded=0;" parent="1" vertex="1">
<mxGeometry x="727.8" y="90" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-43" value="" style="shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;image=https://th.bing.com/th/id/OIP.ALrp93DAXVgq0eyt4nFmMwAAAA?pid=ImgDet&rs=1;rounded=0;" parent="1" vertex="1">
<mxGeometry x="937" y="-87.5" width="15" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-60" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;entryX=-0.106;entryY=0.513;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="gZTpgJS-cmUbefmCrz4a-53" target="gZTpgJS-cmUbefmCrz4a-55" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="987.8" y="414.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-80" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;fontColor=#545454;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="gZTpgJS-cmUbefmCrz4a-53" target="gZTpgJS-cmUbefmCrz4a-94" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="889.5" y="577" as="targetPoint" />
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-127" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="gZTpgJS-cmUbefmCrz4a-53" target="gZTpgJS-cmUbefmCrz4a-75" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="902" y="455" as="sourcePoint" />
<mxPoint x="1022" y="301" as="targetPoint" />
<Array as="points">
<mxPoint x="903" y="343" />
<mxPoint x="1022" y="343" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-53" value="fetch-movies" style="editableCssRules=.*;html=1;shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE5Ljk4OTk5OTc3MTExODE2NCIgdmlld0JveD0iMCAwIDIwIDE5Ljk4OTk5OTc3MTExODE2NCI+JiN4YTsJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4mI3hhOwkuc3Qwe2ZpbGw6IzQyODVmNDt9JiN4YTsJLnN0MXtmaWxsOiM2NjlkZjY7fSYjeGE7CS5zdDJ7ZmlsbDojYWVjYmZhO30mI3hhOwk8L3N0eWxlPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zIDMuOTlMMCA2LjQydjcuMTNsMyAyLjQ0eiIvPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zIDMuOTlsLTMgNCAzLTJ6bS0zIDhsMyA0di0yeiIvPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0wIDE1Ljk5bDQgNCAyLTItNi02em0uMDEtOEw1Ljk5IDJsLTItMkwwIDMuOTl6Ii8+JiN4YTsJPHBhdGggY2xhc3M9InN0MSIgZD0iTTE3IDE2bDMtMi40MlY2LjQ0TDE3IDR6Ii8+JiN4YTsJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE3IDE2bDMtNC0zIDJ6bTMtOGwtMy00djJ6Ii8+JiN4YTsJPGcgY2xhc3M9InN0MiI+JiN4YTsJCTxwYXRoIGQ9Ik0yMCA0bC00LTQtMiAyIDYgNnptLS4wMSA4bC01Ljk4IDUuOTkgMiAyTDIwIDE2eiIvPiYjeGE7CQk8Y2lyY2xlIGN4PSI2IiBjeT0iOS45OSIgcj0iMSIvPiYjeGE7CQk8Y2lyY2xlIGN4PSIxMCIgY3k9IjkuOTkiIHI9IjEiLz4mI3hhOwkJPGNpcmNsZSBjeD0iMTMuOTkiIGN5PSI5Ljk5IiByPSIxIi8+JiN4YTsJPC9nPiYjeGE7PC9zdmc+;fontStyle=1;perimeterSpacing=5;rounded=0;imageBorder=none;" parent="1" vertex="1">
<mxGeometry x="868.18" y="394.5" width="42.5" height="42.5" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-64" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;" parent="1" source="gZTpgJS-cmUbefmCrz4a-55" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1117.8" y="414.5" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-119" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontColor=#545454;strokeColor=#545454;" parent="1" source="gZTpgJS-cmUbefmCrz4a-55" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1112" y="559" as="targetPoint" />
<Array as="points">
<mxPoint x="1023" y="559" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-55" value="rate-limiter" style="editableCssRules=.*;html=1;shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE5Ljk4OTk5OTc3MTExODE2NCIgdmlld0JveD0iMCAwIDIwIDE5Ljk4OTk5OTc3MTExODE2NCI+JiN4YTsJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4mI3hhOwkuc3Qwe2ZpbGw6IzQyODVmNDt9JiN4YTsJLnN0MXtmaWxsOiM2NjlkZjY7fSYjeGE7CS5zdDJ7ZmlsbDojYWVjYmZhO30mI3hhOwk8L3N0eWxlPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zIDMuOTlMMCA2LjQydjcuMTNsMyAyLjQ0eiIvPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zIDMuOTlsLTMgNCAzLTJ6bS0zIDhsMyA0di0yeiIvPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0wIDE1Ljk5bDQgNCAyLTItNi02em0uMDEtOEw1Ljk5IDJsLTItMkwwIDMuOTl6Ii8+JiN4YTsJPHBhdGggY2xhc3M9InN0MSIgZD0iTTE3IDE2bDMtMi40MlY2LjQ0TDE3IDR6Ii8+JiN4YTsJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE3IDE2bDMtNC0zIDJ6bTMtOGwtMy00djJ6Ii8+JiN4YTsJPGcgY2xhc3M9InN0MiI+JiN4YTsJCTxwYXRoIGQ9Ik0yMCA0bC00LTQtMiAyIDYgNnptLS4wMSA4bC01Ljk4IDUuOTkgMiAyTDIwIDE2eiIvPiYjeGE7CQk8Y2lyY2xlIGN4PSI2IiBjeT0iOS45OSIgcj0iMSIvPiYjeGE7CQk8Y2lyY2xlIGN4PSIxMCIgY3k9IjkuOTkiIHI9IjEiLz4mI3hhOwkJPGNpcmNsZSBjeD0iMTMuOTkiIGN5PSI5Ljk5IiByPSIxIi8+JiN4YTsJPC9nPiYjeGE7PC9zdmc+;fontStyle=1;perimeterSpacing=5;rounded=0;" parent="1" vertex="1">
<mxGeometry x="1000.75" y="393.25" width="42.5" height="42.5" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.097;entryY=1.031;entryDx=0;entryDy=0;entryPerimeter=0;jumpStyle=arc;jumpSize=8;strokeColor=#545454;" parent="1" source="gZTpgJS-cmUbefmCrz4a-53" target="gZTpgJS-cmUbefmCrz4a-12" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="890" y="283" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-63" value="Firestore" style="editableCssRules=.*;html=1;shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyIgd2lkdGg9IjMyMy45MDU2MTAzOTg2NzUxNSIgaGVpZ2h0PSIzNzYuNDIyMjk0OTYzNjg0MDciIHZpZXdCb3g9Ii0wLjA5NzAwMDAwMjg2MTAyMjk1IDAuMjg3OTk5OTg3NjAyMjMzOSA4NS42OTk5OTY5NDgyNDIxOSA5OS41OTUwMDEyMjA3MDMxMiI+JiN4YTs8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiYjeGE7CS5zdDB7ZmlsbDojYWVjYmZhO30mI3hhOwkuc3Qxe2ZpbGw6IzY2OWRmNjt9JiN4YTsJLnN0MntmaWxsOiM0Mjg1ZjQ7fSYjeGE7PC9zdHlsZT4mI3hhOwk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNLS4wOTcgNzUuODE1VjU1Ljg3NGw0Mi44NS0yMC4xODN2MTkuMDd6bTAtMzUuNDAzVjIwLjQ3MUw0Mi43NTMuMjg4djE5LjA3eiIvPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik04NS42MDMgNzUuODE1VjU1Ljg3NGwtNDIuODUtMjAuMTgzdjE5LjA3em0wLTM1LjQwM1YyMC40NzFMNDIuNzUzLjI4OHYxOS4wN3oiLz4mI3hhOwk8cGF0aCBjbGFzcz0ic3QyIiBkPSJNNDIuNzUzIDgwLjMxNGwxNi4yMTctNy41MjUgMjEuMDg0IDkuNzE3LTM3LjMwMSAxNy4zNzd6Ii8+JiN4YTs8L3N2Zz4=;fontStyle=1;rounded=0;" parent="1" vertex="1">
<mxGeometry x="1127.8" y="392" width="36.13" height="42.5" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-70" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;" parent="1" source="gZTpgJS-cmUbefmCrz4a-69" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="857.8" y="417" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-69" value="<b>Scheduled fetch-movies</b>" style="pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#252f3e;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.concepts.clock;fontColor=#232f3e;perimeterSpacing=5;rounded=0;" parent="1" vertex="1">
<mxGeometry x="682.8" y="394.5" width="45" height="45" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-73" value="" style="shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;image=https://www.inngest.com/favicon-may-2022.png;rounded=0;" parent="1" vertex="1">
<mxGeometry x="727.8" y="429.5" width="20" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-75" value="" style="shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;image=https://www.themoviedb.org/assets/2/v4/logos/v2/blue_square_2-d537fb228cf3ded904ef09b136fe3fec72548ebc1fea3fbbd1ad9e36364db38b.svg;rounded=0;perimeterSpacing=5;" parent="1" vertex="1">
<mxGeometry x="994.5" y="252" width="55" height="39.67" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-84" value="<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><b>API endpoints</b></blockquote><ul><li>authentication</li><li>session (anonymous/authenticated)</li><li>account (public/private)</li><li>movies (anonymous/authenticated)</li><li>poll (anonymous/authenticated)</li><li>search (authenticated)</li></ul>" style="text;align=left;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;glass=0;shadow=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;opacity=50;" parent="1" vertex="1">
<mxGeometry x="1077" y="-152" width="280" height="170" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-85" value="authentication" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;" parent="1" vertex="1">
<mxGeometry x="406" y="-119" width="110" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-86" value="session" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;" parent="1" vertex="1">
<mxGeometry x="709.5" y="-114" width="70" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-94" value="Secret Storage" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;imageAspect=0;aspect=fixed;image=https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-5/256/vault-thin-128.png;fontStyle=1;rounded=0;" parent="1" vertex="1">
<mxGeometry x="864.04" y="533.73" width="49.19" height="49.19" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-98" value="session" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;rotation=270;" parent="1" vertex="1">
<mxGeometry x="882" y="-14" width="70" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-99" value="movies" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;rotation=270;" parent="1" vertex="1">
<mxGeometry x="904.5" y="-14" width="70" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-103" value="polls, users, voting tokens" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;" parent="1" vertex="1">
<mxGeometry x="1087" y="38" width="105" height="30" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-104" value="pages, client side code" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;" parent="1" vertex="1">
<mxGeometry x="482" y="219" width="150" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-105" value="movie-details, poll-details, movie-search, polls, account" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;" parent="1" vertex="1">
<mxGeometry x="477" y="35" width="160" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-106" value="movies" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;rotation=270;" parent="1" vertex="1">
<mxGeometry x="651" y="169" width="70" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-108" value="rate-limit" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;" parent="1" vertex="1">
<mxGeometry x="709.5" y="-87.5" width="70" height="20" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-109" value="Billing API" style="editableCssRules=.*;html=1;shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyIgd2lkdGg9IjQyNCIgaGVpZ2h0PSI0MjQiIHZpZXdCb3g9IjAgMCA0MjQgNDI0Ij4mI3hhOwk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiYjeGE7CS5zdDB7ZmlsbDojNDI4NWY0O30mI3hhOwk8L3N0eWxlPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MjQgMHY0MjRIMFYwek0yMTIgOTcuODQ2Yy0zNy44ODQgMC03MC4xNjQgMjMuOTktODIuNDc4IDU3LjYwOGgwbC0zLjQwMy4wMDFjLTQyLjYzNCAwLTc3LjE5NiAzNC41NjItNzcuMTk2IDc3LjE5NnMzNC41NjIgNzcuMTk2IDc3LjE5NiA3Ny4xOTZoMCAxNzEuNzYzYzQyLjYzNCAwIDc3LjE5Ni0zNC41NjIgNzcuMTk2LTc3LjE5NnMtMzQuNTYyLTc3LjE5Ni03Ny4xOTYtNzcuMTk2aDBsLTMuNDAzLS4wMDFDMjgyLjE2NCAxMjEuODM3IDI0OS44ODQgOTcuODQ2IDIxMiA5Ny44NDZ6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz4mI3hhOzwvc3ZnPg==;fontStyle=1;rounded=0;" parent="1" vertex="1">
<mxGeometry x="1127.8" y="539.37" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-120" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontColor=#545454;strokeColor=#545454;" parent="1" source="gZTpgJS-cmUbefmCrz4a-113" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1182" y="559" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-113" value="rate-limiter" style="editableCssRules=.*;html=1;shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyIgd2lkdGg9IjIwIiBoZWlnaHQ9IjE5Ljk4OTk5OTc3MTExODE2NCIgdmlld0JveD0iMCAwIDIwIDE5Ljk4OTk5OTc3MTExODE2NCI+JiN4YTsJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4mI3hhOwkuc3Qwe2ZpbGw6IzQyODVmNDt9JiN4YTsJLnN0MXtmaWxsOiM2NjlkZjY7fSYjeGE7CS5zdDJ7ZmlsbDojYWVjYmZhO30mI3hhOwk8L3N0eWxlPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zIDMuOTlMMCA2LjQydjcuMTNsMyAyLjQ0eiIvPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zIDMuOTlsLTMgNCAzLTJ6bS0zIDhsMyA0di0yeiIvPiYjeGE7CTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0wIDE1Ljk5bDQgNCAyLTItNi02em0uMDEtOEw1Ljk5IDJsLTItMkwwIDMuOTl6Ii8+JiN4YTsJPHBhdGggY2xhc3M9InN0MSIgZD0iTTE3IDE2bDMtMi40MlY2LjQ0TDE3IDR6Ii8+JiN4YTsJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE3IDE2bDMtNC0zIDJ6bTMtOGwtMy00djJ6Ii8+JiN4YTsJPGcgY2xhc3M9InN0MiI+JiN4YTsJCTxwYXRoIGQ9Ik0yMCA0bC00LTQtMiAyIDYgNnptLS4wMSA4bC01Ljk4IDUuOTkgMiAyTDIwIDE2eiIvPiYjeGE7CQk8Y2lyY2xlIGN4PSI2IiBjeT0iOS45OSIgcj0iMSIvPiYjeGE7CQk8Y2lyY2xlIGN4PSIxMCIgY3k9IjkuOTkiIHI9IjEiLz4mI3hhOwkJPGNpcmNsZSBjeD0iMTMuOTkiIGN5PSI5Ljk5IiByPSIxIi8+JiN4YTsJPC9nPiYjeGE7PC9zdmc+;fontStyle=1;perimeterSpacing=5;rounded=0;" parent="1" vertex="1">
<mxGeometry x="1272.8" y="538.12" width="42.5" height="42.5" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-123" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontColor=#545454;strokeColor=#545454;" parent="1" source="gZTpgJS-cmUbefmCrz4a-114" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1294" y="527" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-114" value="Billing Notifications<br>" style="editableCssRules=.*;html=1;shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyIgd2lkdGg9IjE4LjMxOTk5OTY5NDgyNDIyIiBoZWlnaHQ9IjIwLjAwMDAwMTkwNzM0ODYzMyIgdmlld0JveD0iMCAwIDE4LjMxOTk5OTY5NDgyNDIyIDIwLjAwMDAwMTkwNzM0ODYzMyI+JiN4YTsJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4mI3hhOwkuc3Qwe2ZpbGw6IzY2OWRmNjt9JiN4YTsJLnN0MXtmaWxsOiM0Mjg1ZjQ7fSYjeGE7CS5zdDJ7ZmlsbDojYWVjYmZhO30mI3hhOwk8L3N0eWxlPiYjeGE7CTxkZWZzPiYjeGE7CQk8ZmlsdGVyIGlkPSJBIiB4PSI0LjY0IiB5PSI0LjE5IiB3aWR0aD0iMTQuNzMiIGhlaWdodD0iMTIuNzYiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4mI3hhOwkJCTxmZUZsb29kIGZsb29kLWNvbG9yPSIjZmZmIi8+JiN4YTsJCQk8ZmVCbGVuZCBpbj0iU291cmNlR3JhcGhpYyIvPiYjeGE7CQk8L2ZpbHRlcj4mI3hhOwkJPG1hc2sgaWQ9IkIiIHg9IjQuNjQiIHk9IjQuMTkiIHdpZHRoPSIxNC43MyIgaGVpZ2h0PSIxMi43NiIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+JiN4YTsJCQk8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyLjIzIiByPSIzLjU4IiBmaWx0ZXI9InVybCgjQSkiLz4mI3hhOwkJPC9tYXNrPiYjeGE7CTwvZGVmcz4mI3hhOwk8ZyBjbGFzcz0ic3QwIj4mI3hhOwkJPGNpcmNsZSBjeD0iMTYuMTMiIGN5PSI2LjIxIiByPSIxLjcyIi8+JiN4YTsJCTxjaXJjbGUgY3g9IjIuMTkiIGN5PSI2LjIxIiByPSIxLjcyIi8+JiN4YTsJCTxjaXJjbGUgY3g9IjkuMTYiIGN5PSIxOC4yOCIgcj0iMS43MiIvPiYjeGE7CTwvZz4mI3hhOwk8ZyBtYXNrPSJ1cmwoI0IpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMi44NCAtMikiPiYjeGE7CQk8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCguNSAtLjg3IC44NyAuNSAtNC41OSAyMC41MykiIGQ9Ik0xNC42OSAxMC4yMmgxLjU5djguMDRoLTEuNTl6IiBjbGFzcz0ic3QxIi8+JiN4YTsJCTxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDMzMCA4LjUyMyAxNC4yNDQpIiBkPSJNNC40OSAxMy40NWg4LjA0djEuNTlINC40OXoiIGNsYXNzPSJzdDEiLz4mI3hhOwkJPHBhdGggZD0iTTExLjIgNC4xOWgxLjU5djguMDRIMTEuMnoiIGNsYXNzPSJzdDEiLz4mI3hhOwk8L2c+JiN4YTsJPGcgY2xhc3M9InN0MiI+JiN4YTsJCTxjaXJjbGUgY3g9IjkuMTYiIGN5PSIxMC4yMyIgcj0iMi43OCIvPiYjeGE7CQk8Y2lyY2xlIGN4PSIyLjE5IiBjeT0iMTQuMjUiIHI9IjIuMTkiLz4mI3hhOwkJPGNpcmNsZSBjeD0iMTYuMTMiIGN5PSIxNC4yNSIgcj0iMi4xOSIvPiYjeGE7CQk8Y2lyY2xlIGN4PSI5LjE2IiBjeT0iMi4xOSIgcj0iMi4xOSIvPiYjeGE7CTwvZz4mI3hhOzwvc3ZnPg==;perimeterSpacing=5;fontStyle=1;rounded=0;" parent="1" vertex="1">
<mxGeometry x="1272.8" y="392.14" width="42.5" height="47.22" as="geometry" />
</mxCell>
<mxCell id="gZTpgJS-cmUbefmCrz4a-129" value="movie-details" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;rotation=90;" parent="1" vertex="1">
<mxGeometry x="992.0000000000001" y="178" width="96.3" height="20" as="geometry" />
</mxCell>
<mxCell id="woS77DfUE7qVaqpRjCta-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;" parent="1" source="I7EiVbq6P3UW2vEL_QE5-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="532" y="-94" as="targetPoint" />
<Array as="points">
<mxPoint x="418" y="-94" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="I7EiVbq6P3UW2vEL_QE5-1" value="Client" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;imageAspect=0;aspect=fixed;image=https://cdn4.iconfinder.com/data/icons/essential-3/32/381-Browser-128.png;perimeterSpacing=5;imageBackground=none;imageBorder=none;fontStyle=1;fontColor=#232f3e;" parent="1" vertex="1">
<mxGeometry x="393" y="55" width="50" height="50" as="geometry" />
</mxCell>
<mxCell id="DFZmp7aHpEtEA7-cnIVW-3" value="movie-details" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;rotation=0;" parent="1" vertex="1">
<mxGeometry x="910.6800000000002" y="322" width="96.3" height="20" as="geometry" />
</mxCell>
<mxCell id="woS77DfUE7qVaqpRjCta-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#545454;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="707" y="42" as="sourcePoint" />
<mxPoint x="875" y="-90" as="targetPoint" />
<Array as="points">
<mxPoint x="707" y="-91" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="woS77DfUE7qVaqpRjCta-8" value="movies-lists" style="text;strokeColor=none;align=center;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;fontColor=#545454;rotation=-90;" parent="1" vertex="1">
<mxGeometry x="826.0000000000001" y="199" width="96.3" height="20" as="geometry" />
</mxCell>
<mxCell id="iPADTMuKVbamn9YwnN-3-3" value="" style="shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;image=https://cdn.sanity.io/images/q3zajrd2/production/01ad0eb786c8260c4daa709fe8a6f57fb063655e-101x100.svg?fit=max&auto=format&w=96&q=75;rounded=0;labelBorderColor=none;textShadow=0;labelBackgroundColor=none;clipPath=inset(0% 0.5% 0% 0.5%);movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;" vertex="1" parent="1">
<mxGeometry x="910.6800000000001" y="567" width="19" height="19" as="geometry" />
</mxCell>
<mxCell id="iPADTMuKVbamn9YwnN-3-2" value="<b>DynamoDB</b>" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;shape=mxgraph.aws3.dynamo_db;fillColor=#2E73B8;gradientColor=none;" vertex="1" parent="1">
<mxGeometry x="1204" y="53.75" width="42" height="48.5" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>