Spaces:
Sleeping
Sleeping
Deploy Ark.Alliance.StartupCms.AI with corrected Docker build
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +86 -0
- Ark.Alliance.StartupCms.Ai.Backend/.env +8 -0
- Ark.Alliance.StartupCms.Ai.Backend/.env.example +49 -0
- Ark.Alliance.StartupCms.Ai.Backend/.gitignore +0 -0
- Ark.Alliance.StartupCms.Ai.Backend/Certificate/server.crt +20 -0
- Ark.Alliance.StartupCms.Ai.Backend/Certificate/server.key +27 -0
- Ark.Alliance.StartupCms.Ai.Backend/README.md +293 -0
- Ark.Alliance.StartupCms.Ai.Backend/convert-imports.ps1 +46 -0
- Ark.Alliance.StartupCms.Ai.Backend/data/ark_portfolio.sqlite +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/docker-compose.yml +16 -0
- Ark.Alliance.StartupCms.Ai.Backend/final-fix-paths.ps1 +27 -0
- Ark.Alliance.StartupCms.Ai.Backend/fix-paths.ps1 +43 -0
- Ark.Alliance.StartupCms.Ai.Backend/package-lock.json +0 -0
- Ark.Alliance.StartupCms.Ai.Backend/package.json +48 -0
- Ark.Alliance.StartupCms.Ai.Backend/revert-to-alias.ps1 +19 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Armand.jfif +0 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Bryan.jfif +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Lenny Avril.jpeg +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Mario.png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/RaduDinulescu.jfif +0 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.React.Component/components-hero.png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/ArkAllianceStartupCmsAiHero.png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/ArkAllianceStartupCmsAi_Hero.Png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/Google_AI_Studio_2026-01-08T00_41_57.111Z.png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot10.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot11.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot12.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot13.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot14.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot2.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot3.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot4.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot5.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot6.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot7.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot8.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Capture.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/bot-hero.png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/bot1.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Providers.Lib/providers-hero.png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Providers.Lib/trading-hero.png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.TrendsCalculator/trends-hero.png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.TrendsCalculator/trends-hero.png.jpg +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance/Ark_Alliance_1.png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance/Ark_Alliance_Hero.png +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Dashobard.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Hero_Carrousel.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Projects.PNG +3 -0
- Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_ResumeManager.PNG +3 -0
- 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 |
+

|
| 6 |
+

|
| 7 |
+

|
| 8 |
+

|
| 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
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Profil_Avatars/Mario.png
ADDED
|
|
Git LFS Details
|
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
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/ArkAllianceStartupCmsAiHero.png
ADDED
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.StartupCms.AI/ArkAllianceStartupCmsAi_Hero.Png
ADDED
|
|
Git LFS Details
|
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
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot10.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot11.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot12.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot13.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot14.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot2.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot3.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot4.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot5.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot6.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot7.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Bot8.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/Capture.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/bot-hero.png
ADDED
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Bot/bot1.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Providers.Lib/providers-hero.png
ADDED
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.Trading.Providers.Lib/trading-hero.png
ADDED
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.TrendsCalculator/trends-hero.png
ADDED
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance.TrendsCalculator/trends-hero.png.jpg
ADDED
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance/Ark_Alliance_1.png
ADDED
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Alliance/Ark_Alliance_Hero.png
ADDED
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Dashobard.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Hero_Carrousel.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_Projects.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/Admin_ResumeManager.PNG
ADDED
|
|
Git LFS Details
|
Ark.Alliance.StartupCms.Ai.Backend/src/Assets/Projects/Ark.Portfolio/portfolio-hero.png
ADDED
|
Git LFS Details
|