arkleinberg commited on
Commit
95fb789
·
verified ·
1 Parent(s): 6e27220

Deploy Ark.Alliance.StartupCms.AI with corrected Docker build

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +86 -0
  2. Ark.Alliance.StartupCms.Ai.Backend/.env +8 -0
  3. Ark.Alliance.StartupCms.Ai.Backend/.env.example +49 -0
  4. Ark.Alliance.StartupCms.Ai.Backend/.gitignore +0 -0
  5. Ark.Alliance.StartupCms.Ai.Backend/Certificate/server.crt +20 -0
  6. Ark.Alliance.StartupCms.Ai.Backend/Certificate/server.key +27 -0
  7. Ark.Alliance.StartupCms.Ai.Backend/README.md +293 -0
  8. Ark.Alliance.StartupCms.Ai.Backend/convert-imports.ps1 +46 -0
  9. Ark.Alliance.StartupCms.Ai.Backend/data/ark_portfolio.sqlite +3 -0
  10. Ark.Alliance.StartupCms.Ai.Backend/docker-compose.yml +16 -0
  11. Ark.Alliance.StartupCms.Ai.Backend/final-fix-paths.ps1 +27 -0
  12. Ark.Alliance.StartupCms.Ai.Backend/fix-paths.ps1 +43 -0
  13. Ark.Alliance.StartupCms.Ai.Backend/package-lock.json +0 -0
  14. Ark.Alliance.StartupCms.Ai.Backend/package.json +48 -0
  15. Ark.Alliance.StartupCms.Ai.Backend/revert-to-alias.ps1 +19 -0
  16. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Armand.jfif +0 -0
  17. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Bryan.jfif +3 -0
  18. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Lenny Avril.jpeg +3 -0
  19. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Mario.png +3 -0
  20. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/RaduDinulescu.jfif +0 -0
  21. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.React.Component/components-hero.png +3 -0
  22. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/ArkAllianceStartupCmsAiHero.png +3 -0
  23. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/ArkAllianceStartupCmsAi_Hero.Png +3 -0
  24. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/Google_AI_Studio_2026-01-08T00_41_57.111Z.png +3 -0
  25. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot10.PNG +3 -0
  26. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot11.PNG +3 -0
  27. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot12.PNG +3 -0
  28. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot13.PNG +3 -0
  29. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot14.PNG +3 -0
  30. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot2.PNG +3 -0
  31. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot3.PNG +3 -0
  32. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot4.PNG +3 -0
  33. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot5.PNG +3 -0
  34. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot6.PNG +3 -0
  35. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot7.PNG +3 -0
  36. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot8.PNG +3 -0
  37. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Capture.PNG +3 -0
  38. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/bot-hero.png +3 -0
  39. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/bot1.PNG +3 -0
  40. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Providers.Lib/providers-hero.png +3 -0
  41. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Providers.Lib/trading-hero.png +3 -0
  42. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.TrendsCalculator/trends-hero.png +3 -0
  43. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.TrendsCalculator/trends-hero.png.jpg +3 -0
  44. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance/Ark_Alliance_1.png +3 -0
  45. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance/Ark_Alliance_Hero.png +3 -0
  46. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Dashobard.PNG +3 -0
  47. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Hero_Carrousel.PNG +3 -0
  48. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Projects.PNG +3 -0
  49. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_ResumeManager.PNG +3 -0
  50. Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/portfolio-hero.png +3 -0
.gitattributes CHANGED
@@ -67,3 +67,89 @@ Assets/Projects/Ark.Portfolio/Admin_Projects.PNG filter=lfs diff=lfs merge=lfs -
67
  Assets/Projects/Ark.Portfolio/Admin_ResumeManager.PNG filter=lfs diff=lfs merge=lfs -text
68
  Assets/Projects/Ark.Portfolio/portfolio-hero.png filter=lfs diff=lfs merge=lfs -text
69
  Assets/Site/Icon.png filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  Assets/Projects/Ark.Portfolio/Admin_ResumeManager.PNG filter=lfs diff=lfs merge=lfs -text
68
  Assets/Projects/Ark.Portfolio/portfolio-hero.png filter=lfs diff=lfs merge=lfs -text
69
  Assets/Site/Icon.png filter=lfs diff=lfs merge=lfs -text
70
+ Ark.Alliance.StartupCms.Ai.Backend/data/ark_portfolio.sqlite filter=lfs diff=lfs merge=lfs -text
71
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Bryan.jfif filter=lfs diff=lfs merge=lfs -text
72
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Lenny[[:space:]]Avril.jpeg filter=lfs diff=lfs merge=lfs -text
73
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Mario.png filter=lfs diff=lfs merge=lfs -text
74
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance/Ark_Alliance_1.png filter=lfs diff=lfs merge=lfs -text
75
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance/Ark_Alliance_Hero.png filter=lfs diff=lfs merge=lfs -text
76
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.React.Component/components-hero.png filter=lfs diff=lfs merge=lfs -text
77
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/ArkAllianceStartupCmsAi_Hero.Png filter=lfs diff=lfs merge=lfs -text
78
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/ArkAllianceStartupCmsAiHero.png filter=lfs diff=lfs merge=lfs -text
79
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/Google_AI_Studio_2026-01-08T00_41_57.111Z.png filter=lfs diff=lfs merge=lfs -text
80
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/bot-hero.png filter=lfs diff=lfs merge=lfs -text
81
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/bot1.PNG filter=lfs diff=lfs merge=lfs -text
82
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot10.PNG filter=lfs diff=lfs merge=lfs -text
83
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot11.PNG filter=lfs diff=lfs merge=lfs -text
84
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot12.PNG filter=lfs diff=lfs merge=lfs -text
85
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot13.PNG filter=lfs diff=lfs merge=lfs -text
86
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot14.PNG filter=lfs diff=lfs merge=lfs -text
87
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot2.PNG filter=lfs diff=lfs merge=lfs -text
88
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot3.PNG filter=lfs diff=lfs merge=lfs -text
89
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot4.PNG filter=lfs diff=lfs merge=lfs -text
90
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot5.PNG filter=lfs diff=lfs merge=lfs -text
91
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot6.PNG filter=lfs diff=lfs merge=lfs -text
92
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot7.PNG filter=lfs diff=lfs merge=lfs -text
93
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot8.PNG filter=lfs diff=lfs merge=lfs -text
94
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Capture.PNG filter=lfs diff=lfs merge=lfs -text
95
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Providers.Lib/providers-hero.png filter=lfs diff=lfs merge=lfs -text
96
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Providers.Lib/trading-hero.png filter=lfs diff=lfs merge=lfs -text
97
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.TrendsCalculator/trends-hero.png filter=lfs diff=lfs merge=lfs -text
98
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.TrendsCalculator/trends-hero.png.jpg filter=lfs diff=lfs merge=lfs -text
99
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Dashobard.PNG filter=lfs diff=lfs merge=lfs -text
100
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Hero_Carrousel.PNG filter=lfs diff=lfs merge=lfs -text
101
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Projects.PNG filter=lfs diff=lfs merge=lfs -text
102
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_ResumeManager.PNG filter=lfs diff=lfs merge=lfs -text
103
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/portfolio-hero.png filter=lfs diff=lfs merge=lfs -text
104
+ Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Site/Icon.png filter=lfs diff=lfs merge=lfs -text
105
+ Ark.Alliance.StartupCms.Ai.Backend/uploads/word/1d04f81e-fd89-4974-878e-449b90adfc5f.docx filter=lfs diff=lfs merge=lfs -text
106
+ Ark.Alliance.StartupCms.Ai.Share/assets/App/Background.PNG filter=lfs diff=lfs merge=lfs -text
107
+ Ark.Alliance.StartupCms.Ai.Share/assets/App/LogoArkAlliance.png filter=lfs diff=lfs merge=lfs -text
108
+ Ark.Alliance.StartupCms.Ai.Share/assets/bot1.PNG filter=lfs diff=lfs merge=lfs -text
109
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot10.PNG filter=lfs diff=lfs merge=lfs -text
110
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot11.PNG filter=lfs diff=lfs merge=lfs -text
111
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot12.PNG filter=lfs diff=lfs merge=lfs -text
112
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot13.PNG filter=lfs diff=lfs merge=lfs -text
113
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot14.PNG filter=lfs diff=lfs merge=lfs -text
114
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot2.PNG filter=lfs diff=lfs merge=lfs -text
115
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot3.PNG filter=lfs diff=lfs merge=lfs -text
116
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot4.PNG filter=lfs diff=lfs merge=lfs -text
117
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot5.PNG filter=lfs diff=lfs merge=lfs -text
118
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot6.PNG filter=lfs diff=lfs merge=lfs -text
119
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot7.PNG filter=lfs diff=lfs merge=lfs -text
120
+ Ark.Alliance.StartupCms.Ai.Share/assets/Bot8.PNG filter=lfs diff=lfs merge=lfs -text
121
+ Ark.Alliance.StartupCms.Ai.Share/assets/Capture.PNG filter=lfs diff=lfs merge=lfs -text
122
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/bot1.PNG filter=lfs diff=lfs merge=lfs -text
123
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot10.PNG filter=lfs diff=lfs merge=lfs -text
124
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot11.PNG filter=lfs diff=lfs merge=lfs -text
125
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot12.PNG filter=lfs diff=lfs merge=lfs -text
126
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot13.PNG filter=lfs diff=lfs merge=lfs -text
127
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot14.PNG filter=lfs diff=lfs merge=lfs -text
128
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot2.PNG filter=lfs diff=lfs merge=lfs -text
129
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot3.PNG filter=lfs diff=lfs merge=lfs -text
130
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot4.PNG filter=lfs diff=lfs merge=lfs -text
131
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot5.PNG filter=lfs diff=lfs merge=lfs -text
132
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot6.PNG filter=lfs diff=lfs merge=lfs -text
133
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot7.PNG filter=lfs diff=lfs merge=lfs -text
134
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Bot8.PNG filter=lfs diff=lfs merge=lfs -text
135
+ Ark.Alliance.StartupCms.Ai.UI/Assets/Ark.Alliance.Trading.Bot/Capture.PNG filter=lfs diff=lfs merge=lfs -text
136
+ Ark.Alliance.StartupCms.Ai.UI/Assets/icon/LogoArkAlliance.png filter=lfs diff=lfs merge=lfs -text
137
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/App/LogoArkAlliance.png filter=lfs diff=lfs merge=lfs -text
138
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/bot1.PNG filter=lfs diff=lfs merge=lfs -text
139
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot10.PNG filter=lfs diff=lfs merge=lfs -text
140
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot11.PNG filter=lfs diff=lfs merge=lfs -text
141
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot12.PNG filter=lfs diff=lfs merge=lfs -text
142
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot13.PNG filter=lfs diff=lfs merge=lfs -text
143
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot14.PNG filter=lfs diff=lfs merge=lfs -text
144
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot2.PNG filter=lfs diff=lfs merge=lfs -text
145
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot3.PNG filter=lfs diff=lfs merge=lfs -text
146
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot4.PNG filter=lfs diff=lfs merge=lfs -text
147
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot5.PNG filter=lfs diff=lfs merge=lfs -text
148
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot6.PNG filter=lfs diff=lfs merge=lfs -text
149
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot7.PNG filter=lfs diff=lfs merge=lfs -text
150
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Bot8.PNG filter=lfs diff=lfs merge=lfs -text
151
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Capture.PNG filter=lfs diff=lfs merge=lfs -text
152
+ Ark.Alliance.StartupCms.Ai.UI/public/assets/Icon.png filter=lfs diff=lfs merge=lfs -text
153
+ Ark.Alliance.StartupCms.Ai.UI/public/logo.png filter=lfs diff=lfs merge=lfs -text
154
+ Ark.Alliance.StartupCms.Ai.UI/public/LogoArkAlliance.png filter=lfs diff=lfs merge=lfs -text
155
+ Ark.Alliance.StartupCms.Ai.UI/src/Assets/LogoArkAlliance.png filter=lfs diff=lfs merge=lfs -text
Ark.Alliance.StartupCms.Ai.Backend/.env ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ PORT=3085
2
+ DB_TYPE=sqlite
3
+ # DB_HOST=localhost
4
+ # DB_PORT=5432
5
+ # DB_USER=postgres
6
+ # DB_PASSWORD=postgres
7
+ # DB_NAME=ark_portfolio
8
+
Ark.Alliance.StartupCms.Ai.Backend/.env.example ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ═══════════════════════════════════════════════════════════════════════
2
+ # Ark.Portfolio Backend - Environment Configuration
3
+ # ═══════════════════════════════════════════════════════════════════════
4
+ # Copy this file to .env and customize as needed
5
+
6
+ # ─────────────────────────────────────────────────────────────────────────
7
+ # Server Configuration
8
+ # ─────────────────────────────────────────────────────────────────────────
9
+ # Port for the backend server (default: 3085)
10
+ PORT=3085
11
+
12
+ # Node environment: development | production | test
13
+ NODE_ENV=development
14
+
15
+ # ─────────────────────────────────────────────────────────────────────────
16
+ # Protocol Configuration
17
+ # ─────────────────────────────────────────────────────────────────────────
18
+ # Use HTTPS instead of HTTP (default: false)
19
+ # When true, auto-generates self-signed certificate if none exists
20
+ USE_HTTPS=false
21
+
22
+ # ─────────────────────────────────────────────────────────────────────────
23
+ # Database Configuration
24
+ # ─────────────────────────────────────────────────────────────────────────
25
+ DATABASE_TYPE=sqlite
26
+ DATABASE_NAME=portfolio.db
27
+
28
+ # ─────────────────────────────────────────────────────────────────────────
29
+ # Authentication
30
+ # ─────────────────────────────────────────────────────────────────────────
31
+ # IMPORTANT: Change this in production!
32
+ JWT_SECRET=change-this-secret-in-production
33
+ JWT_EXPIRES_IN=24h
34
+
35
+ # Admin password for initial user (defaults to Admin1234 if not set)
36
+ # IMPORTANT: Set this via GitHub Secrets (ADMIN_KEY_CMS) in production!
37
+ ADMIN_KEY_CMS=
38
+
39
+ # ─────────────────────────────────────────────────────────────────────────
40
+ # AI Services (Optional - encrypted in database)
41
+ # ─────────────────────────────────────────────────────────────────────────
42
+ # OPENAI_API_KEY=sk-...
43
+ # ANTHROPIC_API_KEY=sk-ant-...
44
+ # GOOGLE_AI_API_KEY=...
45
+
46
+ # ─────────────────────────────────────────────────────────────────────────
47
+ # CORS Configuration
48
+ # ─────────────────────────────────────────────────────────────────────────
49
+ CORS_ORIGIN=http://localhost:3080
Ark.Alliance.StartupCms.Ai.Backend/.gitignore ADDED
Binary file (30 Bytes). View file
 
Ark.Alliance.StartupCms.Ai.Backend/Certificate/server.crt ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDUDCCAjigAwIBAgIBATANBgkqhkiG9w0BAQsFADBFMRIwEAYDVQQDEwlsb2Nh
3
+ bGhvc3QxIjAgBgNVBAoTGUFyay5Qb3J0Zm9saW8gRGV2ZWxvcG1lbnQxCzAJBgNV
4
+ BAYTAkNBMB4XDTI1MTIzMTE4MzA0M1oXDTI2MTIzMTE4MzA0M1owRTESMBAGA1UE
5
+ AxMJbG9jYWxob3N0MSIwIAYDVQQKExlBcmsuUG9ydGZvbGlvIERldmVsb3BtZW50
6
+ MQswCQYDVQQGEwJDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK0X
7
+ nHahsBsDzxdBr9t7K4lGH0Giw42jgmaUsVQ9LdrD+pol5UoW2F4W6ERrEud9m4zT
8
+ TfSMFsTs4Iw72CPuc1rK8TKyt1P+r2fAUj+d6OImkVwABpJJkaXhG7NjBias6pdM
9
+ 5xpHS2LsoFfVQEDL827R74PWUR3o8tvbS8frsa+w+FOXGYjnVGzSG/O/m5GYGKzX
10
+ TzAB594S0T8oOlKaIu1aSKLXLKhjd2tYX3Yv+yenGSc0gN+9E4ybLlw4gpub4jjW
11
+ R+j85Qzdw+6BzYHrVpbRXiunN611Ir9d8vKniuEYMs3SGaiamaWA0nbVsDbJei7t
12
+ jZxoHl4VCMV9BpriSEsCAwEAAaNLMEkwCQYDVR0TBAIwADALBgNVHQ8EBAMCBaAw
13
+ EwYDVR0lBAwwCgYIKwYBBQUHAwEwGgYDVR0RBBMwEYIJbG9jYWxob3N0hwR/AAAB
14
+ MA0GCSqGSIb3DQEBCwUAA4IBAQBYbck//uesmaRr1BebLGmYce4+TrGfAp49BA6h
15
+ fbjhlrSqSpXBZi1JrqWWgPvux23NcMA5Pn0TAHTQViiOagSefdgZUFY73ytAB2PH
16
+ AMoTyI34HhqCnSggvBDwJ3O5iX5Y1txcqNRq9frxUmBHNSFfYexKqNh71GMJA9/P
17
+ Zv4c40wQK3Yt3+sM/8H9R9x+FPSYPTk+0ycJuEydc6HH/VEbb0OTPhzf6/+zHMW2
18
+ 3fDDCSxp0B64LBEwjnEsbGlKm/vOvrEizkXfcW5jpHgJVSo+7R8h3Sd1U3n5N74p
19
+ zkshCRbIzr5PVEE+D20YNvwypKP/5VK4UxLdAof9FWezIgjN
20
+ -----END CERTIFICATE-----
Ark.Alliance.StartupCms.Ai.Backend/Certificate/server.key ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEArRecdqGwGwPPF0Gv23sriUYfQaLDjaOCZpSxVD0t2sP6miXl
3
+ ShbYXhboRGsS532bjNNN9IwWxOzgjDvYI+5zWsrxMrK3U/6vZ8BSP53o4iaRXAAG
4
+ kkmRpeEbs2MGJqzql0znGkdLYuygV9VAQMvzbtHvg9ZRHejy29tLx+uxr7D4U5cZ
5
+ iOdUbNIb87+bkZgYrNdPMAHn3hLRPyg6Upoi7VpIotcsqGN3a1hfdi/7J6cZJzSA
6
+ 370TjJsuXDiCm5viONZH6PzlDN3D7oHNgetWltFeK6c3rXUiv13y8qeK4RgyzdIZ
7
+ qJqZpYDSdtWwNsl6Lu2NnGgeXhUIxX0GmuJISwIDAQABAoIBAFTNjxouIFYz+Qen
8
+ Zo3NHCjewpyJLm7b75zrd6/SY39dag+QxnQUmkAK0BQJM5NX3lhSBEzuP4+OkHsU
9
+ LNJ51mliqWZR2fDchDp8Jq/FYV4/UBM3bgDI64NONSCfwNk8+ZhUFJuy11Ppo6s0
10
+ rwyv/53JXCQG4eoaAbZGjCuwJXdyGQKC6fl5H5oN6PasFXVuYp1IqXA8E5kqufuj
11
+ FQzszHxmxtmANe+emZjaBxNPH3u/mSVUZboQ1sRmSQNjQ8pevCiwN7SRKS22BAL+
12
+ KuMU3cJZcxoKtf4KQxjUpYPuN0Qv9vWS1RIGy1IxWnJsE+mtkDcEbj0oFlbPdviR
13
+ Z3bYcikCgYEA6K9H8+vJO1jrVKLWEOuDYNndXUlfloVuiBBUyenh/OfL6D4Z7C4R
14
+ fiE7WI4Sb7Gf9eA0s4+aKx1YxNp3RBvN9ApIUxVS0+sHFWNKRO04oXrRJfbH5M69
15
+ MYYfB81csdT9ypJW+pbb7qUiR7lpLzijyXeuD5PAU/l2eGiscm3tW1MCgYEAvm+x
16
+ MtZ6cbpNGn5OVLAGQ0EHa+RhrqfrGLlsaTKMV34Lp1zXcIhAr8mAHpyT8/SthL1N
17
+ QD5fP6o5G77A+cJcz0mHLiBSTG2brx8thTrvt8ZNQDINKfySPrhZT27aZUK5Xvm1
18
+ qWbC+X7SuhXP3D3HmB1VLT89YB09LgstM1R5uCkCgYB7wP3b1YPpdJl1IkYIKbpu
19
+ QHFjtCqKu9zVsRnnaeUvxXjFxIG1A6t6EeKmbqmPjkEtXFmrRq0QUUNtL2RPbRpU
20
+ uUNOLQEohM/3qB9QGXsNJ20la+NU5j/pnxPR6n9qdYWlv79S9/lxK5LX4tz2qIE0
21
+ HdsNnd+kygEgeUt+cMjU0QKBgFdZyjDkemOiLe3CE9H6r9S3hlzx8/B2K3s6ykRy
22
+ oDcdpODO0C9ZADrhtXfVIHRdPh5N6ppWQcBlJy7Xz5KAmaunMW9x+e3+tNOd/HZJ
23
+ M13bguG4U5t3s+k7DBRIZ7rc4UR0S+R5M2PXzXb3vFFssRnQEprfkBp/LunozIHn
24
+ 9LEJAoGAWEzXrCAvBs6g4QU0/D3yMpjBZV9DQ3ndMC2osrkBWJnyUNg9p9mvwzgU
25
+ CMwopkXH33YKazTiPaEPCBXtMibArYSS81ey3C4asCKFADiVelnU0yqWgx5PrM6D
26
+ OSQGFJZO8TCTkiDrnq5w20bXyPJGbrAfcwavnL0xUIPGnLhuOZE=
27
+ -----END RSA PRIVATE KEY-----
Ark.Alliance.StartupCms.Ai.Backend/README.md ADDED
@@ -0,0 +1,293 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Ark.Alliance.StartupCms.AI.Backend
2
+
3
+ <div align="center">
4
+
5
+ ![Node.js](https://img.shields.io/badge/Node.js-18+-339933?style=for-the-badge&logo=node.js)
6
+ ![Express](https://img.shields.io/badge/Express-4.x-black?style=for-the-badge&logo=express)
7
+ ![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue?style=for-the-badge&logo=typescript)
8
+ ![SQLite](https://img.shields.io/badge/SQLite-TypeORM-003B57?style=for-the-badge&logo=sqlite)
9
+
10
+ **RESTful API Backend for Ark.Alliance.StartupCms.AI**
11
+
12
+ *Express • TypeORM • JWT Auth • Multi-Provider AI • Team Management*
13
+
14
+ </div>
15
+
16
+ ---
17
+
18
+ The **Backend** is a robust Node.js/Express application providing RESTful APIs for the AI-powered startup CMS ecosystem. It features TypeORM for database interactions, multi-provider AI services, JWT authentication, hierarchical team management, and comprehensive resume data handling.
19
+
20
+ ## 📦 Functional Capabilities
21
+
22
+ The backend serves as the secure, intelligent core of the ecosystem.
23
+
24
+ | Domain | Capability | Description | Code Reference |
25
+ | :--- | :--- | :--- | :--- |
26
+ | **API** | **REST Endpoints** | Structured controllers for Auth, Team, Resume, Projects, and AI. | `src/controllers/*.controller.ts` |
27
+ | **Security** | **Authentication** | JWT-based auth with bcrypt hashing, RBAC, and Helmet headers. | `src/middleware/auth.middleware.ts` |
28
+ | **AI** | **Multi-Provider AI** | Unified interface for OpenAI, Anthropic, and Google Gemini with prompt templates. | `src/services/ai.service.ts` |
29
+ | **Team** | **Hierarchy Management** | Org chart with hierarchical relationships and reporting structure. | `src/services/collaborator.service.ts` |
30
+ | **Resume** | **Profile System** | Comprehensive resume data: experiences, skills, education, languages, hobbies, domains. | `src/services/resume.service.ts` |
31
+ | **Media** | **Asset Management** | Avatar uploads with base64 encoding and automatic synchronization. | `src/services/media.service.ts` |
32
+ | **Data** | **High-Performance Persistence** | TypeORM with SQLite, indexed queries, and optimized entity relationships. | `src/database/entities/` |
33
+ | **Tasks** | **Growth Tracking** | Task management with lessons learned and partial public visibility. | `src/services/task.service.ts` |
34
+ | **DevOps** | **Auto-Seeding** | Automatic DB population with team members, skills, and sample data. | `src/database/seeds/seed.ts` |
35
+
36
+ ---
37
+
38
+ ## 🏗️ Project Structure
39
+
40
+ ```text
41
+ Ark.Alliance.StartupCms.Ai.Backend/
42
+ ├── 📁 src/
43
+ │ ├── config/ # Configuration modules
44
+ │ │ ├── database.ts # TypeORM DataSource
45
+ │ │ ├── swagger.config.ts # API documentation
46
+ │ │ └── cors.config.ts # CORS whitelist
47
+ │ │
48
+ │ ├── controllers/ # Request handlers
49
+ │ │ ├── auth.controller.ts # Authentication
50
+ │ │ ├── collaborator.controller.ts # Team/Org Chart
51
+ │ │ ├── resume.controller.ts # Resume Data API
52
+ │ │ ├── project.controller.ts # Project CRUD
53
+ │ │ ├── task.controller.ts # Task Management
54
+ │ │ └── ai-profile.controller.ts # AI Profile Generation
55
+ │ │
56
+ │ ├── database/
57
+ │ │ ├── entities/ # TypeORM entities with indexes
58
+ │ │ │ ├── User.ts # User authentication
59
+ │ │ │ ├── Collaborator.ts # Team members
60
+ │ │ │ ├── Experience.ts # Work history
61
+ │ │ │ ├── Skill.ts # Technical skills
62
+ │ │ │ ├── Education.ts # Academic background
63
+ │ │ │ ├── Language.ts # Language proficiency
64
+ │ │ │ ├── Hobby.ts # Personal interests
65
+ │ │ │ ├── BusinessDomain.ts # Industry expertise
66
+ │ │ │ ├── Task.ts # Task tracking
67
+ │ │ │ └── PromptTemplate.ts # AI prompt templates
68
+ │ │ ├── seeds/ # Data seeding
69
+ │ │ │ └── seeders/
70
+ │ │ │ ├── organization.seeder.ts
71
+ │ │ │ ├── bryan-ceo.seeder.ts
72
+ │ │ │ ├── armand-architect.seeder.ts
73
+ │ │ │ ├── radu-director.seeder.ts
74
+ │ │ │ ├── mario-consultant.seeder.ts
75
+ │ │ │ ├── lenny-csm.seeder.ts
76
+ │ │ │ └── avatar.seeder.ts
77
+ │ │ └── InitDbAsset/ # JSON seed data
78
+ │ │
79
+ │ ├── middleware/ # Express middleware
80
+ │ │ ├── auth.middleware.ts # JWT verification
81
+ │ │ └── error.middleware.ts # Global error handler
82
+ │ │
83
+ │ ├── services/ # Business logic
84
+ │ │ ├── auth.service.ts # Authentication
85
+ │ │ ├── collaborator.service.ts # Team hierarchy
86
+ │ │ ├── resume.service.ts # Resume aggregation
87
+ │ │ ├── ai-profile.service.ts # AI-assisted profile generation
88
+ │ │ ├── task.service.ts # Task management
89
+ │ │ └── prompt-template.service.ts # AI prompt management
90
+ │ │
91
+ │ └── index.ts # Entry point
92
+
93
+ ├── 📁 Assets/
94
+ │ └── Profil_Avatars/ # Team member avatars
95
+
96
+ └── 📄 data/
97
+ └── ark_portfolio.sqlite # SQLite database
98
+ ```
99
+
100
+ ---
101
+
102
+ ## 📐 Architecture
103
+
104
+ ### Request Flow
105
+
106
+ ```mermaid
107
+ sequenceDiagram
108
+ participant Client
109
+ participant Express as Middleware Stack
110
+ participant Controller
111
+ participant Service
112
+ participant Repository
113
+ participant DB as Database
114
+
115
+ Client->>Express: HTTP Request
116
+ Express->>Express: CORS, Helmet, Auth
117
+ Express->>Controller: Route Handler
118
+ Controller->>Service: Business Logic
119
+ Service->>Repository: Data Access
120
+ Repository->>DB: Indexed Query
121
+ DB-->>Repository: Result
122
+ Repository-->>Service: Entity
123
+ Service-->>Controller: DTO
124
+ Controller-->>Express: Response
125
+ Express-->>Client: JSON
126
+ ```
127
+
128
+ ### Database Performance Optimizations
129
+
130
+ All resume entities have **database indexes** on `userId` and `displayOrder` columns for optimal query performance:
131
+
132
+ - `Experience`: `IDX_experience_userId`, `IDX_experience_displayOrder`
133
+ - `Skill`: `IDX_skills_userId`, `IDX_skills_displayOrder`
134
+ - `Education`: `IDX_education_userId`
135
+ - `Language`: `IDX_languages_userId`, `IDX_languages_displayOrder`
136
+ - `Hobby`: `IDX_hobbies_userId`, `IDX_hobbies_displayOrder`
137
+ - `BusinessDomain`: `IDX_business_domains_userId`, `IDX_business_domains_displayOrder`
138
+
139
+ ---
140
+
141
+ ## 🔌 API Endpoints
142
+
143
+ ### Public Endpoints
144
+
145
+ | Method | Endpoint | Description |
146
+ |--------|----------|-------------|
147
+ | `GET` | `/api/team` | Get organization chart (hierarchical) |
148
+ | `GET` | `/api/team/:id` | Get collaborator profile |
149
+ | `GET` | `/api/resume` | Get resume data (defaults to Armand) |
150
+ | `GET` | `/api/resume?userId=:id` | Get specific user's resume |
151
+ | `GET` | `/api/projects` | List all projects |
152
+ | `GET` | `/api/projects/:id` | Get project details |
153
+ | `GET` | `/api/organization` | Get organization info |
154
+ | `GET` | `/api/tasks` | List public tasks |
155
+
156
+ ### Authentication
157
+
158
+ | Method | Endpoint | Description |
159
+ |--------|----------|-------------|
160
+ | `POST` | `/api/auth/login` | User login |
161
+ | `POST` | `/api/auth/logout` | User logout |
162
+ | `GET` | `/api/auth/verify` | Verify JWT token |
163
+
164
+ ### Admin Endpoints (Protected)
165
+
166
+ | Method | Endpoint | Description |
167
+ |--------|----------|-------------|
168
+ | `GET` | `/api/admin/projects` | List projects (admin) |
169
+ | `POST` | `/api/admin/projects` | Create project |
170
+ | `PUT` | `/api/admin/projects/:id` | Update project |
171
+ | `DELETE` | `/api/admin/projects/:id` | Delete project |
172
+ | `POST` | `/api/admin/media/upload` | Upload avatar/media |
173
+ | `POST` | `/api/ai-profile/generate` | Generate AI profile |
174
+ | `GET` | `/api/prompt-templates` | List AI prompt templates |
175
+
176
+ ---
177
+
178
+ ## ⚙️ Configuration
179
+
180
+ ### Environment Variables
181
+
182
+ Create a `.env` file in the Backend root:
183
+
184
+ ```env
185
+ # Server
186
+ PORT=3085
187
+ NODE_ENV=development
188
+
189
+ # Database
190
+ DATABASE_TYPE=sqlite
191
+ DATABASE_NAME=ark_portfolio.sqlite
192
+
193
+ # Authentication
194
+ JWT_SECRET=your-256-bit-secret-key
195
+ JWT_EXPIRES_IN=24h
196
+ BCRYPT_ROUNDS=12
197
+ ADMIN_KEY_CMS=your-admin-password
198
+
199
+ # AI Providers
200
+ OPENAI_API_KEY=sk-...
201
+ ANTHROPIC_API_KEY=sk-ant-...
202
+ GOOGLE_AI_API_KEY=...
203
+
204
+ # CORS
205
+ CORS_ORIGIN=http://localhost:3080
206
+
207
+ # File Upload
208
+ MAX_FILE_SIZE=10485760
209
+ UPLOAD_PATH=./Assets/Profil_Avatars
210
+ ```
211
+
212
+ ---
213
+
214
+ ## 🚀 Usage
215
+
216
+ ### Prerequisites
217
+
218
+ - Node.js v18+
219
+ - `@arkalliance/startupcms-ai-share` built and available
220
+
221
+ ### Development Server
222
+
223
+ ```bash
224
+ npm install
225
+ npm run dev
226
+ # Server runs on http://localhost:3085
227
+ ```
228
+
229
+ ### Production Build
230
+
231
+ ```bash
232
+ npm run build
233
+ npm start
234
+ ```
235
+
236
+ ### Database Seeding
237
+
238
+ ```bash
239
+ npm run seed
240
+ # Seeds organization, team members (Bryan, Armand, Radu, Mario, Lenny),
241
+ # experiences, skills, languages, hobbies, business domains, and avatars
242
+ ```
243
+
244
+ ### API Documentation
245
+
246
+ Once running, visit: [http://localhost:3085/api-docs](http://localhost:3085/api-docs)
247
+
248
+ ---
249
+
250
+ ## 🔒 Security Features
251
+
252
+ | Feature | Implementation |
253
+ |---------|----------------|
254
+ | Password Hashing | bcrypt (12 rounds) |
255
+ | JWT Tokens | HS256, 24h expiry |
256
+ | Security Headers | Helmet.js |
257
+ | CORS | Configured whitelist |
258
+ | Input Validation | DTO validation |
259
+ | Database Indexes | Performance + timing attack prevention |
260
+
261
+ ---
262
+
263
+ ## 🧪 Testing
264
+
265
+ ```bash
266
+ # Run tests
267
+ cd ../Ark.Alliance.StartupCms.Ai.Tests
268
+ npm test -- --testPathPattern=Backend
269
+ ```
270
+
271
+ ---
272
+
273
+ ## 📚 Related Documentation
274
+
275
+ | Document | Location | Purpose |
276
+ |----------|----------|---------|
277
+ | Main README | `../README.md` | Project overview, features, philosophy |
278
+ | Share Layer | `../Ark.Alliance.StartupCms.Ai.Share/README.md` | DTOs, enums consumed by API |
279
+ | UI Layer | `../Ark.Alliance.StartupCms.Ai.UI/README.md` | Frontend integration |
280
+ | Tests Layer | `../Ark.Alliance.StartupCms.Ai.Tests/README.md` | Backend test patterns |
281
+
282
+ ---
283
+
284
+ <div align="center">
285
+
286
+ **Ark.Alliance.StartupCms.AI.Backend** — Part of the Ark Alliance Ecosystem
287
+
288
+ <sub>
289
+ Armand Richelet-Kleinberg © M2H.IO<br>
290
+ AI-assisted development with Anthropic Claude & Google Gemini
291
+ </sub>
292
+
293
+ </div>
Ark.Alliance.StartupCms.Ai.Backend/convert-imports.ps1 ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # PowerShell script to convert package imports to relative imports
2
+ # Converts '@ark/portfolio-share' to relative path based on file location
3
+
4
+ $files = @(
5
+ "src/controllers/admin.controller.ts",
6
+ "src/database/entities/style-config.entity.ts",
7
+ "src/database/repositories/menu.repository.ts",
8
+ "src/services/admin-carousel.service.ts",
9
+ "src/services/admin-cv.service.ts",
10
+ "src/services/admin-media.service.ts",
11
+ "src/services/admin-menu.service.ts",
12
+ "src/services/admin-project.service.ts",
13
+ "src/services/admin-style.service.ts",
14
+ "src/services/admin-widget.service.ts",
15
+ "src/services/ai.service.ts",
16
+ "src/services/dashboard.service.ts",
17
+ "src/services/profile.service.ts"
18
+ )
19
+
20
+ foreach ($file in $files) {
21
+ $fullPath = "c:/Users/Criprtoswiss/source/repos/Ark.Portfolio/Ark.Portfolio.Backend/$file"
22
+
23
+ if (Test-Path $fullPath) {
24
+ $content = Get-Content $fullPath -Raw
25
+
26
+ # Calculate relative path from file to Share layer
27
+ # All these files are 3 levels deep from Backend root
28
+ $relativePath = if ($file -match "src/controllers/") {
29
+ "../../Ark.Portfolio.Share"
30
+ } elseif ($file -match "src/database/") {
31
+ "../../../Ark.Portfolio.Share"
32
+ } elseif ($file -match "src/services/") {
33
+ "../../Ark.Portfolio.Share"
34
+ } else {
35
+ "../../Ark.Portfolio.Share"
36
+ }
37
+
38
+ # Replace package import with relative import
39
+ $content = $content -replace "from '@ark/portfolio-share'", "from '$relativePath'"
40
+
41
+ Set-Content -Path $fullPath -Value $content -NoNewline
42
+ Write-Host "Updated: $file"
43
+ }
44
+ }
45
+
46
+ Write-Host "Done! Converted all files to use relative imports."
Ark.Alliance.StartupCms.Ai.Backend/data/ark_portfolio.sqlite ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0bd68477ae4ecaaf62fab987191cd8049b980b8551f9fc405ab29846134a89ce
3
+ size 2736128
Ark.Alliance.StartupCms.Ai.Backend/docker-compose.yml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: '3.8'
2
+ services:
3
+ db:
4
+ image: postgres:15-alpine
5
+ container_name: ark_portfolio_db
6
+ environment:
7
+ POSTGRES_USER: postgres
8
+ POSTGRES_PASSWORD: postgres
9
+ POSTGRES_DB: ark_portfolio
10
+ ports:
11
+ - "5432:5432"
12
+ volumes:
13
+ - postgres_data:/var/lib/postgresql/data
14
+
15
+ volumes:
16
+ postgres_data:
Ark.Alliance.StartupCms.Ai.Backend/final-fix-paths.ps1 ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Final fix: Point to the actual index.ts file in Ark.Portfolio.Share
2
+
3
+ Get-ChildItem -Path "src" -Recurse -Include *.ts | ForEach-Object {
4
+ $content = Get-Content $_.FullName -Raw
5
+
6
+ # Calculate correct relative path based on file depth
7
+ $relativePath = $_.FullName -replace [regex]::Escape("c:/Users/Criprtoswiss/source/repos/Ark.Portfolio/Ark.Portfolio.Backend/"), ""
8
+ $depth = ($relativePath -split "/").Count - 1
9
+
10
+ # Build correct path to Share index.ts
11
+ $shareIndexPath = switch ($depth) {
12
+ 2 { "../../Ark.Portfolio.Share/index" } # src/services/
13
+ 3 { "../../../Ark.Portfolio.Share/index" } # src/database/repositories/
14
+ default { "../../Ark.Portfolio.Share/index" }
15
+ }
16
+
17
+ # Replace the import
18
+ $newContent = $content -replace "from '\.\./\.\./Ark\.Portfolio\.Share'", "from '$shareIndexPath'"
19
+ $newContent = $newContent -replace "from '\.\./\.\./\.\./Ark\.Portfolio\.Share'", "from '$shareIndexPath'"
20
+
21
+ if ($newContent -ne $content) {
22
+ Set-Content -Path $_.FullName -Value $newContent -NoNewline
23
+ Write-Host "Fixed: $relativePath -> $shareIndexPath"
24
+ }
25
+ }
26
+
27
+ Write-Host "All paths now point to Ark.Portfolio.Share/index"
Ark.Alliance.StartupCms.Ai.Backend/fix-paths.ps1 ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Fix relative paths - services are 2 levels deep from src, need 3 ../ to reach parent
2
+ # Structure: Ark.Portfolio.Backend/src/services/*.ts -> ../../../Ark.Portfolio.Share
3
+
4
+ $filesToFix = @{
5
+ # Controllers: src/controllers/ -> need ../../
6
+ "src/controllers/admin.controller.ts" = "../../Ark.Portfolio.Share"
7
+
8
+ # Repositories: src/database/repositories/ -> need ../../../
9
+ "src/database/repositories/menu.repository.ts" = "../../../Ark.Portfolio.Share"
10
+
11
+ # Services: src/services/ -> need ../../
12
+ "src/services/admin-carousel.service.ts" = "../../Ark.Portfolio.Share"
13
+ "src/services/admin-cv.service.ts" = "../../Ark.Portfolio.Share"
14
+ "src/services/admin-media.service.ts" = "../../Ark.Portfolio.Share"
15
+ "src/services/admin-menu.service.ts" = "../../Ark.Portfolio.Share"
16
+ "src/services/admin-project.service.ts" = "../../Ark.Portfolio.Share"
17
+ "src/services/admin-style.service.ts" = "../../Ark.Portfolio.Share"
18
+ "src/services/admin-widget.service.ts" = "../../Ark.Portfolio.Share"
19
+ "src/services/ai.service.ts" = "../../Ark.Portfolio.Share"
20
+ "src/services/dashboard.service.ts" = "../../Ark.Portfolio.Share"
21
+ "src/services/profile.service.ts" = "../../Ark.Portfolio.Share"
22
+ }
23
+
24
+ foreach ($file in $filesToFix.Keys) {
25
+ $fullPath = "c:/Users/Criprtoswiss/source/repos/Ark.Portfolio/Ark.Portfolio.Backend/$file"
26
+ $correctPath = $filesToFix[$file]
27
+
28
+ if (Test-Path $fullPath) {
29
+ $content = Get-Content $fullPath -Raw
30
+
31
+ # Fix any incorrect paths
32
+ $content = $content -replace "from '\.\./\.\./Ark\.Portfolio\.Share'", "from '$correctPath'"
33
+ $content = $content -replace "from '\.\./\.\./\.\./Ark\.Portfolio\.Share'", "from '$correctPath'"
34
+
35
+ Set-Content -Path $fullPath -Value $content -NoNewline
36
+ Write-Host "Fixed: $file -> $correctPath"
37
+ }
38
+ else {
39
+ Write-Host "Not found: $file"
40
+ }
41
+ }
42
+
43
+ Write-Host "Done! All relative paths corrected."
Ark.Alliance.StartupCms.Ai.Backend/package-lock.json ADDED
The diff for this file is too large to render. See raw diff
 
Ark.Alliance.StartupCms.Ai.Backend/package.json ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "@ark-alliance-startupcms-ia/backend",
3
+ "version": "1.0.0",
4
+ "description": "Backend for Ark Portfolio",
5
+ "main": "dist/index.js",
6
+ "scripts": {
7
+ "start": "node dist/index.js",
8
+ "dev": "ts-node-dev -r tsconfig-paths/register --respawn --transpile-only src/index.ts",
9
+ "build": "tsc",
10
+ "seed": "ts-node -r tsconfig-paths/register src/database/seeds/seed.ts"
11
+ },
12
+ "dependencies": {
13
+ "@types/archiver": "^7.0.0",
14
+ "@types/bcryptjs": "^2.4.6",
15
+ "@types/jsonwebtoken": "^9.0.10",
16
+ "@types/multer": "^2.0.0",
17
+ "@types/node-forge": "^1.3.14",
18
+ "@types/swagger-jsdoc": "^6.0.4",
19
+ "@types/swagger-ui-express": "^4.1.8",
20
+ "archiver": "^7.0.1",
21
+ "bcryptjs": "^3.0.3",
22
+ "class-transformer": "^0.5.1",
23
+ "class-validator": "^0.14.0",
24
+ "cors": "^2.8.5",
25
+ "dotenv": "^16.0.3",
26
+ "express": "^4.18.2",
27
+ "helmet": "^6.0.1",
28
+ "jsonwebtoken": "^9.0.3",
29
+ "multer": "^2.0.2",
30
+ "node-forge": "^1.3.3",
31
+ "pg": "^8.10.0",
32
+ "reflect-metadata": "^0.1.13",
33
+ "selfsigned": "^5.4.0",
34
+ "sqlite3": "^5.1.7",
35
+ "swagger-jsdoc": "^6.2.8",
36
+ "swagger-ui-express": "^5.0.1",
37
+ "typeorm": "^0.3.12"
38
+ },
39
+ "devDependencies": {
40
+ "@types/cors": "^2.8.13",
41
+ "@types/express": "^4.17.17",
42
+ "@types/node": "^18.15.11",
43
+ "ts-node": "^10.9.2",
44
+ "ts-node-dev": "^2.0.0",
45
+ "tsconfig-paths": "^4.2.0",
46
+ "typescript": "^5.0.0"
47
+ }
48
+ }
Ark.Alliance.StartupCms.Ai.Backend/revert-to-alias.ps1 ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Revert to using tsconfig path alias since relative paths don't work in Node.js
2
+ # The path mapping in tsconfig.json already points @ark/portfolio-share to ../Ark.Portfolio.Share/index.ts
3
+
4
+ Get-ChildItem -Path "src" -Recurse -Include *.ts | ForEach-Object {
5
+ $content = Get-Content $_.FullName -Raw
6
+
7
+ # Replace all relative Share imports back to the alias
8
+ $newContent = $content -replace "from '\.\./\.\./Ark\.Portfolio\.Share/index'", "from '@ark/portfolio-share'"
9
+ $newContent = $newContent -replace "from '\.\./\.\./\.\./Ark\.Portfolio\.Share/index'", "from '@ark/portfolio-share'"
10
+ $newContent = $newContent -replace "from '\.\./\.\./\.\./\.\./Ark\.Portfolio\.Share/enums/admin\.enums'", "from '@ark/portfolio-share'"
11
+
12
+ if ($newContent -ne $content) {
13
+ Set-Content -Path $_.FullName -Value $newContent -NoNewline
14
+ $relativePath = $_.FullName -replace [regex]::Escape("C:\Users\Criprtoswiss\source\repos\Ark.Portfolio\Ark.Portfolio.Backend\"), ""
15
+ Write-Host "Reverted: $relativePath"
16
+ }
17
+ }
18
+
19
+ Write-Host "All imports now use @ark/portfolio-share alias (tsconfig path mapping)"
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Armand.jfif ADDED
Binary file (12.9 kB). View file
 
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Bryan.jfif ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b4c4a229f87235a174f89f547103440c9c10a9119b7293882d79bfc77d639e4b
3
+ size 100388
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Lenny Avril.jpeg ADDED

Git LFS Details

  • SHA256: 4a8566d631ef4e43cf817d9cf4704d1d84cbde8ae820eaf21a18189be762525a
  • Pointer size: 131 Bytes
  • Size of remote file: 128 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Mario.png ADDED

Git LFS Details

  • SHA256: b760e2d9907193ba96910cd3b7856e8862e739bb236bbf7b349cca94ce830210
  • Pointer size: 131 Bytes
  • Size of remote file: 492 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/RaduDinulescu.jfif ADDED
Binary file (48.1 kB). View file
 
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.React.Component/components-hero.png ADDED

Git LFS Details

  • SHA256: 336b801f8ab538800e00f69180727b3ab5a8aba113f4f59b1808dbb7e7b5cd96
  • Pointer size: 132 Bytes
  • Size of remote file: 4.08 MB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/ArkAllianceStartupCmsAiHero.png ADDED

Git LFS Details

  • SHA256: dc699238f96ac2a690579685416f3ee31564c5ad4d461309db73c5e11c3bb207
  • Pointer size: 131 Bytes
  • Size of remote file: 385 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/ArkAllianceStartupCmsAi_Hero.Png ADDED

Git LFS Details

  • SHA256: ad36b3d343cb4fde6896ea5eef472bb0068f94abb1079ae561fc40923aece2cf
  • Pointer size: 132 Bytes
  • Size of remote file: 1.31 MB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/Google_AI_Studio_2026-01-08T00_41_57.111Z.png ADDED

Git LFS Details

  • SHA256: b5cd68e2a95d444d0016b6ae00830a4bfebe9b802aad2202cdaa150608117187
  • Pointer size: 132 Bytes
  • Size of remote file: 1.28 MB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot10.PNG ADDED

Git LFS Details

  • SHA256: 9975e1830cb087bc177751ac162554ebe09ea1ee02dc881b0499954cc6fa13bc
  • Pointer size: 131 Bytes
  • Size of remote file: 322 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot11.PNG ADDED

Git LFS Details

  • SHA256: 39a5c84b9a23784f6ee68772b3292945d557d4681538e1bbe762a50fbaf49747
  • Pointer size: 131 Bytes
  • Size of remote file: 378 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot12.PNG ADDED

Git LFS Details

  • SHA256: 459bb1c112c7a10eb22eb9c9a0d132c4badeaf78e23319e439c119bdc787f376
  • Pointer size: 131 Bytes
  • Size of remote file: 155 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot13.PNG ADDED

Git LFS Details

  • SHA256: 614315756f28c729ae556a3b284460a0d7f63e8e9e3f00f10d752f9dcd840127
  • Pointer size: 131 Bytes
  • Size of remote file: 170 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot14.PNG ADDED

Git LFS Details

  • SHA256: 3ac92fa503174a5c4c6685c731a06b77dfe9aa7ff094f8ab3034d68fc8a0c0e1
  • Pointer size: 131 Bytes
  • Size of remote file: 459 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot2.PNG ADDED

Git LFS Details

  • SHA256: 6c25f04b3a256ba08022b0a14e7f3fb8d4c8d5fdb68ab8e5e9390cee46dc753a
  • Pointer size: 131 Bytes
  • Size of remote file: 465 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot3.PNG ADDED

Git LFS Details

  • SHA256: 0b7e290bd1e3c51a836ab9ab613c594a1aa57315dc9a76f961899692e675ed3a
  • Pointer size: 131 Bytes
  • Size of remote file: 398 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot4.PNG ADDED

Git LFS Details

  • SHA256: f322678e0f5a499352eccd3a6a89e0190274fc19ab03ab08ed36c2d8e0731675
  • Pointer size: 131 Bytes
  • Size of remote file: 214 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot5.PNG ADDED

Git LFS Details

  • SHA256: 7a74f2a561083dc5041332b70f1ef267ebb3ba2b2fbf72767a84ff7b7e7dec4c
  • Pointer size: 131 Bytes
  • Size of remote file: 216 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot6.PNG ADDED

Git LFS Details

  • SHA256: 66435ea297e9f7466e72a3cd1f4671e1e4da1f914521786a3cdcd4987624aad6
  • Pointer size: 131 Bytes
  • Size of remote file: 505 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot7.PNG ADDED

Git LFS Details

  • SHA256: a2cea73cf7bf2a1e4dedadad32fc30e2b6720ed513cb0b3c2ee0679aaea46d5a
  • Pointer size: 131 Bytes
  • Size of remote file: 370 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot8.PNG ADDED

Git LFS Details

  • SHA256: 4b554f447aa539e11f277200d0979cd6409c6f49bbb09968d043efce36b6ac12
  • Pointer size: 131 Bytes
  • Size of remote file: 271 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Capture.PNG ADDED

Git LFS Details

  • SHA256: a2cea73cf7bf2a1e4dedadad32fc30e2b6720ed513cb0b3c2ee0679aaea46d5a
  • Pointer size: 131 Bytes
  • Size of remote file: 370 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/bot-hero.png ADDED

Git LFS Details

  • SHA256: 57a8dd5a0928f512d557c043fa10d68c6b4106fda7dcf61b8a57f538c800d9b9
  • Pointer size: 132 Bytes
  • Size of remote file: 1.07 MB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/bot1.PNG ADDED

Git LFS Details

  • SHA256: bcc256615a841b8686d03fa6159e33d37b1a40ccd0365288c946dd9740f0b2de
  • Pointer size: 131 Bytes
  • Size of remote file: 259 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Providers.Lib/providers-hero.png ADDED

Git LFS Details

  • SHA256: 8fd701b06d1369df334415dddbe30c52070f5df207a025173ef8c65e7715f7c3
  • Pointer size: 132 Bytes
  • Size of remote file: 1.13 MB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Providers.Lib/trading-hero.png ADDED

Git LFS Details

  • SHA256: 83efb733710f1a58fba2767716bd3f17e6c795afd9cd1691adc6c7ef4d58aed7
  • Pointer size: 131 Bytes
  • Size of remote file: 695 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.TrendsCalculator/trends-hero.png ADDED

Git LFS Details

  • SHA256: 19b5c66ce45f76dc2214f5e2cb9cebe7daaf44ca32ef8fb4d2d161b695833289
  • Pointer size: 132 Bytes
  • Size of remote file: 4.06 MB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.TrendsCalculator/trends-hero.png.jpg ADDED

Git LFS Details

  • SHA256: 19b5c66ce45f76dc2214f5e2cb9cebe7daaf44ca32ef8fb4d2d161b695833289
  • Pointer size: 132 Bytes
  • Size of remote file: 4.06 MB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance/Ark_Alliance_1.png ADDED

Git LFS Details

  • SHA256: f2e202213ddc181cdfcea31d207cdfc5697d0ac9f88415e7250a875f4f92aeb4
  • Pointer size: 132 Bytes
  • Size of remote file: 2.64 MB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance/Ark_Alliance_Hero.png ADDED

Git LFS Details

  • SHA256: 119048c8b09932e7ba69e38073e74ff89cb2fe95021c8e6fd11708399322b352
  • Pointer size: 132 Bytes
  • Size of remote file: 1.18 MB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Dashobard.PNG ADDED

Git LFS Details

  • SHA256: b5f6573f8cf1d13dfca66b52329455f733935c65ddab4d567656e916ff39f738
  • Pointer size: 131 Bytes
  • Size of remote file: 170 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Hero_Carrousel.PNG ADDED

Git LFS Details

  • SHA256: 1fa16b5a96617ec4785fa1070ba68414b6e5e39c031044f774ec298f41d0b62c
  • Pointer size: 131 Bytes
  • Size of remote file: 244 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Projects.PNG ADDED

Git LFS Details

  • SHA256: c863dcb37da3cae3e73422ff0a23b80d59af76565922c52b1d1f5291aab5fbbd
  • Pointer size: 131 Bytes
  • Size of remote file: 705 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_ResumeManager.PNG ADDED

Git LFS Details

  • SHA256: 55c991692dc9d16b626e2021d9bf3154180ffc5ae18d6ca8e18905bf5b4113fb
  • Pointer size: 131 Bytes
  • Size of remote file: 217 kB
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/portfolio-hero.png ADDED

Git LFS Details

  • SHA256: fc29d203e8ea95c84865d68f7762c5b23efa501678a8bec35c8bbcbf2bc212b6
  • Pointer size: 132 Bytes
  • Size of remote file: 4.16 MB