@digitaldefiance/express-suite-starter 2.3.5 → 2.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -2
- package/scaffolding/api/.env.example.mustache +52 -0
- package/scaffolding/api/src/assets/.gitkeep +0 -0
- package/scaffolding/api/src/main.ts.mustache +19 -0
- package/scaffolding/api/src/views/index.ejs +34 -0
- package/scaffolding/api-lib/src/index.ts +9 -0
- package/scaffolding/api-lib/src/lib/application.ts +35 -0
- package/scaffolding/api-lib/src/lib/constants.ts.mustache +10 -0
- package/scaffolding/api-lib/src/lib/documents/index.ts +1 -0
- package/scaffolding/api-lib/src/lib/documents/user.ts +17 -0
- package/scaffolding/api-lib/src/lib/environment.ts +52 -0
- package/scaffolding/api-lib/src/lib/interfaces/constants.ts +9 -0
- package/scaffolding/api-lib/src/lib/interfaces/environment-aws.ts +7 -0
- package/scaffolding/api-lib/src/lib/interfaces/environment.ts +9 -0
- package/scaffolding/api-lib/src/lib/middlewares.ts.mustache +113 -0
- package/scaffolding/api-lib/src/lib/models/email-token.ts +12 -0
- package/scaffolding/api-lib/src/lib/models/mnemonic.ts +12 -0
- package/scaffolding/api-lib/src/lib/models/role.ts +12 -0
- package/scaffolding/api-lib/src/lib/models/used-direct-login-token.ts +12 -0
- package/scaffolding/api-lib/src/lib/models/user-role.ts +12 -0
- package/scaffolding/api-lib/src/lib/models/user.ts +14 -0
- package/scaffolding/api-lib/src/lib/routers/api.ts +23 -0
- package/scaffolding/api-lib/src/lib/routers/app.ts +31 -0
- package/scaffolding/api-lib/src/lib/routers/index.ts +2 -0
- package/scaffolding/api-lib/src/lib/schemas/index.ts +2 -0
- package/scaffolding/api-lib/src/lib/schemas/schema.ts +53 -0
- package/scaffolding/api-lib/src/lib/schemas/user.ts +13 -0
- package/scaffolding/api-lib/src/lib/services/email.ts +109 -0
- package/scaffolding/api-lib/src/lib/services/index.ts +1 -0
- package/scaffolding/api-lib/src/lib/shared-types.ts +172 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/.env.example +3 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/Dockerfile +6 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/devcontainer.json.mustache +31 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/docker-compose.yml +31 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/load-env.sh +20 -0
- package/scaffolding/devcontainer-mongodb/.devcontainer/post-create.sh.hbs +54 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/.env.example +14 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/Dockerfile +38 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/Mongo.Dockerfile +24 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/devcontainer.json +69 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/docker-compose.yml +66 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/entrypoint.sh +29 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/load-env.sh +20 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/mongodb_entrypoint.sh +124 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/mongodb_healthcheck.sh +36 -0
- package/scaffolding/devcontainer-mongodb-replicaset/.devcontainer/post-create.sh.hbs +54 -0
- package/scaffolding/devcontainer-simple/.devcontainer/.env.example +4 -0
- package/scaffolding/devcontainer-simple/.devcontainer/devcontainer.json.mustache +60 -0
- package/scaffolding/devcontainer-simple/.devcontainer/post-create.sh.hbs +72 -0
- package/scaffolding/inituserdb/.env.example.mustache +9 -0
- package/scaffolding/inituserdb/src/main.ts.mustache +178 -0
- package/scaffolding/lib/src/index.ts.mustache +6 -0
- package/scaffolding/lib/src/lib/constants.ts.mustache +15 -0
- package/scaffolding/lib/src/lib/ecies-config.ts +10 -0
- package/scaffolding/lib/src/lib/enumerations/{{workspaceName}}-string-key.ts.mustache +5 -0
- package/scaffolding/lib/src/lib/i18n-setup.ts.mustache +99 -0
- package/scaffolding/lib/src/lib/interfaces/constants.ts +13 -0
- package/scaffolding/lib/src/lib/strings-collection.ts.mustache +45 -0
- package/scaffolding/react/src/app/app.tsx.mustache +170 -0
- package/scaffolding/react/src/app/menus/extraMenu.tsx +20 -0
- package/scaffolding/react/src/app/menus/index.ts +5 -0
- package/scaffolding/react/src/app/pages/SplashPage.tsx +60 -0
- package/scaffolding/react/src/app/theme.tsx.mustache +91 -0
- package/scaffolding/react/src/assets/albatross.ico +0 -0
- package/scaffolding/react/src/assets/albatross.png +0 -0
- package/scaffolding/react/src/assets/albatross.svg +108 -0
- package/scaffolding/react/src/assets/fonts/allroundgothic-xlig.otf +0 -0
- package/scaffolding/react/src/assets/fonts/allroundgothic-xlig.ttf +0 -0
- package/scaffolding/react/src/assets/fonts/allroundgothic-xlig.woff +0 -0
- package/scaffolding/react/src/assets/fonts/allroundgothic-xlig.woff2 +0 -0
- package/scaffolding/react/src/assets/gen-by-albatross.png +0 -0
- package/scaffolding/react/src/assets/gen-by-albatross.svg +124 -0
- package/scaffolding/react/src/config/ecies.ts +10 -0
- package/scaffolding/react/src/config/runtime-config.ts +25 -0
- package/scaffolding/react/src/environments/environment.prod.ts.mustache +16 -0
- package/scaffolding/react/src/environments/environment.ts +15 -0
- package/scaffolding/react/src/interfaces/environment.ts +5 -0
- package/scaffolding/react/src/main.tsx +22 -0
- package/scaffolding/react/src/styles.scss +103 -0
- package/scaffolding/react/src/test-setup.ts +1 -0
- package/scaffolding/react-lib/src/index.ts +6 -0
- package/scaffolding/react-lib/src/theme/theme.tsx +67 -0
- package/scaffolding/root/.github/dependabot.yml +11 -0
- package/scaffolding/root/.github/workflows/ci.yml +44 -0
- package/scaffolding/root/.vscode/extensions.json +9 -0
- package/scaffolding/root/DEPLOYMENT.md +104 -0
- package/scaffolding/root/do-yarn.sh +148 -0
- package/scaffolding/root/ensure-git-globals.sh +30 -0
- package/scaffolding/root/eslint.config.mjs +70 -0
- package/scaffolding/root/list-scripts.sh +12 -0
- package/scaffolding/root/npm-install-globals.sh +5 -0
- package/scaffolding/root/nuke-node-modules.sh +23 -0
- package/scaffolding/root/recover-yarn.sh +37 -0
- package/scaffolding/root/reset.sh.mustache +25 -0
- package/scaffolding/root/setup-nvm.sh +15 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1600 1600">
|
|
3
|
+
<defs>
|
|
4
|
+
<style>
|
|
5
|
+
.cls-1 {
|
|
6
|
+
fill: #433834;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.cls-2, .cls-3, .cls-4, .cls-5, .cls-6 {
|
|
10
|
+
mix-blend-mode: multiply;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.cls-2, .cls-5 {
|
|
14
|
+
opacity: .2;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.cls-2, .cls-7 {
|
|
18
|
+
fill: #bebfaf;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.cls-3, .cls-4, .cls-6 {
|
|
22
|
+
opacity: .3;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.cls-8 {
|
|
26
|
+
fill: #9ca6b2;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.cls-9 {
|
|
30
|
+
fill: #d5561e;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.cls-10 {
|
|
34
|
+
isolation: isolate;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.cls-4 {
|
|
38
|
+
fill: #60260f;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.cls-11 {
|
|
42
|
+
fill: #fcfcf5;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.cls-12 {
|
|
46
|
+
font-size: 131px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.cls-12, .cls-13 {
|
|
50
|
+
font-family: AllRoundGothic-XLig, 'All Round Gothic';
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.cls-13 {
|
|
54
|
+
font-size: 72px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.cls-14 {
|
|
58
|
+
fill: #352b28;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.cls-5 {
|
|
62
|
+
fill: #a7a9ac;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.cls-6 {
|
|
66
|
+
fill: #4d5156;
|
|
67
|
+
}
|
|
68
|
+
</style>
|
|
69
|
+
</defs>
|
|
70
|
+
<g class="cls-10">
|
|
71
|
+
<g id="Layer_2" data-name="Layer 2">
|
|
72
|
+
<g>
|
|
73
|
+
<ellipse class="cls-5" cx="872.69" cy="1277.99" rx="380.57" ry="77.75"/>
|
|
74
|
+
<g>
|
|
75
|
+
<g>
|
|
76
|
+
<path class="cls-8" d="M976.47,1201.8c0-3.09.18-6.15.52-9.17.46-4.06-3.13-7.68-8.23-8.31-11.33-1.4-23.42-2.16-35.98-2.16-64.56,0-116.89,20.06-116.89,44.8s52.33,44.8,116.89,44.8c21.23,0,41.13-2.17,58.29-5.97,5.02-1.11,7.42-5.65,4.79-9.21-18.67-25.27,22.96-22.5,19.15-34.59-2.55-8.09-38.54-11.53-38.54-20.17Z"/>
|
|
77
|
+
<g class="cls-3">
|
|
78
|
+
<path class="cls-7" d="M1007.03,1230.96c-72.34.52-129.17,5.7-129.17,12.01,0,5.95,50.46,10.89,116.82,11.88-10.02-15.12,2.91-19.51,12.35-23.89Z"/>
|
|
79
|
+
</g>
|
|
80
|
+
<g class="cls-3">
|
|
81
|
+
<path class="cls-7" d="M877.86,1202.53c0,8.8,59.6,15.99,134.42,16.39-8.94-6.06-35.81-9.65-35.81-17.11,0-3.09.18-6.15.52-9.17.24-2.15-.65-4.16-2.3-5.69-56.24,2.16-96.83,8.32-96.83,15.58Z"/>
|
|
82
|
+
</g>
|
|
83
|
+
<path class="cls-8" d="M836.52,1230.28h0c-9.34,2.3-19.27-1.82-22.17-9.21l-63.52-161.3,33.82-8.32,63.53,161.3c2.91,7.38-2.31,15.23-11.65,17.53Z"/>
|
|
84
|
+
<g class="cls-3">
|
|
85
|
+
<path class="cls-7" d="M834.81,1221.08l-63.52-161.3,15.16-3.73-1.81-4.59-33.82,8.32,63.52,161.3c2.91,7.38,12.84,11.5,22.17,9.21,1.83-.45,3.5-1.12,4.98-1.95-3.07-1.71-5.48-4.2-6.69-7.25Z"/>
|
|
86
|
+
</g>
|
|
87
|
+
<path class="cls-8" d="M756.31,1104.46c6.26,17.08,21.26,20.15,36.24,16.72,14.99-3.43,24.28-12.07,18.02-29.15-6.26-17.08-25.71-36.14-40.69-32.71s-19.84,28.06-13.58,45.14Z"/>
|
|
88
|
+
<path class="cls-11" d="M909,976.19c0,48.76-23.15,19.97-84.8,98.24-13.99,17.76-80.03,16.79-101.98-2.95-22.77-20.47-1.21-60.51-1.21-85.34,0-48.76,42.08-88.29,94-88.29s94,29.57,94,78.33Z"/>
|
|
89
|
+
</g>
|
|
90
|
+
<path class="cls-6" d="M992.51,1251c-.03-.06-.06-.12-.08-.18-.53-1.18-.89-2.29-1.11-3.32-.01-.06-.02-.11-.03-.17-.2-1.03-.26-1.99-.2-2.89,0-.03,0-.07,0-.1.13-1.49.61-2.81,1.36-3.99.02-.04.05-.08.07-.12.45-.69.98-1.32,1.59-1.92.05-.05.11-.11.17-.16.38-.36.78-.71,1.21-1.05.03-.03.07-.05.1-.08.22-.17.45-.34.68-.5.09-.06.18-.13.27-.19.38-.26.78-.52,1.18-.77.12-.08.25-.15.38-.23.23-.13.45-.27.69-.4.19-.11.39-.22.59-.32.32-.17.64-.34.97-.51.2-.1.39-.2.59-.3.2-.1.39-.2.59-.29.35-.17.71-.34,1.07-.51.18-.08.36-.17.54-.25.33-.15.65-.3.98-.45.11-.05.21-.1.32-.15.5-.22.99-.45,1.48-.67.36-.16.71-.32,1.06-.48,5.21-2.41,9.37-4.82,8.04-9.02-1.68-5.31-17.75-8.62-28.6-12.71,0,0,0,0,0,0-.48-.18-.95-.36-1.41-.55-.07-.03-.15-.06-.22-.09-.39-.16-.77-.32-1.14-.48-.09-.04-.19-.08-.28-.12-.35-.16-.69-.31-1.03-.47-.09-.04-.18-.08-.26-.13-.37-.18-.72-.36-1.06-.55-.04-.02-.08-.04-.11-.06-.38-.21-.74-.42-1.08-.64-.02-.01-.04-.03-.06-.04-.3-.19-.58-.39-.84-.58-.09-.06-.16-.13-.24-.19-.19-.15-.37-.3-.54-.45-.09-.08-.17-.16-.25-.24-.14-.14-.27-.28-.4-.43-.07-.09-.14-.17-.21-.26-.11-.15-.2-.29-.29-.44-.05-.09-.11-.18-.15-.27-.08-.16-.14-.32-.19-.49-.03-.08-.06-.16-.08-.24-.06-.24-.1-.49-.1-.75,0-3.09.18-6.15.52-9.17.03-.26.04-.52.04-.78,0-.06-.01-.13-.01-.19,0-.19-.02-.39-.05-.58,0-.06-.03-.13-.04-.19-.03-.19-.07-.38-.12-.57-.01-.05-.03-.1-.05-.15-.06-.2-.12-.4-.2-.59-.01-.04-.03-.07-.05-.11-.09-.21-.19-.41-.3-.61-.01-.02-.02-.04-.04-.06-.12-.21-.25-.42-.39-.62,0,0-.01-.02-.02-.03-.15-.21-.32-.42-.49-.62,0,0,0,0,0,0-.18-.2-.37-.4-.58-.59,0,0,0,0,0,0h0c-1.47-1.36-3.53-2.33-5.93-2.63-11.33-1.4-23.42-2.16-35.98-2.16-36.34,0-68.81,6.36-90.25,16.33l-33.78-85.77c4.06-4.8,5.17-11.52,1.82-20.68-.99-2.69-2.3-5.43-3.87-8.13,7.9-2.1,14.18-5.25,17.5-9.47,61.66-78.28,84.8-49.48,84.8-98.24s-42.08-78.33-94-78.33-94,39.53-94,88.29c0,24.83-21.57,64.87,1.21,85.34,7.05,6.33,18.64,10.72,31.59,13.19-.54,6.69.28,13.71,2.5,19.77,3.77,10.28,10.7,15.48,18.89,17.25l39.14,99.38c.18.46.39.91.63,1.35.33.62.74,1.2,1.17,1.76-.15.92-.24,1.84-.24,2.76,0,24.74,52.33,44.8,116.89,44.8,21.23,0,41.13-2.17,58.29-5.97,5.02-1.11,7.42-5.65,4.79-9.21-.44-.59-.81-1.16-1.18-1.72h0c-.29-.44-.56-.87-.81-1.29-.06-.1-.12-.2-.18-.31-.46-.78-.85-1.53-1.18-2.25Z"/>
|
|
91
|
+
</g>
|
|
92
|
+
<path class="cls-11" d="M1194.47,782.67c0-63.81-28.95-302.84-2.04-360.7,6.67-14.35,14.03-25.52,21.39-31.01,8.51-6.35-2.9-54.36-14.32-74.47-18.12-31.91-63.01-64.45-140.71-62.71-98.62,2.21-119.57,131.56-129.32,229.77-3.42,34.45-16.76,67.19-38.56,94.08-48.99,60.43-565.02,65.2-552.07,89.8,175.7,333.62,423.24,375,551.17,375s304.46-144.05,304.46-259.76Z"/>
|
|
93
|
+
<path class="cls-14" d="M1025.12,324.63c-1.48-.8,1.2-2.38,2.76-1.76,17.35,6.88,29.25,13.9,49.78,16.28,6.99.81,42.96-1.94,43.94,4.81s-6.07,15.21-9.01,18.21c-3.6,3.68-9.25,7.01-16.55,4.91-22.3-6.41-47.37-29.78-70.91-42.45Z"/>
|
|
94
|
+
<path class="cls-2" d="M1214.83,389.84c.15-.23.31-.46.44-.73.08-.15.14-.32.21-.48.12-.27.23-.55.32-.85.06-.19.12-.38.17-.58.09-.32.17-.65.24-1,.04-.21.09-.42.13-.64.07-.39.13-.8.18-1.23.03-.2.05-.4.07-.62.05-.54.09-1.1.12-1.68,0-.12.02-.23.02-.35.06-1.47.04-3.07-.05-4.77,0-.14-.02-.28-.03-.43-.04-.72-.09-1.44-.16-2.19-.02-.19-.04-.38-.05-.57-.07-.73-.14-1.48-.23-2.24-.02-.18-.04-.36-.06-.54-.1-.82-.21-1.64-.33-2.49-.02-.13-.04-.25-.05-.38-.74-5.06-1.86-10.57-3.25-16.13-29.04,21.91-14.64,61.6-107.53,97.81-24.43,9.52,53.57,17.47,87.92,295.39-5.64-91.53-23.51-273.67-.48-323.17,6.67-14.35,14.03-25.52,21.39-31.01.29-.21.55-.49.79-.79.08-.1.15-.22.22-.33Z"/>
|
|
95
|
+
<path class="cls-9" d="M1366.44,386.36c-1.81-28.76-12.74-45.51-31.47-48.8-22.07-3.88-34.72,8.32-76.28,3.83-23.6-2.55-59.03-32.51-76.45-26.66-.37.12-.72.29-1.08.43,2.36,19.84,3.66,41.64,3.66,64.53v.12c0,6.65,4.5,12.06,10.11,12.06h153.73c5.47,0,9.91,5.26,9.91,11.75,4.22,4.27,8.26-11.15,7.87-17.25Z"/>
|
|
96
|
+
<path class="cls-4" d="M1184.34,356.04c.31,7.73.48,15.61.48,23.64v.12c0,6.65,4.5,12.06,10.11,12.06h153.73c1.44,0,2.81.37,4.05,1.03-14.56-13.42-26.21-12.53-102.16-16.62-31.65-1.7-42.55-19.25-66.21-20.24Z"/>
|
|
97
|
+
<path class="cls-4" d="M1194.47,329.76s26.43,2.41,24.55,12.93c-1.89,10.53-24.55-12.93-24.55-12.93Z"/>
|
|
98
|
+
<path class="cls-1" d="M979.82,646.42l-88.91-68.79-408.37,11.75c-45.79,1.32-90.15,16.29-127.37,43l-81.11,58.2,491.41,215.46c27.72,12.15,60.13,4.85,79.95-18.03l142.12-164.01c20.18-23.28,16.65-58.74-7.72-77.59Z"/>
|
|
99
|
+
<path class="cls-1" d="M484.86,812c-92.91-11.57-216.44-40.22-301.96-112.63-11.29-9.56-3.49-27.88,11.24-26.46,74.57,7.18,114.89,5.92,195.39-24.83l95.33,163.93Z"/>
|
|
100
|
+
<path class="cls-6" d="M317.05,659.72l-43,30.85,491.41,215.46c27.72,12.15,60.13,4.85,79.95-18.03l89.24-102.98c-255.46-.35-481.11-49.79-617.61-125.3Z"/>
|
|
101
|
+
<g>
|
|
102
|
+
<path class="cls-8" d="M1033.27,1263.74c0-2.52.18-5.02.52-7.49.46-3.31-3.13-6.27-8.23-6.79-11.33-1.15-23.42-1.77-35.98-1.77-64.56,0-116.89,16.37-116.89,36.56s52.33,36.56,116.89,36.56c21.23,0,41.13-1.78,58.29-4.87,5.02-.91,7.42-4.61,4.79-7.52-18.67-20.62,22.96-18.37,19.15-28.23-2.55-6.61-38.54-9.41-38.54-16.46Z"/>
|
|
103
|
+
<g class="cls-3">
|
|
104
|
+
<path class="cls-7" d="M1063.83,1287.54c-72.34.42-129.17,4.65-129.17,9.8,0,4.86,50.46,8.89,116.82,9.69-10.02-12.34,2.91-15.92,12.35-19.49Z"/>
|
|
105
|
+
</g>
|
|
106
|
+
<g class="cls-3">
|
|
107
|
+
<path class="cls-7" d="M934.66,1264.33c0,7.18,59.6,13.05,134.42,13.38-8.94-4.95-35.81-7.87-35.81-13.97,0-2.52.18-5.02.52-7.49.24-1.75-.65-3.4-2.3-4.64-56.24,1.76-96.83,6.79-96.83,12.72Z"/>
|
|
108
|
+
</g>
|
|
109
|
+
<path class="cls-8" d="M893.32,1290.65h0c-9.34,2.56-19.27-2.03-22.17-10.25l-63.53-179.6,33.82-9.27,63.52,179.6c2.91,8.22-2.31,16.96-11.65,19.52Z"/>
|
|
110
|
+
<g class="cls-3">
|
|
111
|
+
<path class="cls-7" d="M891.61,1280.4l-63.53-179.6,15.16-4.15-1.81-5.11-33.82,9.27,63.53,179.6c2.91,8.22,12.84,12.81,22.17,10.25,1.83-.5,3.5-1.25,4.98-2.17-3.07-1.91-5.48-4.67-6.69-8.08Z"/>
|
|
112
|
+
</g>
|
|
113
|
+
<path class="cls-8" d="M813.11,1150.54c6.26,19.02,21.26,22.44,36.24,18.62,14.99-3.82,24.28-13.43,18.02-32.45-6.26-19.02-25.71-40.24-40.69-36.42-14.99,3.82-19.84,31.24-13.58,50.26Z"/>
|
|
114
|
+
<path class="cls-11" d="M1033.18,996.49c-52.32,35.42-90.52,33.46-152.18,120.62-13.99,19.77-80.03,18.69-101.98-3.28-22.77-22.8-1.21-67.38-1.21-95.03,0-54.29,42.08-98.31,94-98.31s206.33,45.56,161.37,75.99Z"/>
|
|
115
|
+
<g class="cls-3">
|
|
116
|
+
<path class="cls-7" d="M777.81,1018.81c0-22.63,7.33-43.47,19.62-60.08-97.47-15.5-206.88-50.65-326.4-102.42,103.54,109.89,214.46,156.36,305.7,174.87.65-4.38,1.07-8.54,1.07-12.37Z"/>
|
|
117
|
+
</g>
|
|
118
|
+
</g>
|
|
119
|
+
</g>
|
|
120
|
+
<text class="cls-12" transform="translate(258.22 1508.21)"><tspan x="0" y="0">Project Albatross</tspan></text>
|
|
121
|
+
<text class="cls-13" transform="translate(93.92 160.51)"><tspan x="0" y="0">generated by</tspan></text>
|
|
122
|
+
</g>
|
|
123
|
+
</g>
|
|
124
|
+
</svg>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IECIESConfig, ECIES } from '@digitaldefiance/ecies-lib';
|
|
2
|
+
|
|
3
|
+
export const config: IECIESConfig = {
|
|
4
|
+
curveName: ECIES.CURVE_NAME,
|
|
5
|
+
primaryKeyDerivationPath: ECIES.PRIMARY_KEY_DERIVATION_PATH,
|
|
6
|
+
mnemonicStrength: ECIES.MNEMONIC_STRENGTH,
|
|
7
|
+
symmetricAlgorithm: ECIES.SYMMETRIC_ALGORITHM_CONFIGURATION,
|
|
8
|
+
symmetricKeyBits: ECIES.SYMMETRIC.KEY_BITS,
|
|
9
|
+
symmetricKeyMode: ECIES.SYMMETRIC.MODE,
|
|
10
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { environment } from '../environments/environment';
|
|
2
|
+
|
|
3
|
+
interface RuntimeConfig {
|
|
4
|
+
apiUrl: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
let runtimeConfig: RuntimeConfig | null = null;
|
|
8
|
+
|
|
9
|
+
export async function loadRuntimeConfig(): Promise<RuntimeConfig> {
|
|
10
|
+
if (runtimeConfig) return runtimeConfig;
|
|
11
|
+
|
|
12
|
+
try {
|
|
13
|
+
const response = await fetch('/config.json');
|
|
14
|
+
runtimeConfig = await response.json();
|
|
15
|
+
return runtimeConfig;
|
|
16
|
+
} catch {
|
|
17
|
+
runtimeConfig = { apiUrl: environment.apiUrl };
|
|
18
|
+
return runtimeConfig;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function getApiBaseUrl(): string {
|
|
23
|
+
const apiUrl = runtimeConfig?.apiUrl || environment.apiUrl;
|
|
24
|
+
return apiUrl.replace(/\/api$/, '');
|
|
25
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IAppConfig } from '@digitaldefiance/express-suite-react-components';
|
|
2
|
+
import { IEnvironment } from '../interfaces/environment';
|
|
3
|
+
|
|
4
|
+
const appConfig: IAppConfig | undefined =
|
|
5
|
+
'APP_CONFIG' in window
|
|
6
|
+
? ((window as any).APP_CONFIG as IAppConfig)
|
|
7
|
+
: undefined;
|
|
8
|
+
|
|
9
|
+
const server = appConfig?.server;
|
|
10
|
+
|
|
11
|
+
export const environment: IEnvironment = {
|
|
12
|
+
production: false,
|
|
13
|
+
siteUrl: server ?? 'https://{{hostname}}',
|
|
14
|
+
apiUrl:
|
|
15
|
+
server !== undefined ? `${server}/api` : 'https://{{hostname}}/api',
|
|
16
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IAppConfig } from '@digitaldefiance/express-suite-react-components';
|
|
2
|
+
import { IEnvironment } from '../interfaces/environment';
|
|
3
|
+
|
|
4
|
+
const appConfig: IAppConfig | undefined =
|
|
5
|
+
'APP_CONFIG' in window
|
|
6
|
+
? ((window as any).APP_CONFIG as IAppConfig)
|
|
7
|
+
: undefined;
|
|
8
|
+
|
|
9
|
+
const server = appConfig?.server;
|
|
10
|
+
|
|
11
|
+
export const environment: IEnvironment = {
|
|
12
|
+
production: false,
|
|
13
|
+
siteUrl: server ?? 'http://localhost:3000',
|
|
14
|
+
apiUrl: server !== undefined ? `${server}/api` : 'http://localhost:3000/api',
|
|
15
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { GlobalActiveContext, IActiveContext, CoreLanguageCode } from '@digitaldefiance/i18n-lib';
|
|
2
|
+
import { StrictMode } from 'react';
|
|
3
|
+
import * as ReactDOM from 'react-dom/client';
|
|
4
|
+
import { BrowserRouter } from 'react-router-dom';
|
|
5
|
+
import App from './app/app';
|
|
6
|
+
|
|
7
|
+
const root = ReactDOM.createRoot(
|
|
8
|
+
document.getElementById('root') as HTMLElement,
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
const context = GlobalActiveContext.getInstance<CoreLanguageCode, IActiveContext<CoreLanguageCode>>();
|
|
12
|
+
context.languageContextSpace = 'user';
|
|
13
|
+
|
|
14
|
+
root.render(
|
|
15
|
+
<StrictMode>
|
|
16
|
+
<BrowserRouter
|
|
17
|
+
future={{ v7_relativeSplatPath: true, v7_startTransition: true }}
|
|
18
|
+
>
|
|
19
|
+
<App />
|
|
20
|
+
</BrowserRouter>
|
|
21
|
+
</StrictMode>,
|
|
22
|
+
);
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
@use 'sass:color';
|
|
2
|
+
|
|
3
|
+
// Theme colors
|
|
4
|
+
$primary-color: #1976d2;
|
|
5
|
+
$secondary-color: #dc004e;
|
|
6
|
+
$background-color: #0a1c21;
|
|
7
|
+
$success-color: #28a745;
|
|
8
|
+
$danger-color: #d32f2f;
|
|
9
|
+
$warning-color: #ed6c02;
|
|
10
|
+
$light-color: #f8f9fa;
|
|
11
|
+
$dark-color: #343a40;
|
|
12
|
+
$text-color: #333;
|
|
13
|
+
|
|
14
|
+
$font-family: 'Roboto', sans-serif;
|
|
15
|
+
|
|
16
|
+
// Reset and base styles
|
|
17
|
+
* {
|
|
18
|
+
box-sizing: border-box;
|
|
19
|
+
margin: 0;
|
|
20
|
+
padding: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
body {
|
|
24
|
+
font-family: $font-family;
|
|
25
|
+
font-weight: 400;
|
|
26
|
+
line-height: 1.6;
|
|
27
|
+
color: $text-color;
|
|
28
|
+
background-color: $light-color;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Common form styles
|
|
32
|
+
.form-group {
|
|
33
|
+
margin-bottom: 1rem;
|
|
34
|
+
|
|
35
|
+
label {
|
|
36
|
+
display: block;
|
|
37
|
+
margin-bottom: 0.5rem;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
input,
|
|
41
|
+
select,
|
|
42
|
+
textarea {
|
|
43
|
+
width: 100%;
|
|
44
|
+
padding: 0.75rem;
|
|
45
|
+
border: 1px solid #ced4da;
|
|
46
|
+
border-radius: 4px;
|
|
47
|
+
font-size: 1rem;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.help-text {
|
|
51
|
+
font-size: 0.875rem;
|
|
52
|
+
color: $secondary-color;
|
|
53
|
+
margin-top: 0.25rem;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Button styles
|
|
58
|
+
.btn {
|
|
59
|
+
display: inline-block;
|
|
60
|
+
padding: 0.75rem 1.5rem;
|
|
61
|
+
font-size: 1rem;
|
|
62
|
+
text-align: center;
|
|
63
|
+
text-decoration: none;
|
|
64
|
+
border-radius: 4px;
|
|
65
|
+
transition: background-color 0.3s ease;
|
|
66
|
+
cursor: pointer;
|
|
67
|
+
|
|
68
|
+
&-primary {
|
|
69
|
+
background-color: $primary-color;
|
|
70
|
+
color: white;
|
|
71
|
+
border: none;
|
|
72
|
+
|
|
73
|
+
&:hover {
|
|
74
|
+
background-color: color.adjust($primary-color, $lightness: -10%);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
&-secondary {
|
|
79
|
+
background-color: $secondary-color;
|
|
80
|
+
color: white;
|
|
81
|
+
border: none;
|
|
82
|
+
|
|
83
|
+
&:hover {
|
|
84
|
+
background-color: color.adjust($secondary-color, $lightness: -10%);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.success-message {
|
|
90
|
+
color: $success-color;
|
|
91
|
+
margin-top: 1rem;
|
|
92
|
+
font-weight: bold;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.error-message {
|
|
96
|
+
color: $danger-color;
|
|
97
|
+
margin-top: 1rem;
|
|
98
|
+
font-weight: bold;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.cursor-pointer {
|
|
102
|
+
cursor: pointer;
|
|
103
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Export custom theme
|
|
2
|
+
export { default as theme } from './theme/theme';
|
|
3
|
+
|
|
4
|
+
// Re-export express-suite-react-components when available
|
|
5
|
+
// Uncomment when @digitaldefiance/express-suite-react-components is published
|
|
6
|
+
// export * from '@digitaldefiance/express-suite-react-components';
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { createTheme } from '@mui/material/styles';
|
|
2
|
+
|
|
3
|
+
const theme = createTheme({
|
|
4
|
+
palette: {
|
|
5
|
+
primary: {
|
|
6
|
+
main: '#1976d2',
|
|
7
|
+
light: '#42a5f5',
|
|
8
|
+
dark: '#1565c0',
|
|
9
|
+
contrastText: '#ffffff',
|
|
10
|
+
},
|
|
11
|
+
secondary: {
|
|
12
|
+
main: '#dc004e',
|
|
13
|
+
light: '#f73378',
|
|
14
|
+
dark: '#9a0036',
|
|
15
|
+
contrastText: '#ffffff',
|
|
16
|
+
},
|
|
17
|
+
background: {
|
|
18
|
+
default: '#f8f9fa',
|
|
19
|
+
paper: '#ffffff',
|
|
20
|
+
},
|
|
21
|
+
text: {
|
|
22
|
+
primary: '#212121',
|
|
23
|
+
},
|
|
24
|
+
error: {
|
|
25
|
+
main: '#d32f2f',
|
|
26
|
+
},
|
|
27
|
+
warning: {
|
|
28
|
+
main: '#ed6c02',
|
|
29
|
+
},
|
|
30
|
+
success: {
|
|
31
|
+
main: '#2e7d32',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
typography: {
|
|
35
|
+
fontFamily: "'Roboto', sans-serif",
|
|
36
|
+
h1: {
|
|
37
|
+
fontWeight: 500,
|
|
38
|
+
},
|
|
39
|
+
h2: {
|
|
40
|
+
fontWeight: 500,
|
|
41
|
+
},
|
|
42
|
+
h3: {
|
|
43
|
+
fontWeight: 500,
|
|
44
|
+
},
|
|
45
|
+
h4: {
|
|
46
|
+
fontWeight: 500,
|
|
47
|
+
},
|
|
48
|
+
h5: {
|
|
49
|
+
fontWeight: 500,
|
|
50
|
+
},
|
|
51
|
+
h6: {
|
|
52
|
+
fontWeight: 500,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
components: {
|
|
56
|
+
MuiButton: {
|
|
57
|
+
styleOverrides: {
|
|
58
|
+
root: {
|
|
59
|
+
borderRadius: '4px',
|
|
60
|
+
textTransform: 'none',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
export default theme;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
|
3
|
+
# Please see the documentation for all configuration options:
|
|
4
|
+
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
|
5
|
+
|
|
6
|
+
version: 2
|
|
7
|
+
updates:
|
|
8
|
+
- package-ecosystem: "npm" # See documentation for possible values
|
|
9
|
+
directory: "/" # Location of package manifests
|
|
10
|
+
schedule:
|
|
11
|
+
interval: "weekly"
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
pull_request:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
actions: read
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
main:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
filter: tree:0
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# This enables task distribution via Nx Cloud
|
|
26
|
+
# Run this command as early as possible, before dependencies are installed
|
|
27
|
+
# Learn more at https://nx.dev/ci/reference/nx-cloud-cli#npx-nxcloud-startcirun
|
|
28
|
+
# Uncomment this line to enable task distribution
|
|
29
|
+
# - run: yarn nx-cloud start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="build"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# Cache node_modules
|
|
33
|
+
- uses: actions/setup-node@v4
|
|
34
|
+
with:
|
|
35
|
+
node-version: 20
|
|
36
|
+
cache: 'yarn'
|
|
37
|
+
|
|
38
|
+
- run: yarn install --frozen-lockfile
|
|
39
|
+
- uses: nrwl/nx-set-shas@v4
|
|
40
|
+
|
|
41
|
+
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
|
|
42
|
+
# - run: yarn nx-cloud record -- echo Hello World
|
|
43
|
+
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
|
|
44
|
+
- run: yarn nx affected -t lint test build
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Deployment Guide
|
|
2
|
+
|
|
3
|
+
## API Base URL Configuration
|
|
4
|
+
|
|
5
|
+
The React frontend needs to know where your API is hosted. There are three configuration methods:
|
|
6
|
+
|
|
7
|
+
### 1. Same Domain (Recommended for Production)
|
|
8
|
+
|
|
9
|
+
Deploy frontend and API on the same domain. The production build uses relative URLs by default.
|
|
10
|
+
|
|
11
|
+
**Example**: `https://example.com` (frontend) and `https://example.com/api` (API)
|
|
12
|
+
|
|
13
|
+
No configuration needed - uses `environment.prod.ts` with `apiUrl: '/api'`
|
|
14
|
+
|
|
15
|
+
### 2. Different Domain (Build-Time)
|
|
16
|
+
|
|
17
|
+
Edit `{{prefix}}-react/src/environments/environment.prod.ts`:
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
export const environment = {
|
|
21
|
+
production: true,
|
|
22
|
+
apiUrl: 'https://api.example.com/api',
|
|
23
|
+
};
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Rebuild: `yarn build`
|
|
27
|
+
|
|
28
|
+
### 3. Different Domain (Runtime)
|
|
29
|
+
|
|
30
|
+
For deploying the same build to multiple domains, inject runtime config in your index.html:
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<script>
|
|
34
|
+
window.APP_CONFIG = {
|
|
35
|
+
apiUrl: 'https://api.example.com/api'
|
|
36
|
+
};
|
|
37
|
+
</script>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
This overrides the environment file without rebuilding.
|
|
41
|
+
|
|
42
|
+
## Environment Files
|
|
43
|
+
|
|
44
|
+
### Development (`environment.ts`)
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
export const environment = {
|
|
48
|
+
production: false,
|
|
49
|
+
apiUrl: 'http://localhost:3000/api',
|
|
50
|
+
};
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Production (`environment.prod.ts`)
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
export const environment = {
|
|
57
|
+
production: true,
|
|
58
|
+
apiUrl: '/api', // Relative URL for same-domain deployment
|
|
59
|
+
};
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Build Commands
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Development
|
|
66
|
+
yarn serve:dev
|
|
67
|
+
|
|
68
|
+
# Production build
|
|
69
|
+
yarn build
|
|
70
|
+
|
|
71
|
+
# Production serve
|
|
72
|
+
yarn serve
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## API Environment Variables
|
|
76
|
+
|
|
77
|
+
Configure `{{prefix}}-api/.env`:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Required
|
|
81
|
+
MONGO_URI=mongodb://localhost:27017/{{workspaceName}}
|
|
82
|
+
JWT_SECRET=your-64-char-hex-secret
|
|
83
|
+
MNEMONIC_HMAC_SECRET=your-64-char-hex-secret
|
|
84
|
+
MNEMONIC_ENCRYPTION_KEY=your-64-char-hex-secret
|
|
85
|
+
|
|
86
|
+
# Optional
|
|
87
|
+
PORT=3000
|
|
88
|
+
HOST=0.0.0.0
|
|
89
|
+
DEBUG=false
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Generate secrets: `yarn new:secret`
|
|
93
|
+
|
|
94
|
+
## Deployment Checklist
|
|
95
|
+
|
|
96
|
+
- [ ] Set production environment variables in `{{prefix}}-api/.env`
|
|
97
|
+
- [ ] Configure API base URL (method 1, 2, or 3 above)
|
|
98
|
+
- [ ] Run `yarn build` to build all projects
|
|
99
|
+
- [ ] Test production build locally: `yarn serve`
|
|
100
|
+
- [ ] Deploy `dist/{{prefix}}-api` to your API server
|
|
101
|
+
- [ ] Deploy `dist/{{prefix}}-react` to your web server
|
|
102
|
+
- [ ] Verify HTTPS is enabled
|
|
103
|
+
- [ ] Test authentication flow
|
|
104
|
+
- [ ] Monitor logs for errors
|