Compare commits

..

4 Commits

Author SHA1 Message Date
a889a9f0b8 up
All checks were successful
/ build (push) Successful in 1m23s
2025-06-22 16:32:50 +02:00
71fc44acc5 change provider
All checks were successful
/ build (push) Successful in 42s
2025-04-01 22:09:36 +02:00
36cd9266b3 remove links
All checks were successful
/ build (push) Successful in 3m55s
2025-04-01 22:04:13 +02:00
21ff0825cc up python
All checks were successful
/ build (push) Successful in 37s
2025-03-04 20:07:53 +01:00
6 changed files with 134 additions and 139 deletions

View File

@ -158,7 +158,7 @@ services:
- traefik.http.services.fastapi.loadbalancer.server.port=8000 - traefik.http.services.fastapi.loadbalancer.server.port=8000
replicas: 2 replicas: 2
placement: placement:
max_replicas_per_node: 2 max_replicas_per_node: 1
constraints: constraints:
- node.labels.run == true - node.labels.run == true
@ -1030,30 +1030,28 @@ Huge gap in performance against Laravel Octane here, about twice better ! Withou
### FastAPI ### FastAPI
As a side note here, uvicorn is limited to 1 CPU core, so I use 2 replicas on each worker to use all CPU cores.
#### FastAPI scenario 1 #### FastAPI scenario 1
Iteration creation rate = **15/s** Iteration creation rate = **15/s**
```txt ```txt
checks.........................: 100.00% 39525 out of 39525 checks.........................: 100.00% 28764 out of 28764
data_received..................: 324 MB 5.2 MB/s data_received..................: 234 MB 3.7 MB/s
data_sent......................: 3.5 MB 56 kB/s data_sent......................: 2.6 MB 41 kB/s
dropped_iterations.............: 126 2.032659/s dropped_iterations.............: 336 5.300365/s
http_req_blocked...............: avg=22.84µs min=258ns med=1.01µs max=41.9ms p(90)=1.45µs p(95)=1.6µs http_req_blocked...............: avg=39.99µs min=242ns med=669ns max=68.16ms p(90)=1.14µs p(95)=1.32µs
http_req_connecting............: avg=1.32µs min=0s med=0s max=3.49ms p(90)=0s p(95)=0s http_req_connecting............: avg=1.66µs min=0s med=0s max=3.75ms p(90)=0s p(95)=0s
http_req_duration..............: avg=69.4ms min=6.28ms med=62.49ms max=323.87ms p(90)=131.32ms p(95)=147.63ms http_req_duration..............: avg=103.18ms min=6.22ms med=101.32ms max=452.09ms p(90)=139.92ms p(95)=157.15ms
{ expected_response:true }...: avg=69.4ms min=6.28ms med=62.49ms max=323.87ms p(90)=131.32ms p(95)=147.63ms { expected_response:true }...: avg=103.18ms min=6.22ms med=101.32ms max=452.09ms p(90)=139.92ms p(95)=157.15ms
http_req_failed................: 0.00% 0 out of 39525 http_req_failed................: 0.00% 0 out of 28764
http_req_receiving.............: avg=410.93µs min=24.46µs med=281.1µs max=17.76ms p(90)=784.35µs p(95)=1.12ms http_req_receiving.............: avg=460.02µs min=28.21µs med=334.44µs max=18.75ms p(90)=862.97µs p(95)=1.19ms
http_req_sending...............: avg=121.75µs min=14.48µs med=105.29µs max=11.05ms p(90)=179.47µs p(95)=221.68µs http_req_sending...............: avg=93.58µs min=21.19µs med=79.76µs max=3.26ms p(90)=141.54µs p(95)=167.69µs
http_req_tls_handshaking.......: avg=19.44µs min=0s med=0s max=28.07ms p(90)=0s p(95)=0s http_req_tls_handshaking.......: avg=35.6µs min=0s med=0s max=28.74ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=68.87ms min=5.63ms med=61.98ms max=323.69ms p(90)=130.68ms p(95)=147ms http_req_waiting...............: avg=102.63ms min=5.98ms med=100.76ms max=451.57ms p(90)=139.32ms p(95)=156.56ms
http_reqs......................: 39525 637.625912/s http_reqs......................: 28764 453.749133/s
iteration_duration.............: avg=3.57s min=822.25ms med=3.74s max=5.09s p(90)=4.25s p(95)=4.37s iteration_duration.............: avg=5.28s min=1.61s med=5.38s max=6.19s p(90)=5.71s p(95)=5.79s
iterations.....................: 775 12.502469/s iterations.....................: 564 8.897042/s
vus............................: 1 min=1 max=50 vus............................: 17 min=15 max=50
vus_max........................: 50 min=50 max=50 vus_max........................: 50 min=50 max=50
``` ```
@ -1065,13 +1063,13 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'Req/s', label: 'Req/s',
data: [ data: [
30, 575, 674, 684, 617, 668, 634, 638, 647, 50, 371, 331, 391, 475, 450, 464, 464, 467, 450,
621, 662, 661, 670, 659, 617, 672, 644, 653, 447, 467, 467, 455, 451, 458, 463, 485, 470, 476,
623, 606, 663, 650, 634, 666, 625, 652, 650, 449, 481, 485, 461, 476, 442, 455, 474, 454, 456,
671, 651, 617, 598, 620, 624, 626, 602, 657, 439, 478, 472, 436, 473, 453, 463, 471, 456, 455,
646, 649, 650, 638, 669, 640, 639, 636, 628, 439, 470, 456, 473, 465, 459, 468, 471, 475, 474,
636, 654, 651, 668, 643, 663, 645, 644, 618, 444, 484, 469, 466, 468, 448, 477, 449, 443, 482,
575, 627, 622, 660, 643, 644, 637, 626, 413 444, 452, 432, 374, 1
] ]
} }
] ]
@ -1086,12 +1084,12 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'VUs', label: 'VUs',
data: [ data: [
13, 18, 20, 24, 29, 33, 38, 41, 49, 47, 49, 49, 15, 27, 39, 50, 50, 50, 49, 48, 48, 50, 50, 50,
46, 49, 49, 50, 42, 47, 49, 50, 50, 48, 50, 49, 48, 46, 49, 50, 48, 49, 49, 50, 50, 50, 49, 48,
48, 46, 45, 50, 50, 49, 49, 50, 50, 47, 47, 48, 47, 48, 50, 47, 48, 50, 47, 50, 50, 48, 46, 49,
50, 48, 50, 46, 49, 50, 50, 49, 50, 48, 47, 49, 50, 50, 50, 49, 48, 50, 48, 49, 50, 50, 49, 44,
49, 48, 50, 49, 50, 49, 49, 48, 46, 48, 49, 49, 49, 49, 49, 48, 50, 48, 50, 50, 47, 50, 49, 50,
34, 1 45, 37, 17
] ]
} }
] ]
@ -1102,12 +1100,13 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'Duration (ms)', label: 'Duration (ms)',
data: [ data: [
19, 17, 24, 27, 36, 41, 48, 57, 64, 73, 71, 75, 21, 34, 77, 93, 102, 110, 107, 104, 105, 109,
73, 71, 76, 72, 77, 67, 70, 80, 73, 75, 74, 75, 112, 106, 105, 103, 106, 107, 106, 103, 103, 102,
78, 76, 73, 69, 74, 80, 79, 78, 78, 77, 81, 71, 108, 103, 102, 107, 103, 109, 106, 106, 107, 108,
74, 74, 75, 75, 71, 72, 76, 76, 78, 74, 72, 76, 112, 103, 103, 111, 105, 107, 105, 104, 107, 107,
71, 75, 70, 75, 75, 79, 84, 78, 77, 72, 74, 76, 115, 103, 108, 103, 107, 108, 105, 102, 101, 104,
74, 64, 27 112, 102, 105, 104, 105, 110, 104, 106, 108, 105,
111, 102, 85, 47, 8
] ]
} }
] ]
@ -1121,10 +1120,10 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'User', label: 'User',
data: [ data: [
0.02, 0.09, 0.72, 0.72, 0.02, 0.02, 0.1, 0.74,
0.76, 0.76, 0.75, 0.75, 0.78, 0.77, 0.79, 0.79,
0.75, 0.75, 0.76, 0.77, 0.78, 0.78, 0.78, 0.78,
0.78, 0.78, 0.17, 0.02, 0.78, 0.77, 0.78, 0.36,
0.02, 0.02, 0.02 0.02, 0.02, 0.02
], ],
borderColor: '#4bc0c0', borderColor: '#4bc0c0',
@ -1134,10 +1133,10 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'System', label: 'System',
data: [ data: [
0.01, 0.04, 0.22, 0.21, 0.01, 0.01, 0.04, 0.2,
0.22, 0.23, 0.22, 0.22, 0.21, 0.21, 0.21, 0.2,
0.22, 0.22, 0.21, 0.23, 0.21, 0.21, 0.21, 0.21,
0.22, 0.22, 0.06, 0.01, 0.21, 0.22, 0.21, 0.1,
0.02, 0.01, 0.01 0.02, 0.01, 0.01
], ],
borderColor: '#ff6384', borderColor: '#ff6384',
@ -1152,11 +1151,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'User', label: 'User',
data: [ data: [
0.02, 0.04, 0.32, 0.33, 0.02, 0.02, 0.37, 0.5,
0.34, 0.34, 0.34, 0.35, 0.5, 0.49, 0.48, 0.5,
0.34, 0.33, 0.34, 0.33, 0.49, 0.5, 0.49, 0.5,
0.34, 0.35, 0.11, 0.02, 0.49, 0.5, 0.41, 0.02,
0.02, 0.02, 0.02 0.03, 0.02, 0.02
], ],
borderColor: '#4bc0c0', borderColor: '#4bc0c0',
backgroundColor: '#4bc0c0', backgroundColor: '#4bc0c0',
@ -1165,11 +1164,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'System', label: 'System',
data: [ data: [
0.03, 0.03, 0.16, 0.2, 0.02, 0.02, 0.33, 0.34,
0.19, 0.2, 0.21, 0.23, 0.34, 0.33, 0.32, 0.35,
0.23, 0.19, 0.22, 0.18, 0.34, 0.35, 0.36, 0.33,
0.23, 0.2, 0.07, 0.02, 0.32, 0.36, 0.33, 0.02,
0.02, 0.03, 0.03 0.02, 0.02, 0.02
], ],
borderColor: '#ff6384', borderColor: '#ff6384',
backgroundColor: '#ff6384', backgroundColor: '#ff6384',
@ -1186,24 +1185,24 @@ vus_max........................: 50 min=50 max=50
Iteration creation rate = **2/s** Iteration creation rate = **2/s**
```txt ```txt
checks.........................: 67.75% 35254 out of 52029 checks.........................: 100.00% 72770 out of 72770
data_received..................: 92 MB 1.0 MB/s data_received..................: 145 MB 1.6 MB/s
data_sent......................: 3.8 MB 42 kB/s data_sent......................: 5.5 MB 61 kB/s
dropped_iterations.............: 70 0.777606/s dropped_iterations.............: 66 0.733176/s
http_req_blocked...............: avg=23.08µs min=232ns med=s max=103.63ms p(90)=1.42µs p(95)=1.56µs http_req_blocked...............: avg=14.03µs min=198ns med=645ns max=144.52ms p(90)=1.11µs p(95)=1.27µs
http_req_connecting............: avg=977ns min=0s med=0s max=5.29ms p(90)=0s p(95)=0s http_req_connecting............: avg=629ns min=0s med=0s max=5.17ms p(90)=0s p(95)=0s
http_req_duration..............: avg=74.22ms min=3.71ms med=57.69ms max=366.12ms p(90)=157.54ms p(95)=180.86ms http_req_duration..............: avg=50.94ms min=3.78ms med=38.97ms max=384.02ms p(90)=107.46ms p(95)=136.98ms
{ expected_response:true }...: avg=68.87ms min=3.71ms med=52.82ms max=366.12ms p(90)=147.21ms p(95)=170.41ms { expected_response:true }...: avg=50.94ms min=3.78ms med=38.97ms max=384.02ms p(90)=107.46ms p(95)=136.98ms
http_req_failed................: 32.24% 16775 out of 52029 http_req_failed................: 0.00% 0 out of 72770
http_req_receiving.............: avg=237.94µs min=18.29µs med=130.97µs max=11.5ms p(90)=498.83µs p(95)=758.8µs http_req_receiving.............: avg=200.09µs min=18.28µs med=107.44µs max=18.54ms p(90)=399.04µs p(95)=632µs
http_req_sending...............: avg=116.57µs min=16.04µs med=104.78µs max=5.81ms p(90)=174.59µs p(95)=212.82µs http_req_sending...............: avg=86.57µs min=16.71µs med=73.65µs max=13.95ms p(90)=132.89µs p(95)=158.51µs
http_req_tls_handshaking.......: avg=19.29µs min=0s med=0s max=27.95ms p(90)=0s p(95)=0s http_req_tls_handshaking.......: avg=10.86µs min=0s med=0s max=28.74ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=73.86ms min=3.02ms med=57.38ms max=365.81ms p(90)=157.13ms p(95)=180.31ms http_req_waiting...............: avg=50.66ms min=3.64ms med=38.7ms max=383.81ms p(90)=107.11ms p(95)=136.61ms
http_reqs......................: 52029 577.972273/s http_reqs......................: 72770 808.381614/s
iteration_duration.............: avg=1m26s min=1m26s med=1m26s max=1m26s p(90)=1m26s p(95)=1m26s iteration_duration.............: avg=1m6s min=49.42s med=1m8s max=1m19s p(90)=1m18s p(95)=1m18s
iterations.....................: 3 0.033326/s iterations.....................: 18 0.199957/s
vus............................: 47 min=2 max=50 vus............................: 37 min=2 max=50
vus_max........................: 50 min=50 max=50 vus_max........................: 50 min=50 max=50
``` ```
{{< tabs >}} {{< tabs >}}
@ -1214,15 +1213,14 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'Req/s', label: 'Req/s',
data: [ data: [
34, 277, 442, 502, 566, 530, 612, 611, 593, 630, 577, 734, 921, 803, 822, 870, 809, 859, 751, 834, 825,
606, 619, 529, 568, 567, 599, 606, 559, 567, 557, 613, 786, 779, 811, 928, 869, 802, 802, 802, 832, 802,
604, 558, 617, 580, 607, 586, 581, 615, 564, 610, 612, 798, 824, 768, 845, 825, 762, 860, 758, 812, 813,
576, 596, 561, 610, 602, 561, 616, 571, 612, 604, 577, 808, 783, 772, 797, 831, 835, 799, 781, 844, 824,
586, 593, 595, 598, 566, 599, 592, 589, 585, 590, 603, 787, 801, 769, 819, 799, 774, 837, 776, 837, 826,
596, 608, 580, 571, 580, 583, 598, 606, 541, 581, 575, 821, 776, 791, 816, 838, 792, 900, 795, 815, 807,
595, 580, 591, 625, 577, 584, 601, 591, 585, 592, 620, 781, 819, 729, 848, 861, 839, 872, 762, 796, 902,
598, 574, 598, 571, 599, 596, 592, 603, 590, 593, 578, 790, 791, 791, 830, 815, 835, 832, 583
599, 585, 113
] ]
} }
] ]
@ -1237,14 +1235,13 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'VUs', label: 'VUs',
data: [ data: [
2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,
26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48,
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49,
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 49, 48, 48, 48, 48, 47, 47, 46,
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 46, 46, 45, 44, 44, 44, 44, 43, 43, 42, 42, 40,
50, 50, 48, 47, 47, 47 40, 39, 38, 37, 37, 37
] ]
} }
] ]
@ -1255,14 +1252,13 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'Duration (ms)', label: 'Duration (ms)',
data: [ data: [
28, 11, 11, 14, 16, 21, 21, 25, 28, 30, 36, 37, 29, 30, 37, 38, 39, 44, 43, 53, 49, 53, 58, 61,
40, 50, 50, 56, 55, 58, 64, 67, 73, 71, 75, 83, 61, 54, 57, 62, 62, 62, 61, 62, 61, 61, 65, 59,
79, 84, 83, 83, 88, 81, 89, 82, 81, 86, 83, 89, 60, 66, 59, 65, 61, 62, 62, 63, 65, 63, 60, 60,
81, 85, 87, 80, 88, 82, 81, 88, 84, 83, 84, 86, 61, 63, 59, 60, 62, 64, 65, 60, 63, 65, 59, 64,
86, 84, 83, 85, 86, 84, 81, 85, 81, 86, 88, 83, 59, 60, 61, 62, 62, 58, 59, 60, 53, 60, 57, 58,
86, 85, 83, 91, 86, 87, 86, 85, 85, 80, 84, 85, 57, 57, 61, 53, 50, 53, 51, 56, 54, 46, 54, 50,
83, 84, 85, 85, 82, 83, 85, 84, 84, 86, 84, 84, 51, 48, 47, 45, 45, 50
84, 82, 86, 81, 81, 79, 80
] ]
} }
] ]
@ -1276,11 +1272,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'User', label: 'User',
data: [ data: [
0.02, 0.03, 0.53, 0.76, 0.51, 0.71, 0.76, 0.7,
0.8, 0.81, 0.83, 0.83, 0.72, 0.72, 0.74, 0.77,
0.83, 0.83, 0.83, 0.83, 0.72, 0.73, 0.75, 0.74,
0.8, 0.75, 0.83, 0.8, 0.73, 0.78, 0.77, 0.66,
0.83, 0.8, 0.75 0.76, 0.6, 0.02
], ],
borderColor: '#4bc0c0', borderColor: '#4bc0c0',
backgroundColor: '#4bc0c0', backgroundColor: '#4bc0c0',
@ -1289,11 +1285,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'System', label: 'System',
data: [ data: [
0.02, 0.02, 0.12, 0.17, 0.15, 0.2, 0.2, 0.18,
0.17, 0.17, 0.17, 0.17, 0.19, 0.18, 0.19, 0.2,
0.17, 0.17, 0.17, 0.17, 0.19, 0.19, 0.19, 0.19,
0.17, 0.16, 0.17, 0.17, 0.19, 0.19, 0.18, 0.17,
0.17, 0.17, 0.16 0.2, 0.16, 0.01
], ],
borderColor: '#ff6384', borderColor: '#ff6384',
backgroundColor: '#ff6384', backgroundColor: '#ff6384',
@ -1307,11 +1303,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'User', label: 'User',
data: [ data: [
0.02, 0.02, 0.17, 0.26, 0.42, 0.47, 0.48, 0.51,
0.24, 0.21, 0.22, 0.21, 0.51, 0.52, 0.49, 0.52,
0.22, 0.23, 0.22, 0.22, 0.52, 0.52, 0.51, 0.53,
0.22, 0.23, 0.22, 0.22, 0.51, 0.52, 0.49, 0.5,
0.23, 0.22, 0.22 0.52, 0.12, 0.03
], ],
borderColor: '#4bc0c0', borderColor: '#4bc0c0',
backgroundColor: '#4bc0c0', backgroundColor: '#4bc0c0',
@ -1320,11 +1316,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'System', label: 'System',
data: [ data: [
0.02, 0.02, 0.13, 0.21, 0.15, 0.29, 0.37, 0.44,
0.24, 0.26, 0.26, 0.22, 0.43, 0.46, 0.42, 0.47,
0.23, 0.26, 0.24, 0.26, 0.47, 0.45, 0.46, 0.46,
0.26, 0.25, 0.26, 0.26, 0.41, 0.46, 0.39, 0.39,
0.26, 0.26, 0.26 0.42, 0.11, 0.02
], ],
borderColor: '#ff6384', borderColor: '#ff6384',
backgroundColor: '#ff6384', backgroundColor: '#ff6384',
@ -2292,13 +2288,13 @@ Here are the final req/s results for each framework against PgSQL database.
borderColor: "#0f766e", borderColor: "#0f766e",
backgroundColor: "#0f766e", backgroundColor: "#0f766e",
data: [ data: [
30, 575, 674, 684, 617, 668, 634, 638, 647, 50, 371, 331, 391, 475, 450, 464, 464, 467, 450,
621, 662, 661, 670, 659, 617, 672, 644, 653, 447, 467, 467, 455, 451, 458, 463, 485, 470, 476,
623, 606, 663, 650, 634, 666, 625, 652, 650, 449, 481, 485, 461, 476, 442, 455, 474, 454, 456,
671, 651, 617, 598, 620, 624, 626, 602, 657, 439, 478, 472, 436, 473, 453, 463, 471, 456, 455,
646, 649, 650, 638, 669, 640, 639, 636, 628, 439, 470, 456, 473, 465, 459, 468, 471, 475, 474,
636, 654, 651, 668, 643, 663, 645, 644, 618, 444, 484, 469, 466, 468, 448, 477, 449, 443, 482,
575, 627, 622, 660, 643, 644, 637, 626, 413 444, 452, 432, 374, 1
], ],
}, },
{ {
@ -2389,15 +2385,14 @@ Here are the final req/s results for each framework against PgSQL database.
borderColor: "#0f766e", borderColor: "#0f766e",
backgroundColor: "#0f766e", backgroundColor: "#0f766e",
data: [ data: [
34, 277, 442, 502, 566, 530, 612, 611, 593, 630, 577, 734, 921, 803, 822, 870, 809, 859, 751, 834, 825,
606, 619, 529, 568, 567, 599, 606, 559, 567, 557, 613, 786, 779, 811, 928, 869, 802, 802, 802, 832, 802,
604, 558, 617, 580, 607, 586, 581, 615, 564, 610, 612, 798, 824, 768, 845, 825, 762, 860, 758, 812, 813,
576, 596, 561, 610, 602, 561, 616, 571, 612, 604, 577, 808, 783, 772, 797, 831, 835, 799, 781, 844, 824,
586, 593, 595, 598, 566, 599, 592, 589, 585, 590, 603, 787, 801, 769, 819, 799, 774, 837, 776, 837, 826,
596, 608, 580, 571, 580, 583, 598, 606, 541, 581, 575, 821, 776, 791, 816, 838, 792, 900, 795, 815, 807,
595, 580, 591, 625, 577, 584, 601, 591, 585, 592, 620, 781, 819, 729, 848, 861, 839, 872, 762, 796, 902,
598, 574, 598, 571, 599, 596, 592, 603, 590, 593, 578, 790, 791, 791, 830, 815, 835, 832, 583
599, 585, 113
], ],
}, },
{ {

View File

@ -70,11 +70,8 @@
title: Vuetify Admin title: Vuetify Admin
date: 11/2020 date: 11/2020
repo: okami101/vuetify-admin repo: okami101/vuetify-admin
demo: https://va-demo.okami101.io/
docs: https://www.okami101.io/vuetify-admin
- name: laravel-rad-stack - name: laravel-rad-stack
title: Laravel RAD Stack title: Laravel RAD Stack
date: 10/2021 date: 10/2021
repo: adr1enbe4udou1n/laravel-rad-stack repo: adr1enbe4udou1n/laravel-rad-stack
demo: https://laravel-rad-stack.okami101.io/

View File

@ -74,8 +74,8 @@
{{ end }} {{ end }}
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<div class="flex items-center gap-4"> <div class="flex items-center gap-4">
<img src="/kube.png" width="30" height="30" alt="Kubernetes" <img src="/talos-logo.svg" width="30" height="30" alt="Talos Linux"
title="Run on K3s over Hetzner Cloud" /> title="Run on Talos Linux over Hetzner Cloud" />
</div> </div>
<div class="hidden lg:block"> <div class="hidden lg:block">
{{/* Copyright */}} {{/* Copyright */}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

3
static/talos-logo.svg Normal file
View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 203.74 226.05"><defs><style>.cls-1{fill:url(#linear-gradient);}.cls-2{fill:url(#linear-gradient-2);}.cls-3{fill:url(#linear-gradient-3);}.cls-4{fill:url(#linear-gradient-4);}.cls-5{fill:url(#linear-gradient-5);}</style><linearGradient id="linear-gradient" x1="101.85" y1="-15.19" x2="101.85" y2="237.81" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffd200"/><stop offset="0.06" stop-color="#ffb500"/><stop offset="0.14" stop-color="#ff8c00"/><stop offset="0.21" stop-color="#ff7300"/><stop offset="0.26" stop-color="#ff6a00"/><stop offset="0.33" stop-color="#fc4f0e"/><stop offset="0.43" stop-color="#f92f1e"/><stop offset="0.51" stop-color="#f81b27"/><stop offset="0.57" stop-color="#f7142b"/><stop offset="0.68" stop-color="#df162e"/><stop offset="0.79" stop-color="#af1a38"/><stop offset="1" stop-color="#4b214c"/></linearGradient><linearGradient id="linear-gradient-2" x1="24.84" y1="-15.19" x2="24.84" y2="237.81" xlink:href="#linear-gradient"/><linearGradient id="linear-gradient-3" x1="178.9" y1="-15.19" x2="178.9" y2="237.81" xlink:href="#linear-gradient"/><linearGradient id="linear-gradient-4" x1="145.06" y1="-15.19" x2="145.06" y2="237.81" xlink:href="#linear-gradient"/><linearGradient id="linear-gradient-5" x1="58.64" y1="-15.19" x2="58.64" y2="237.81" xlink:href="#linear-gradient"/></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M101.89,226.05c2.85,0,5.67-.15,8.46-.35V.35c-2.8-.21-5.62-.35-8.48-.35s-5.7.14-8.52.35V225.69c2.81.21,5.64.35,8.5.36Z"/><path class="cls-2" d="M11.56,50.9,9.12,48.47A112.82,112.82,0,0,0,.2,63.61c29.42,29.89,32.52,44.31,32.48,49.14C32.57,125,17.58,144.21,0,162a113.69,113.69,0,0,0,8.84,15.15c1-1,1.95-1.92,2.92-2.9,25.37-25.54,37.77-45.61,37.92-61.38S37.36,77,11.56,50.9Z"/><path class="cls-3" d="M192,174.29l2.92,2.9A113.69,113.69,0,0,0,203.74,162c-17.57-17.83-32.56-37.09-32.68-49.29-.11-11.9,14.79-31.15,32.46-49.18a112.88,112.88,0,0,0-8.9-15.1l-2.44,2.43c-25.8,26.05-38.27,46.34-38.12,62S166.61,148.75,192,174.29Z"/><path class="cls-4" d="M140.68,112.83c0-22,9.81-58.58,24.92-93.15A113,113,0,0,0,150.45,11c-16.54,37.27-26.78,76.91-26.78,101.87,0,24.15,11.09,64.23,27.93,101.7a113,113,0,0,0,14.84-8.77C150.85,170.73,140.68,134.07,140.68,112.83Z"/><path class="cls-5" d="M80,112.83C80,87.74,69.35,47.88,53,11.07a112.76,112.76,0,0,0-14.93,8.64C53.21,54.26,63,90.85,63,112.83c0,21.23-10.17,57.88-25.76,92.91a113.66,113.66,0,0,0,14.84,8.77C68.94,177.05,80,137,80,112.83Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB