openship 0.1.1 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (607) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +5988 -0
  3. package/dist/server/index.js +324841 -0
  4. package/dist/server/migrations/0000_init.sql +666 -0
  5. package/dist/server/migrations/0001_brief_tomorrow_man.sql +47 -0
  6. package/dist/server/migrations/0002_funny_dazzler.sql +2 -0
  7. package/dist/server/migrations/0003_third_killer_shrike.sql +1 -0
  8. package/dist/server/migrations/0004_session_active_org_not_null.sql +10 -0
  9. package/dist/server/migrations/0005_warm_amazoness.sql +3 -0
  10. package/dist/server/migrations/0006_lumpy_joystick.sql +1 -0
  11. package/dist/server/migrations/0007_outgoing_maginty.sql +2 -0
  12. package/dist/server/migrations/0008_frozen_cutover.sql +3 -0
  13. package/dist/server/migrations/0009_credits_billing.sql +142 -0
  14. package/dist/server/migrations/0010_credit_grant_dedupe.sql +14 -0
  15. package/dist/server/migrations/0011_remove_credit_ledger.sql +23 -0
  16. package/dist/server/migrations/0012_smart_deploys_and_git_rollback.sql +81 -0
  17. package/dist/server/migrations/0013_fix_check_run_rollup_unique.sql +38 -0
  18. package/dist/server/migrations/0014_default_rollback_git.sql +9 -0
  19. package/dist/server/migrations/0015_billing_idempotency_grants.sql +41 -0
  20. package/dist/server/migrations/0016_github_auth_high_findings.sql +30 -0
  21. package/dist/server/migrations/0017_spooky_rumiko_fujikawa.sql +6 -0
  22. package/dist/server/migrations/0018_calm_shatterstar.sql +1 -0
  23. package/dist/server/migrations/0019_rename_workspace_install_to_prepare.sql +1 -0
  24. package/dist/server/migrations/0020_uneven_the_renegades.sql +13 -0
  25. package/dist/server/migrations/0021_shiny_firestar.sql +2 -0
  26. package/dist/server/migrations/0022_version_on_success_backfill.sql +6 -0
  27. package/dist/server/migrations/0023_productive_gorilla_man.sql +17 -0
  28. package/dist/server/migrations/0024_sleepy_peter_quill.sql +2 -0
  29. package/dist/server/migrations/0025_smooth_blue_shield.sql +1 -0
  30. package/dist/server/migrations/0026_mail_backup_source.sql +11 -0
  31. package/dist/server/migrations/0027_opposite_anthem.sql +6 -0
  32. package/dist/server/migrations/0028_stale_rogue.sql +18 -0
  33. package/dist/server/migrations/0029_bouncy_loners.sql +16 -0
  34. package/dist/server/migrations/0030_bright_darkstar.sql +6 -0
  35. package/dist/server/migrations/0031_conscious_catseye.sql +13 -0
  36. package/dist/server/migrations/0032_wet_mimic.sql +51 -0
  37. package/dist/server/migrations/0033_eminent_molly_hayes.sql +2 -0
  38. package/dist/server/migrations/meta/0000_snapshot.json +5110 -0
  39. package/dist/server/migrations/meta/0001_snapshot.json +5257 -0
  40. package/dist/server/migrations/meta/0002_snapshot.json +5279 -0
  41. package/dist/server/migrations/meta/0003_snapshot.json +5286 -0
  42. package/dist/server/migrations/meta/0004_snapshot.json +5286 -0
  43. package/dist/server/migrations/meta/0005_snapshot.json +5305 -0
  44. package/dist/server/migrations/meta/0006_snapshot.json +5311 -0
  45. package/dist/server/migrations/meta/0007_snapshot.json +5323 -0
  46. package/dist/server/migrations/meta/0016_snapshot.json +6345 -0
  47. package/dist/server/migrations/meta/0017_snapshot.json +6383 -0
  48. package/dist/server/migrations/meta/0018_snapshot.json +6390 -0
  49. package/dist/server/migrations/meta/0019_snapshot.json +6390 -0
  50. package/dist/server/migrations/meta/0020_snapshot.json +6497 -0
  51. package/dist/server/migrations/meta/0021_snapshot.json +6509 -0
  52. package/dist/server/migrations/meta/0022_snapshot.json +6509 -0
  53. package/dist/server/migrations/meta/0023_snapshot.json +6629 -0
  54. package/dist/server/migrations/meta/0024_snapshot.json +6641 -0
  55. package/dist/server/migrations/meta/0025_snapshot.json +6648 -0
  56. package/dist/server/migrations/meta/0026_snapshot.json +6750 -0
  57. package/dist/server/migrations/meta/0027_snapshot.json +6757 -0
  58. package/dist/server/migrations/meta/0028_snapshot.json +6895 -0
  59. package/dist/server/migrations/meta/0029_snapshot.json +7028 -0
  60. package/dist/server/migrations/meta/0030_snapshot.json +7066 -0
  61. package/dist/server/migrations/meta/0031_snapshot.json +7181 -0
  62. package/dist/server/migrations/meta/0032_snapshot.json +7570 -0
  63. package/dist/server/migrations/meta/0033_snapshot.json +7597 -0
  64. package/dist/server/migrations/meta/_journal.json +244 -0
  65. package/dist/server/pglite/pglite.data +0 -0
  66. package/dist/server/pglite/pglite.wasm +0 -0
  67. package/package.json +31 -33
  68. package/.env.example +0 -38
  69. package/.nvmrc +0 -1
  70. package/.prettierrc +0 -7
  71. package/CONTRIBUTING.md +0 -90
  72. package/LICENSE +0 -661
  73. package/README.md +0 -360
  74. package/apps/api/.env.example +0 -30
  75. package/apps/api/Dockerfile +0 -22
  76. package/apps/api/package.json +0 -41
  77. package/apps/api/src/app.ts +0 -69
  78. package/apps/api/src/config/env.ts +0 -113
  79. package/apps/api/src/config/index.ts +0 -1
  80. package/apps/api/src/index.ts +0 -8
  81. package/apps/api/src/lib/auth-mode.ts +0 -42
  82. package/apps/api/src/lib/auth.ts +0 -105
  83. package/apps/api/src/lib/cache.ts +0 -128
  84. package/apps/api/src/lib/cloud-auth-proxy.ts +0 -310
  85. package/apps/api/src/lib/cloud-client.ts +0 -103
  86. package/apps/api/src/lib/compose-parser.ts +0 -138
  87. package/apps/api/src/lib/controller-helpers.ts +0 -90
  88. package/apps/api/src/lib/email-templates.ts +0 -94
  89. package/apps/api/src/lib/encryption.ts +0 -102
  90. package/apps/api/src/lib/local-user.ts +0 -65
  91. package/apps/api/src/lib/mail.ts +0 -48
  92. package/apps/api/src/lib/notifications.ts +0 -195
  93. package/apps/api/src/lib/openship-cloud.ts +0 -101
  94. package/apps/api/src/lib/resources.ts +0 -96
  95. package/apps/api/src/lib/screenshots.ts +0 -189
  96. package/apps/api/src/lib/ssh-manager.ts +0 -369
  97. package/apps/api/src/lib/ssl-scheduler.ts +0 -109
  98. package/apps/api/src/lib/stack-detector.ts +0 -708
  99. package/apps/api/src/lib/system-debug.ts +0 -10
  100. package/apps/api/src/middleware/auth.ts +0 -60
  101. package/apps/api/src/middleware/error-handler.ts +0 -41
  102. package/apps/api/src/middleware/index.ts +0 -5
  103. package/apps/api/src/middleware/internal-auth.ts +0 -40
  104. package/apps/api/src/middleware/local-only.ts +0 -20
  105. package/apps/api/src/middleware/rate-limiter.ts +0 -35
  106. package/apps/api/src/modules/analytics/analytics.controller.ts +0 -111
  107. package/apps/api/src/modules/analytics/analytics.routes.ts +0 -29
  108. package/apps/api/src/modules/analytics/analytics.schema.ts +0 -37
  109. package/apps/api/src/modules/analytics/analytics.service.ts +0 -264
  110. package/apps/api/src/modules/auth/auth.routes.ts +0 -237
  111. package/apps/api/src/modules/billing/billing.controller.ts +0 -60
  112. package/apps/api/src/modules/billing/billing.routes.ts +0 -34
  113. package/apps/api/src/modules/billing/billing.schema.ts +0 -9
  114. package/apps/api/src/modules/billing/billing.service.ts +0 -33
  115. package/apps/api/src/modules/cloud/cloud.controller.ts +0 -225
  116. package/apps/api/src/modules/cloud/cloud.routes.ts +0 -40
  117. package/apps/api/src/modules/deployments/build.service.ts +0 -791
  118. package/apps/api/src/modules/deployments/deployment-lifecycle.ts +0 -138
  119. package/apps/api/src/modules/deployments/deployment.controller.ts +0 -343
  120. package/apps/api/src/modules/deployments/deployment.routes.ts +0 -37
  121. package/apps/api/src/modules/deployments/deployment.schema.ts +0 -39
  122. package/apps/api/src/modules/deployments/deployment.service.ts +0 -190
  123. package/apps/api/src/modules/deployments/preflight.ts +0 -280
  124. package/apps/api/src/modules/deployments/prepare.service.ts +0 -252
  125. package/apps/api/src/modules/deployments/session-manager.ts +0 -283
  126. package/apps/api/src/modules/deployments/ssl.service.ts +0 -73
  127. package/apps/api/src/modules/domains/domain.controller.ts +0 -73
  128. package/apps/api/src/modules/domains/domain.routes.ts +0 -24
  129. package/apps/api/src/modules/domains/domain.schema.ts +0 -35
  130. package/apps/api/src/modules/domains/domain.service.ts +0 -385
  131. package/apps/api/src/modules/github/github.auth.ts +0 -397
  132. package/apps/api/src/modules/github/github.controller.ts +0 -387
  133. package/apps/api/src/modules/github/github.local-auth.ts +0 -251
  134. package/apps/api/src/modules/github/github.routes.ts +0 -50
  135. package/apps/api/src/modules/github/github.schema.ts +0 -52
  136. package/apps/api/src/modules/github/github.service.ts +0 -592
  137. package/apps/api/src/modules/github/github.types.ts +0 -158
  138. package/apps/api/src/modules/github/github.webhook.ts +0 -186
  139. package/apps/api/src/modules/github/index.ts +0 -16
  140. package/apps/api/src/modules/health/health.routes.ts +0 -45
  141. package/apps/api/src/modules/projects/project.controller.ts +0 -498
  142. package/apps/api/src/modules/projects/project.routes.ts +0 -67
  143. package/apps/api/src/modules/projects/project.schema.ts +0 -107
  144. package/apps/api/src/modules/projects/project.service.ts +0 -514
  145. package/apps/api/src/modules/settings/settings.controller.ts +0 -55
  146. package/apps/api/src/modules/settings/settings.routes.ts +0 -25
  147. package/apps/api/src/modules/settings/settings.service.ts +0 -49
  148. package/apps/api/src/modules/system/filesystem.controller.ts +0 -66
  149. package/apps/api/src/modules/system/index.ts +0 -1
  150. package/apps/api/src/modules/system/server-check.controller.ts +0 -475
  151. package/apps/api/src/modules/system/setup-session.ts +0 -255
  152. package/apps/api/src/modules/system/setup.controller.ts +0 -128
  153. package/apps/api/src/modules/system/system.routes.ts +0 -42
  154. package/apps/api/src/modules/webhooks/webhook.controller.ts +0 -64
  155. package/apps/api/src/modules/webhooks/webhook.routes.ts +0 -15
  156. package/apps/api/src/modules/webhooks/webhook.service.ts +0 -52
  157. package/apps/api/src/modules/webhooks/webhook.types.ts +0 -35
  158. package/apps/api/tsconfig.json +0 -14
  159. package/apps/cli/package.json +0 -26
  160. package/apps/cli/src/commands/deploy.ts +0 -11
  161. package/apps/cli/src/commands/init.ts +0 -8
  162. package/apps/cli/src/commands/login.ts +0 -8
  163. package/apps/cli/src/commands/logs.ts +0 -9
  164. package/apps/cli/src/index.ts +0 -21
  165. package/apps/cli/src/lib/api-client.ts +0 -35
  166. package/apps/cli/tsconfig.json +0 -13
  167. package/apps/dashboard/Dockerfile +0 -22
  168. package/apps/dashboard/components.json +0 -20
  169. package/apps/dashboard/next-env.d.ts +0 -6
  170. package/apps/dashboard/next.config.mjs +0 -16
  171. package/apps/dashboard/package.json +0 -40
  172. package/apps/dashboard/postcss.config.mjs +0 -5
  173. package/apps/dashboard/public/android-chrome-192x192.png +0 -0
  174. package/apps/dashboard/public/android-chrome-512x512.png +0 -0
  175. package/apps/dashboard/public/apple-touch-icon.png +0 -0
  176. package/apps/dashboard/public/favicon-16x16.png +0 -0
  177. package/apps/dashboard/public/favicon-32x32.png +0 -0
  178. package/apps/dashboard/public/favicon.ico +0 -0
  179. package/apps/dashboard/public/site.webmanifest +0 -19
  180. package/apps/dashboard/src/app/(auth)/forgot-password/page.tsx +0 -114
  181. package/apps/dashboard/src/app/(auth)/layout.tsx +0 -21
  182. package/apps/dashboard/src/app/(auth)/login/page.tsx +0 -220
  183. package/apps/dashboard/src/app/(auth)/providers.tsx +0 -34
  184. package/apps/dashboard/src/app/(auth)/register/page.tsx +0 -176
  185. package/apps/dashboard/src/app/(auth)/reset-password/page.tsx +0 -172
  186. package/apps/dashboard/src/app/(auth)/verify-email/page.tsx +0 -190
  187. package/apps/dashboard/src/app/(dashboard)/(deployment)/build/[id]/page.tsx +0 -162
  188. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/BuildSummary.tsx +0 -166
  189. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/DnsConfiguration.tsx +0 -119
  190. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/DomainSettings.tsx +0 -291
  191. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/Header.tsx +0 -71
  192. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/Sidebar.tsx +0 -270
  193. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/SkeletonLoader.tsx +0 -87
  194. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/page.tsx +0 -169
  195. package/apps/dashboard/src/app/(dashboard)/(deployment)/layout.tsx +0 -7
  196. package/apps/dashboard/src/app/(dashboard)/billing/page.tsx +0 -3
  197. package/apps/dashboard/src/app/(dashboard)/deployments/components/CommitDetailsModal.tsx +0 -240
  198. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentCard.tsx +0 -121
  199. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentHeader.tsx +0 -89
  200. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentMenu.tsx +0 -182
  201. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsContent.tsx +0 -324
  202. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsFilters.tsx +0 -99
  203. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsList.tsx +0 -31
  204. package/apps/dashboard/src/app/(dashboard)/deployments/components/EmptyState.tsx +0 -101
  205. package/apps/dashboard/src/app/(dashboard)/deployments/components/LoadingSkeleton.tsx +0 -57
  206. package/apps/dashboard/src/app/(dashboard)/deployments/components/ProjectFilter.tsx +0 -109
  207. package/apps/dashboard/src/app/(dashboard)/deployments/components/index.ts +0 -9
  208. package/apps/dashboard/src/app/(dashboard)/deployments/page.tsx +0 -14
  209. package/apps/dashboard/src/app/(dashboard)/deployments/types.ts +0 -44
  210. package/apps/dashboard/src/app/(dashboard)/deployments/utils.ts +0 -176
  211. package/apps/dashboard/src/app/(dashboard)/domains/page.tsx +0 -3
  212. package/apps/dashboard/src/app/(dashboard)/integrations/page.tsx +0 -321
  213. package/apps/dashboard/src/app/(dashboard)/layout.tsx +0 -27
  214. package/apps/dashboard/src/app/(dashboard)/library/components/ConnectPrompt.tsx +0 -187
  215. package/apps/dashboard/src/app/(dashboard)/library/components/LibrarySidebar.tsx +0 -147
  216. package/apps/dashboard/src/app/(dashboard)/library/components/LoadingSkeleton.tsx +0 -39
  217. package/apps/dashboard/src/app/(dashboard)/library/components/LocalProjects.tsx +0 -548
  218. package/apps/dashboard/src/app/(dashboard)/library/components/RepositoryList.tsx +0 -292
  219. package/apps/dashboard/src/app/(dashboard)/library/components/TemplateGrid.tsx +0 -36
  220. package/apps/dashboard/src/app/(dashboard)/library/components/UrlImport.tsx +0 -74
  221. package/apps/dashboard/src/app/(dashboard)/library/page.tsx +0 -121
  222. package/apps/dashboard/src/app/(dashboard)/library/types.ts +0 -26
  223. package/apps/dashboard/src/app/(dashboard)/monitoring/page.tsx +0 -3
  224. package/apps/dashboard/src/app/(dashboard)/page.tsx +0 -485
  225. package/apps/dashboard/src/app/(dashboard)/projects/[id]/[[...slug]]/layout.tsx +0 -22
  226. package/apps/dashboard/src/app/(dashboard)/projects/[id]/[[...slug]]/page.tsx +0 -286
  227. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/AdvancedSettings.tsx +0 -235
  228. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/BuildSettings.tsx +0 -174
  229. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DeleteConfirmationDialog.tsx +0 -45
  230. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DeletionModal.tsx +0 -95
  231. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/Deployments.tsx +0 -11
  232. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DomainSettings.tsx +0 -523
  233. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/EnvironmentSettings.tsx +0 -246
  234. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GeneralSettings.tsx +0 -93
  235. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GitInfo.tsx +0 -261
  236. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GitSettings.tsx +0 -391
  237. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/LogsSettings.tsx +0 -133
  238. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ProjectNotFound.tsx +0 -95
  239. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ProjectsBottomNavigation.tsx +0 -62
  240. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ResourceSettings.tsx +0 -333
  241. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SettingSection.tsx +0 -66
  242. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SettingsNavigation.tsx +0 -27
  243. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SleepModeSettings.tsx +0 -134
  244. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProductionUrl.tsx +0 -25
  245. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProjectIdentity.tsx +0 -159
  246. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProjectInfo.tsx +0 -58
  247. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/SkeletonLoader.tsx +0 -170
  248. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/StatsCards.tsx +0 -33
  249. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/TopPaths.tsx +0 -56
  250. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/TrafficChart.tsx +0 -157
  251. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/index.ts +0 -14
  252. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/LogsActions.tsx +0 -52
  253. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/ServerLogs.tsx +0 -249
  254. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/TerminalLogs.tsx +0 -682
  255. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/logs.css +0 -127
  256. package/apps/dashboard/src/app/(dashboard)/projects/components/DeploymentCard.tsx +0 -73
  257. package/apps/dashboard/src/app/(dashboard)/projects/components/ProjectCard.tsx +0 -330
  258. package/apps/dashboard/src/app/(dashboard)/projects/page.tsx +0 -330
  259. package/apps/dashboard/src/app/(dashboard)/providers.tsx +0 -23
  260. package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/components-tab.tsx +0 -329
  261. package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/overview-tab.tsx +0 -229
  262. package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/terminal-tab.tsx +0 -38
  263. package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/page.tsx +0 -437
  264. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/checking-state.tsx +0 -15
  265. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/choose-mode.tsx +0 -54
  266. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/component-row.tsx +0 -65
  267. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/error-banner.tsx +0 -13
  268. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/installing-panel.tsx +0 -227
  269. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/results-panel.tsx +0 -90
  270. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/setup-header.tsx +0 -56
  271. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/types.ts +0 -13
  272. package/apps/dashboard/src/app/(dashboard)/servers/new/page.tsx +0 -666
  273. package/apps/dashboard/src/app/(dashboard)/servers/page.tsx +0 -283
  274. package/apps/dashboard/src/app/(dashboard)/settings/_components/BuildPreferences.tsx +0 -110
  275. package/apps/dashboard/src/app/(dashboard)/settings/_components/CloudConnection.tsx +0 -147
  276. package/apps/dashboard/src/app/(dashboard)/settings/_components/InstanceInfo.tsx +0 -54
  277. package/apps/dashboard/src/app/(dashboard)/settings/_components/ServerConnection.tsx +0 -407
  278. package/apps/dashboard/src/app/(dashboard)/settings/_components/SettingsSection.tsx +0 -32
  279. package/apps/dashboard/src/app/(dashboard)/settings/page.tsx +0 -67
  280. package/apps/dashboard/src/app/auth/callback/close/page.tsx +0 -23
  281. package/apps/dashboard/src/app/auth/callback/install/page.tsx +0 -40
  282. package/apps/dashboard/src/app/authorize/page.tsx +0 -137
  283. package/apps/dashboard/src/app/globals.css +0 -57
  284. package/apps/dashboard/src/app/layout.tsx +0 -55
  285. package/apps/dashboard/src/components/auth-shell.tsx +0 -66
  286. package/apps/dashboard/src/components/deployments/types.ts +0 -44
  287. package/apps/dashboard/src/components/global-deployments/index.ts +0 -17
  288. package/apps/dashboard/src/components/i18n-provider.tsx +0 -100
  289. package/apps/dashboard/src/components/import-project/BuildSettings.tsx +0 -376
  290. package/apps/dashboard/src/components/import-project/BuildSkeleton.tsx +0 -161
  291. package/apps/dashboard/src/components/import-project/BuildTerminal.tsx +0 -358
  292. package/apps/dashboard/src/components/import-project/ComposeServices.tsx +0 -455
  293. package/apps/dashboard/src/components/import-project/DeploymentProcessing.tsx +0 -510
  294. package/apps/dashboard/src/components/import-project/DockerSettings.tsx +0 -64
  295. package/apps/dashboard/src/components/import-project/EnvironmentVariables.tsx +0 -481
  296. package/apps/dashboard/src/components/import-project/Frameworks.tsx +0 -90
  297. package/apps/dashboard/src/components/import-project/ProjectSettings.tsx +0 -160
  298. package/apps/dashboard/src/components/import-project/types.ts +0 -82
  299. package/apps/dashboard/src/components/integrations/GithubPermissionModal.tsx +0 -173
  300. package/apps/dashboard/src/components/language-switcher.tsx +0 -36
  301. package/apps/dashboard/src/components/logo.tsx +0 -13
  302. package/apps/dashboard/src/components/network-error-handler.tsx +0 -27
  303. package/apps/dashboard/src/components/oauth-buttons.tsx +0 -81
  304. package/apps/dashboard/src/components/overview/ActivityChart.tsx +0 -247
  305. package/apps/dashboard/src/components/overview/ApiRequestsCard.tsx +0 -111
  306. package/apps/dashboard/src/components/overview/CreditsCard.tsx +0 -137
  307. package/apps/dashboard/src/components/overview/DeploymentsChart.tsx +0 -195
  308. package/apps/dashboard/src/components/overview/EmptyState.tsx +0 -126
  309. package/apps/dashboard/src/components/overview/LoadingSkeleton.tsx +0 -92
  310. package/apps/dashboard/src/components/overview/OverviewHeader.tsx +0 -74
  311. package/apps/dashboard/src/components/overview/OverviewHeroChart.tsx +0 -344
  312. package/apps/dashboard/src/components/overview/ProjectsCard.tsx +0 -134
  313. package/apps/dashboard/src/components/overview/QuickLinks.tsx +0 -119
  314. package/apps/dashboard/src/components/overview/SandboxesCard.tsx +0 -150
  315. package/apps/dashboard/src/components/overview/StatsGrid.tsx +0 -166
  316. package/apps/dashboard/src/components/overview/TokenUsageChart.tsx +0 -206
  317. package/apps/dashboard/src/components/overview/UsageStats.tsx +0 -79
  318. package/apps/dashboard/src/components/overview/index.ts +0 -30
  319. package/apps/dashboard/src/components/overview/types.ts +0 -116
  320. package/apps/dashboard/src/components/page-header.tsx +0 -25
  321. package/apps/dashboard/src/components/project-settings/ServerSideSwitch.jsx +0 -60
  322. package/apps/dashboard/src/components/shared/AlertBox.tsx +0 -39
  323. package/apps/dashboard/src/components/shared/CTASection.tsx +0 -45
  324. package/apps/dashboard/src/components/shared/ErrorState.tsx +0 -176
  325. package/apps/dashboard/src/components/shared/FeatureCard.tsx +0 -20
  326. package/apps/dashboard/src/components/shared/MDXComponents.tsx +0 -24
  327. package/apps/dashboard/src/components/shared/MachineSettingsModal.tsx +0 -286
  328. package/apps/dashboard/src/components/shared/Modal.tsx +0 -39
  329. package/apps/dashboard/src/components/shared/OTPInput.tsx +0 -122
  330. package/apps/dashboard/src/components/shared/PageHero.tsx +0 -21
  331. package/apps/dashboard/src/components/shared/PlatformFeatureCard.tsx +0 -27
  332. package/apps/dashboard/src/components/shared/StatCard.tsx +0 -14
  333. package/apps/dashboard/src/components/shared/ValueCard.tsx +0 -20
  334. package/apps/dashboard/src/components/shared/index.ts +0 -8
  335. package/apps/dashboard/src/components/sidebar.tsx +0 -282
  336. package/apps/dashboard/src/components/theme-provider.tsx +0 -96
  337. package/apps/dashboard/src/components/toast.tsx +0 -106
  338. package/apps/dashboard/src/components/ui/CustomCursor.tsx +0 -107
  339. package/apps/dashboard/src/components/ui/CustomSelect.tsx +0 -126
  340. package/apps/dashboard/src/components/ui/DropdownMenu.tsx +0 -174
  341. package/apps/dashboard/src/components/ui/FileIcon.jsx +0 -59
  342. package/apps/dashboard/src/components/ui/IconPickerModal.tsx +0 -273
  343. package/apps/dashboard/src/components/ui/InfoBanner.jsx +0 -39
  344. package/apps/dashboard/src/components/ui/Logo.tsx +0 -14
  345. package/apps/dashboard/src/components/ui/Modal.tsx +0 -117
  346. package/apps/dashboard/src/components/ui/PageContainer.tsx +0 -12
  347. package/apps/dashboard/src/components/ui/SectionContainer.jsx +0 -7
  348. package/apps/dashboard/src/components/ui/SlidingToggle.tsx +0 -128
  349. package/apps/dashboard/src/components/ui/Toast.tsx +0 -29
  350. package/apps/dashboard/src/components/ui/button.tsx +0 -58
  351. package/apps/dashboard/src/components/ui/card.tsx +0 -60
  352. package/apps/dashboard/src/components/ui/input.tsx +0 -20
  353. package/apps/dashboard/src/components/ui/label.tsx +0 -19
  354. package/apps/dashboard/src/components/ui/select.tsx +0 -10
  355. package/apps/dashboard/src/components/ui/textarea.tsx +0 -9
  356. package/apps/dashboard/src/constants/lang-colors.ts +0 -25
  357. package/apps/dashboard/src/constants/mock.ts +0 -38
  358. package/apps/dashboard/src/context/AuthContext.tsx +0 -91
  359. package/apps/dashboard/src/context/CloudContext.tsx +0 -275
  360. package/apps/dashboard/src/context/DeploymentContext.tsx +0 -71
  361. package/apps/dashboard/src/context/GitHubContext.tsx +0 -288
  362. package/apps/dashboard/src/context/ModalContext.tsx +0 -300
  363. package/apps/dashboard/src/context/NetworkContext.tsx +0 -32
  364. package/apps/dashboard/src/context/ProjectSettingsContext.tsx +0 -727
  365. package/apps/dashboard/src/context/ToastContext.tsx +0 -129
  366. package/apps/dashboard/src/context/deployment/index.ts +0 -3
  367. package/apps/dashboard/src/context/deployment/types.ts +0 -183
  368. package/apps/dashboard/src/context/deployment/useDeploymentBuild.ts +0 -547
  369. package/apps/dashboard/src/context/deployment/useDeploymentConfig.ts +0 -176
  370. package/apps/dashboard/src/hooks/useBuildConnection.ts +0 -334
  371. package/apps/dashboard/src/hooks/useMonitorStream.ts +0 -146
  372. package/apps/dashboard/src/hooks/useProjectData.ts +0 -110
  373. package/apps/dashboard/src/hooks/useSSEConnection.ts +0 -465
  374. package/apps/dashboard/src/hooks/useSSEStream.ts +0 -309
  375. package/apps/dashboard/src/hooks/useSessions.ts +0 -104
  376. package/apps/dashboard/src/hooks/useSetupStream.ts +0 -223
  377. package/apps/dashboard/src/i18n/dictionaries/ar.json +0 -218
  378. package/apps/dashboard/src/i18n/dictionaries/en.json +0 -218
  379. package/apps/dashboard/src/i18n/index.ts +0 -16
  380. package/apps/dashboard/src/lib/api/ai.ts +0 -22
  381. package/apps/dashboard/src/lib/api/auth.ts +0 -13
  382. package/apps/dashboard/src/lib/api/client.ts +0 -199
  383. package/apps/dashboard/src/lib/api/cloud.ts +0 -15
  384. package/apps/dashboard/src/lib/api/deploy.ts +0 -58
  385. package/apps/dashboard/src/lib/api/domains.ts +0 -13
  386. package/apps/dashboard/src/lib/api/endpoints.ts +0 -129
  387. package/apps/dashboard/src/lib/api/github.ts +0 -31
  388. package/apps/dashboard/src/lib/api/icons.ts +0 -12
  389. package/apps/dashboard/src/lib/api/index.ts +0 -41
  390. package/apps/dashboard/src/lib/api/projects.ts +0 -153
  391. package/apps/dashboard/src/lib/api/sandbox.ts +0 -14
  392. package/apps/dashboard/src/lib/api/settings.ts +0 -21
  393. package/apps/dashboard/src/lib/api/system.ts +0 -159
  394. package/apps/dashboard/src/lib/auth-client.ts +0 -54
  395. package/apps/dashboard/src/lib/country.ts +0 -25
  396. package/apps/dashboard/src/lib/server/api.ts +0 -140
  397. package/apps/dashboard/src/lib/server/session.ts +0 -103
  398. package/apps/dashboard/src/lib/sseClient.ts +0 -241
  399. package/apps/dashboard/src/lib/sseMessageProcessors.ts +0 -323
  400. package/apps/dashboard/src/lib/utils.ts +0 -6
  401. package/apps/dashboard/src/proxy.ts +0 -46
  402. package/apps/dashboard/src/styles/Toast.module.css +0 -92
  403. package/apps/dashboard/src/styles/fonts.css +0 -93
  404. package/apps/dashboard/src/styles/theme.css +0 -336
  405. package/apps/dashboard/src/types/research.ts +0 -42
  406. package/apps/dashboard/src/utils/SSEParser.js +0 -150
  407. package/apps/dashboard/src/utils/authWindow.ts +0 -143
  408. package/apps/dashboard/src/utils/codeTheme.ts +0 -127
  409. package/apps/dashboard/src/utils/colors.json +0 -2810
  410. package/apps/dashboard/src/utils/date.ts +0 -121
  411. package/apps/dashboard/src/utils/deployment.ts +0 -128
  412. package/apps/dashboard/src/utils/deploymentPhaseDetector.ts +0 -232
  413. package/apps/dashboard/src/utils/extToLang.js +0 -103
  414. package/apps/dashboard/src/utils/github.ts +0 -62
  415. package/apps/dashboard/src/utils/icons.js +0 -46
  416. package/apps/dashboard/src/utils/repoSlug.ts +0 -110
  417. package/apps/dashboard/src/utils/research-api.ts +0 -163
  418. package/apps/dashboard/src/utils/suggestions.ts +0 -84
  419. package/apps/dashboard/src/utils/theme.js +0 -1
  420. package/apps/dashboard/src/utils/ui-helpers.tsx +0 -30
  421. package/apps/dashboard/src/utils/upload.js +0 -12
  422. package/apps/dashboard/tsconfig.json +0 -33
  423. package/apps/desktop/forge.config.json +0 -36
  424. package/apps/desktop/package.json +0 -26
  425. package/apps/desktop/scripts/dev.mjs +0 -58
  426. package/apps/desktop/src/main/index.ts +0 -675
  427. package/apps/desktop/src/main/types/desktop.d.ts +0 -33
  428. package/apps/desktop/src/preload/index.ts +0 -88
  429. package/apps/desktop/src/renderer/index.html +0 -462
  430. package/apps/desktop/src/renderer/onboarding.js +0 -511
  431. package/apps/desktop/src/renderer/styles.css +0 -1139
  432. package/apps/desktop/tsconfig.json +0 -17
  433. package/apps/web/.source/browser.ts +0 -13
  434. package/apps/web/.source/dynamic.ts +0 -8
  435. package/apps/web/.source/server.ts +0 -22
  436. package/apps/web/.source/source.config.mjs +0 -20
  437. package/apps/web/Dockerfile +0 -22
  438. package/apps/web/content/blog/how-ai-builds-work.mdx +0 -55
  439. package/apps/web/content/blog/introducing-openship.mdx +0 -46
  440. package/apps/web/content/blog/self-hosting-cost-breakdown.mdx +0 -59
  441. package/apps/web/content/docs/_meta.json +0 -14
  442. package/apps/web/content/docs/api.mdx +0 -98
  443. package/apps/web/content/docs/cli.mdx +0 -80
  444. package/apps/web/content/docs/first-deployment.mdx +0 -56
  445. package/apps/web/content/docs/index.mdx +0 -27
  446. package/apps/web/content/docs/installation.mdx +0 -65
  447. package/apps/web/content/docs/quickstart.mdx +0 -45
  448. package/apps/web/next-env.d.ts +0 -6
  449. package/apps/web/next.config.mjs +0 -20
  450. package/apps/web/package.json +0 -33
  451. package/apps/web/postcss.config.mjs +0 -5
  452. package/apps/web/public/android-chrome-192x192.png +0 -0
  453. package/apps/web/public/android-chrome-512x512.png +0 -0
  454. package/apps/web/public/apple-touch-icon.png +0 -0
  455. package/apps/web/public/favicon-16x16.png +0 -0
  456. package/apps/web/public/favicon-32x32.png +0 -0
  457. package/apps/web/public/favicon.ico +0 -0
  458. package/apps/web/public/site.webmanifest +0 -1
  459. package/apps/web/source.config.ts +0 -17
  460. package/apps/web/src/app/(marketing)/layout.tsx +0 -9
  461. package/apps/web/src/app/(marketing)/page.tsx +0 -2
  462. package/apps/web/src/app/(marketing)/pricing/page.tsx +0 -10
  463. package/apps/web/src/app/blog/[...slug]/page.tsx +0 -247
  464. package/apps/web/src/app/blog/blog.css +0 -575
  465. package/apps/web/src/app/blog/layout.tsx +0 -50
  466. package/apps/web/src/app/blog/page.tsx +0 -235
  467. package/apps/web/src/app/docs/[[...slug]]/page.tsx +0 -67
  468. package/apps/web/src/app/docs/layout.tsx +0 -62
  469. package/apps/web/src/app/docs/toc-theme.css +0 -71
  470. package/apps/web/src/app/download/page.tsx +0 -396
  471. package/apps/web/src/app/globals.css +0 -20
  472. package/apps/web/src/app/layout.tsx +0 -70
  473. package/apps/web/src/app/page.tsx +0 -51
  474. package/apps/web/src/app/robots.ts +0 -15
  475. package/apps/web/src/app/sitemap.ts +0 -35
  476. package/apps/web/src/components/blog/share-sidebar.tsx +0 -81
  477. package/apps/web/src/components/blog/writer-sidebar.tsx +0 -81
  478. package/apps/web/src/components/landing/ai-native.tsx +0 -169
  479. package/apps/web/src/components/landing/backups.tsx +0 -139
  480. package/apps/web/src/components/landing/cdn.tsx +0 -109
  481. package/apps/web/src/components/landing/coming-soon.tsx +0 -180
  482. package/apps/web/src/components/landing/dark-section.tsx +0 -166
  483. package/apps/web/src/components/landing/dashboard.tsx +0 -407
  484. package/apps/web/src/components/landing/developer-experience.tsx +0 -224
  485. package/apps/web/src/components/landing/dns-domains.tsx +0 -146
  486. package/apps/web/src/components/landing/download-button.tsx +0 -151
  487. package/apps/web/src/components/landing/features/ai-visual.tsx +0 -48
  488. package/apps/web/src/components/landing/features/cloud-visual.tsx +0 -44
  489. package/apps/web/src/components/landing/features/git-visual.tsx +0 -61
  490. package/apps/web/src/components/landing/features/index.tsx +0 -642
  491. package/apps/web/src/components/landing/features/infra-visual.tsx +0 -69
  492. package/apps/web/src/components/landing/features/rollback-visual.tsx +0 -42
  493. package/apps/web/src/components/landing/features/ssl-visual.tsx +0 -41
  494. package/apps/web/src/components/landing/features/stacks-visual.tsx +0 -54
  495. package/apps/web/src/components/landing/final-cta.tsx +0 -116
  496. package/apps/web/src/components/landing/footer.tsx +0 -145
  497. package/apps/web/src/components/landing/hero.tsx +0 -110
  498. package/apps/web/src/components/landing/how-it-works.tsx +0 -210
  499. package/apps/web/src/components/landing/index.ts +0 -21
  500. package/apps/web/src/components/landing/mail-server.tsx +0 -122
  501. package/apps/web/src/components/landing/navbar.tsx +0 -199
  502. package/apps/web/src/components/landing/no-lockin.tsx +0 -185
  503. package/apps/web/src/components/landing/open-source-cta.tsx +0 -151
  504. package/apps/web/src/components/landing/portability.tsx +0 -190
  505. package/apps/web/src/components/landing/pricing.tsx +0 -263
  506. package/apps/web/src/components/landing/scaling.tsx +0 -209
  507. package/apps/web/src/components/landing/why-openship.tsx +0 -291
  508. package/apps/web/src/hooks/use-gsap-scroll.ts +0 -158
  509. package/apps/web/src/hooks/use-platform.ts +0 -86
  510. package/apps/web/src/lib/source.ts +0 -12
  511. package/apps/web/src/styles/fonts.css +0 -84
  512. package/apps/web/src/styles/landing.css +0 -951
  513. package/apps/web/src/styles/theme.css +0 -227
  514. package/apps/web/tsconfig.json +0 -16
  515. package/bun.lock +0 -3260
  516. package/docker-compose.yml +0 -90
  517. package/docs/screenshots/.gitkeep +0 -0
  518. package/docs/screenshots/screen.png +0 -0
  519. package/openship.code-workspace +0 -7
  520. package/packages/adapters/docs/ARCHITECTURE.md +0 -160
  521. package/packages/adapters/docs/BUILD-PIPELINE.md +0 -171
  522. package/packages/adapters/docs/CLOUD.md +0 -239
  523. package/packages/adapters/docs/EXECUTOR.md +0 -174
  524. package/packages/adapters/docs/LOG-STREAMING.md +0 -175
  525. package/packages/adapters/docs/SYSTEM.md +0 -191
  526. package/packages/adapters/package.json +0 -32
  527. package/packages/adapters/src/index.ts +0 -144
  528. package/packages/adapters/src/infra/cloud.ts +0 -42
  529. package/packages/adapters/src/infra/index.ts +0 -9
  530. package/packages/adapters/src/infra/noop.ts +0 -27
  531. package/packages/adapters/src/infra/traefik.ts +0 -297
  532. package/packages/adapters/src/infra/types.ts +0 -36
  533. package/packages/adapters/src/platform.ts +0 -255
  534. package/packages/adapters/src/runtime/bare.ts +0 -567
  535. package/packages/adapters/src/runtime/build-pipeline.ts +0 -237
  536. package/packages/adapters/src/runtime/cloud.ts +0 -791
  537. package/packages/adapters/src/runtime/deploy-pipeline.ts +0 -146
  538. package/packages/adapters/src/runtime/docker.ts +0 -443
  539. package/packages/adapters/src/runtime/index.ts +0 -69
  540. package/packages/adapters/src/runtime/local-build.ts +0 -112
  541. package/packages/adapters/src/runtime/transfer.ts +0 -82
  542. package/packages/adapters/src/runtime/types.ts +0 -138
  543. package/packages/adapters/src/system/catalog.ts +0 -188
  544. package/packages/adapters/src/system/checks.ts +0 -228
  545. package/packages/adapters/src/system/components.ts +0 -45
  546. package/packages/adapters/src/system/debug.ts +0 -18
  547. package/packages/adapters/src/system/environment.ts +0 -168
  548. package/packages/adapters/src/system/errors.ts +0 -34
  549. package/packages/adapters/src/system/executor.ts +0 -600
  550. package/packages/adapters/src/system/index.ts +0 -58
  551. package/packages/adapters/src/system/installer.ts +0 -310
  552. package/packages/adapters/src/system/setup.ts +0 -442
  553. package/packages/adapters/src/system/state.ts +0 -96
  554. package/packages/adapters/src/system/types.ts +0 -116
  555. package/packages/adapters/src/toolchain/catalog.ts +0 -439
  556. package/packages/adapters/src/toolchain/checks.ts +0 -181
  557. package/packages/adapters/src/toolchain/index.ts +0 -38
  558. package/packages/adapters/src/toolchain/installer.ts +0 -189
  559. package/packages/adapters/src/toolchain/types.ts +0 -84
  560. package/packages/adapters/src/types.ts +0 -277
  561. package/packages/adapters/tsconfig.json +0 -11
  562. package/packages/core/package.json +0 -27
  563. package/packages/core/src/constants.ts +0 -71
  564. package/packages/core/src/errors.ts +0 -49
  565. package/packages/core/src/index.ts +0 -6
  566. package/packages/core/src/stacks.ts +0 -778
  567. package/packages/core/src/system.ts +0 -111
  568. package/packages/core/src/types.ts +0 -68
  569. package/packages/core/src/utils.ts +0 -43
  570. package/packages/core/tsconfig.json +0 -11
  571. package/packages/db/drizzle/0000_init.sql +0 -231
  572. package/packages/db/drizzle/0001_add_server_name.sql +0 -1
  573. package/packages/db/drizzle/meta/_journal.json +0 -20
  574. package/packages/db/drizzle.config.ts +0 -10
  575. package/packages/db/package.json +0 -44
  576. package/packages/db/src/client.ts +0 -119
  577. package/packages/db/src/index.ts +0 -60
  578. package/packages/db/src/repos/account.repo.ts +0 -92
  579. package/packages/db/src/repos/deployment.repo.ts +0 -168
  580. package/packages/db/src/repos/domain.repo.ts +0 -102
  581. package/packages/db/src/repos/git-installation.repo.ts +0 -95
  582. package/packages/db/src/repos/index.ts +0 -43
  583. package/packages/db/src/repos/instance-settings.repo.ts +0 -43
  584. package/packages/db/src/repos/project.repo.ts +0 -159
  585. package/packages/db/src/repos/session.repo.ts +0 -82
  586. package/packages/db/src/repos/settings.repo.ts +0 -51
  587. package/packages/db/src/repos/user.repo.ts +0 -94
  588. package/packages/db/src/schema/auth.ts +0 -56
  589. package/packages/db/src/schema/deployment.ts +0 -87
  590. package/packages/db/src/schema/domain.ts +0 -46
  591. package/packages/db/src/schema/github.ts +0 -24
  592. package/packages/db/src/schema/index.ts +0 -6
  593. package/packages/db/src/schema/project.ts +0 -117
  594. package/packages/db/src/schema/settings.ts +0 -103
  595. package/packages/db/tsconfig.json +0 -11
  596. package/packages/ui/package.json +0 -38
  597. package/packages/ui/src/components/badge.tsx +0 -29
  598. package/packages/ui/src/components/button.tsx +0 -44
  599. package/packages/ui/src/components/card.tsx +0 -26
  600. package/packages/ui/src/components/status-dot.tsx +0 -25
  601. package/packages/ui/src/globals.css +0 -18
  602. package/packages/ui/src/index.tsx +0 -8
  603. package/packages/ui/src/lib/cn.ts +0 -7
  604. package/packages/ui/tsconfig.json +0 -14
  605. package/pnpm-workspace.yaml +0 -3
  606. package/tsconfig.base.json +0 -18
  607. package/turbo.json +0 -36
@@ -1,778 +0,0 @@
1
- /**
2
- * Stack registry — the single source of truth for every supported stack.
3
- *
4
- * ────────────────────────────────────────────────────────────────────────────
5
- * To add a new framework / language:
6
- * 1. Add one entry here
7
- * 2. (Optional) Add detection rule in apps/api/src/lib/stack-detector.ts
8
- * 3. Done — types, schemas, constants all derive automatically
9
- * ────────────────────────────────────────────────────────────────────────────
10
- *
11
- * Usage:
12
- * import { STACKS, STACK_IDS, LANGUAGES, type StackId } from "@repo/core";
13
- *
14
- * STACKS.nextjs.runtimeImage // "node:22"
15
- * STACKS.go.defaultPort // 8080
16
- * STACK_IDS // ["nextjs", "nuxt", ... ] — auto-generated
17
- */
18
-
19
- // ─── Language definitions ────────────────────────────────────────────────────
20
-
21
- export interface LanguageDefinition {
22
- name: string;
23
- /** Default build image — used when stack doesn't override */
24
- buildImage: string;
25
- /** Default runtime image */
26
- runtimeImage: string;
27
- /** Package managers available for this language */
28
- packageManagers: readonly string[];
29
- /**
30
- * Tools required on bare metal to build/run this language.
31
- * Used by the toolchain catalog to validate and install prerequisites.
32
- * Empty array means no tool validation needed (e.g. multi-language, docker).
33
- */
34
- requiredTools: readonly string[];
35
- }
36
-
37
- export const LANGUAGES = {
38
- javascript: {
39
- name: "JavaScript",
40
- buildImage: "node:22",
41
- runtimeImage: "node:22",
42
- packageManagers: ["npm", "yarn", "pnpm", "bun"],
43
- requiredTools: ["node", "npm"],
44
- },
45
- typescript: {
46
- name: "TypeScript",
47
- buildImage: "node:22",
48
- runtimeImage: "node:22",
49
- packageManagers: ["npm", "yarn", "pnpm", "bun"],
50
- requiredTools: ["node", "npm"],
51
- },
52
- go: {
53
- name: "Go",
54
- buildImage: "golang:1.22-alpine",
55
- runtimeImage: "alpine:3.19",
56
- packageManagers: ["go"],
57
- requiredTools: ["go"],
58
- },
59
- rust: {
60
- name: "Rust",
61
- buildImage: "rust:1.77-slim",
62
- runtimeImage: "debian:bookworm-slim",
63
- packageManagers: ["cargo"],
64
- requiredTools: ["rustc", "cargo"],
65
- },
66
- python: {
67
- name: "Python",
68
- buildImage: "python:3.12-slim",
69
- runtimeImage: "python:3.12-slim",
70
- packageManagers: ["pip", "poetry", "pipenv", "uv"],
71
- requiredTools: ["python3", "pip"],
72
- },
73
- ruby: {
74
- name: "Ruby",
75
- buildImage: "ruby:3.3-slim",
76
- runtimeImage: "ruby:3.3-slim",
77
- packageManagers: ["bundler"],
78
- requiredTools: ["ruby", "bundler"],
79
- },
80
- php: {
81
- name: "PHP",
82
- buildImage: "php:8.3-cli",
83
- runtimeImage: "php:8.3-fpm",
84
- packageManagers: ["composer"],
85
- requiredTools: ["php", "composer"],
86
- },
87
- java: {
88
- name: "Java",
89
- buildImage: "eclipse-temurin:21-jdk-alpine",
90
- runtimeImage: "eclipse-temurin:21-jre-alpine",
91
- packageManagers: ["maven", "gradle"],
92
- requiredTools: ["java", "javac"],
93
- },
94
- csharp: {
95
- name: "C#",
96
- buildImage: "mcr.microsoft.com/dotnet/sdk:8.0",
97
- runtimeImage: "mcr.microsoft.com/dotnet/aspnet:8.0",
98
- packageManagers: ["dotnet"],
99
- requiredTools: ["dotnet"],
100
- },
101
- elixir: {
102
- name: "Elixir",
103
- buildImage: "elixir:1.16-alpine",
104
- runtimeImage: "elixir:1.16-alpine",
105
- packageManagers: ["mix"],
106
- requiredTools: ["elixir", "mix"],
107
- },
108
- multi: {
109
- name: "Multi-language",
110
- buildImage: "ubuntu:22.04",
111
- runtimeImage: "ubuntu:22.04",
112
- packageManagers: [],
113
- requiredTools: [],
114
- },
115
- } as const satisfies Record<string, LanguageDefinition>;
116
-
117
- export type Language = keyof typeof LANGUAGES;
118
-
119
- // ─── Stack categories ────────────────────────────────────────────────────────
120
-
121
- export type StackCategory = "frontend" | "backend" | "fullstack" | "static" | "docker" | "services" | "generic";
122
-
123
- // ─── Project type (determines deploy-page UI path) ──────────────────────────
124
-
125
- export type ProjectType = "app" | "docker" | "services";
126
-
127
- // ─── Stack definition ────────────────────────────────────────────────────────
128
-
129
- export interface StackDefinition {
130
- /** Human-readable display name */
131
- name: string;
132
- /** Programming language */
133
- language: Language;
134
- /** Category */
135
- category: StackCategory;
136
- /** Docker image for builds (overrides the language default) */
137
- buildImage?: string;
138
- /** Docker image for production runtime (overrides the language default) */
139
- runtimeImage?: string;
140
- /** Default output directory after build */
141
- outputDirectory: string;
142
- /** Default port the application listens on */
143
- defaultPort: number;
144
- /** Default build command when project has none */
145
- defaultBuildCommand: string;
146
- /** Default start command */
147
- defaultStartCommand: string;
148
- /** Minimum tool versions required by this stack on bare metal. */
149
- requiredToolVersions?: Readonly<Record<string, string>>;
150
- /**
151
- * Files/directories to copy into `/app/production/` after build.
152
- * Only these paths are needed at runtime — everything else stays in `/app`.
153
- * Omit for stacks where everything is needed (e.g. docker, static).
154
- */
155
- productionPaths?: readonly string[];
156
- /**
157
- * Preferred build location for this stack.
158
- * "server" = build in the cloud/workspace (default if omitted).
159
- * "local" = build on the host machine, then transfer the artifact.
160
- */
161
- defaultBuildStrategy?: "server" | "local";
162
- }
163
-
164
- // ─── The registry ────────────────────────────────────────────────────────────
165
-
166
- export const STACKS = {
167
-
168
- // ── JavaScript / TypeScript — Frontend & Fullstack ─────────────────────────
169
-
170
- nextjs: {
171
- name: "Next.js",
172
- language: "typescript",
173
- category: "fullstack",
174
- outputDirectory: ".next",
175
- defaultPort: 3000,
176
- defaultBuildCommand: "next build",
177
- defaultStartCommand: "next start",
178
- requiredToolVersions: { node: "20.9.0" },
179
- defaultBuildStrategy: "local",
180
- },
181
- nuxt: {
182
- name: "Nuxt",
183
- language: "typescript",
184
- category: "fullstack",
185
- outputDirectory: ".output",
186
- defaultPort: 3000,
187
- defaultBuildCommand: "nuxt build",
188
- defaultStartCommand: "node .output/server/index.mjs",
189
- defaultBuildStrategy: "local",
190
- },
191
- sveltekit: {
192
- name: "SvelteKit",
193
- language: "typescript",
194
- category: "fullstack",
195
- outputDirectory: ".svelte-kit",
196
- defaultPort: 3000,
197
- defaultBuildCommand: "vite build",
198
- defaultStartCommand: "node build/index.js",
199
- defaultBuildStrategy: "local",
200
- },
201
- remix: {
202
- name: "Remix",
203
- language: "typescript",
204
- category: "fullstack",
205
- outputDirectory: "build",
206
- defaultPort: 3000,
207
- defaultBuildCommand: "remix build",
208
- defaultStartCommand: "remix-serve build/index.js",
209
- defaultBuildStrategy: "local",
210
- },
211
- astro: {
212
- name: "Astro",
213
- language: "typescript",
214
- category: "frontend",
215
- outputDirectory: "dist",
216
- defaultPort: 4321,
217
- defaultBuildCommand: "astro build",
218
- defaultStartCommand: "node dist/server/entry.mjs",
219
- defaultBuildStrategy: "local",
220
- },
221
- vite: {
222
- name: "Vite",
223
- language: "typescript",
224
- category: "frontend",
225
- outputDirectory: "dist",
226
- defaultPort: 5173,
227
- defaultBuildCommand: "vite build",
228
- defaultStartCommand: "",
229
- defaultBuildStrategy: "local",
230
- },
231
- angular: {
232
- name: "Angular",
233
- language: "typescript",
234
- category: "frontend",
235
- outputDirectory: "dist",
236
- defaultPort: 4200,
237
- defaultBuildCommand: "ng build --configuration production",
238
- defaultStartCommand: "",
239
- defaultBuildStrategy: "local",
240
- },
241
- gatsby: {
242
- name: "Gatsby",
243
- language: "javascript",
244
- category: "frontend",
245
- outputDirectory: "public",
246
- defaultPort: 8000,
247
- defaultBuildCommand: "gatsby build",
248
- defaultStartCommand: "gatsby serve",
249
- defaultBuildStrategy: "local",
250
- },
251
- cra: {
252
- name: "Create React App",
253
- language: "javascript",
254
- category: "frontend",
255
- outputDirectory: "build",
256
- defaultPort: 3000,
257
- defaultBuildCommand: "react-scripts build",
258
- defaultStartCommand: "",
259
- defaultBuildStrategy: "local",
260
- },
261
- vue: {
262
- name: "Vue CLI",
263
- language: "javascript",
264
- category: "frontend",
265
- outputDirectory: "dist",
266
- defaultPort: 8080,
267
- defaultBuildCommand: "vue-cli-service build",
268
- defaultStartCommand: "",
269
- defaultBuildStrategy: "local",
270
- },
271
- react: {
272
- name: "React",
273
- language: "javascript",
274
- category: "frontend",
275
- outputDirectory: "build",
276
- defaultPort: 3000,
277
- defaultBuildCommand: "",
278
- defaultStartCommand: "",
279
- defaultBuildStrategy: "local",
280
- },
281
-
282
- // ── JavaScript / TypeScript — Backend ──────────────────────────────────────
283
-
284
- express: {
285
- name: "Express",
286
- language: "javascript",
287
- category: "backend",
288
- outputDirectory: "dist",
289
- defaultPort: 3000,
290
- defaultBuildCommand: "",
291
- defaultStartCommand: "node index.js",
292
- defaultBuildStrategy: "local",
293
- },
294
- fastify: {
295
- name: "Fastify",
296
- language: "typescript",
297
- category: "backend",
298
- outputDirectory: "dist",
299
- defaultPort: 3000,
300
- defaultBuildCommand: "",
301
- defaultStartCommand: "node dist/index.js",
302
- defaultBuildStrategy: "local",
303
- },
304
- hono: {
305
- name: "Hono",
306
- language: "typescript",
307
- category: "backend",
308
- outputDirectory: "dist",
309
- defaultPort: 3000,
310
- defaultBuildCommand: "",
311
- defaultStartCommand: "node dist/index.js",
312
- defaultBuildStrategy: "local",
313
- },
314
- nestjs: {
315
- name: "NestJS",
316
- language: "typescript",
317
- category: "backend",
318
- outputDirectory: "dist",
319
- defaultPort: 3000,
320
- defaultBuildCommand: "nest build",
321
- defaultStartCommand: "node dist/main.js",
322
- defaultBuildStrategy: "local",
323
- },
324
- koa: {
325
- name: "Koa",
326
- language: "javascript",
327
- category: "backend",
328
- outputDirectory: "dist",
329
- defaultPort: 3000,
330
- defaultBuildCommand: "",
331
- defaultStartCommand: "node index.js",
332
- defaultBuildStrategy: "local",
333
- },
334
- adonis: {
335
- name: "AdonisJS",
336
- language: "typescript",
337
- category: "fullstack",
338
- outputDirectory: "build",
339
- defaultPort: 3333,
340
- defaultBuildCommand: "node ace build --production",
341
- defaultStartCommand: "node build/server.js",
342
- defaultBuildStrategy: "local",
343
- },
344
- elysia: {
345
- name: "Elysia",
346
- language: "typescript",
347
- category: "backend",
348
- outputDirectory: "dist",
349
- defaultPort: 3000,
350
- defaultBuildCommand: "",
351
- defaultStartCommand: "bun dist/index.js",
352
- defaultBuildStrategy: "local",
353
- },
354
-
355
- // ── Go ─────────────────────────────────────────────────────────────────────
356
-
357
- go: {
358
- name: "Go",
359
- language: "go",
360
- category: "backend",
361
- outputDirectory: ".",
362
- defaultPort: 8080,
363
- defaultBuildCommand: "go build -o app .",
364
- defaultStartCommand: "./app",
365
- productionPaths: ["app"],
366
- },
367
- gin: {
368
- name: "Gin",
369
- language: "go",
370
- category: "backend",
371
- outputDirectory: ".",
372
- defaultPort: 8080,
373
- defaultBuildCommand: "go build -o app .",
374
- defaultStartCommand: "./app",
375
- productionPaths: ["app"],
376
- },
377
- fiber: {
378
- name: "Fiber",
379
- language: "go",
380
- category: "backend",
381
- outputDirectory: ".",
382
- defaultPort: 3000,
383
- defaultBuildCommand: "go build -o app .",
384
- defaultStartCommand: "./app",
385
- productionPaths: ["app"],
386
- },
387
- echo: {
388
- name: "Echo",
389
- language: "go",
390
- category: "backend",
391
- outputDirectory: ".",
392
- defaultPort: 8080,
393
- defaultBuildCommand: "go build -o app .",
394
- defaultStartCommand: "./app",
395
- productionPaths: ["app"],
396
- },
397
-
398
- // ── Rust ───────────────────────────────────────────────────────────────────
399
-
400
- rust: {
401
- name: "Rust",
402
- language: "rust",
403
- category: "backend",
404
- outputDirectory: "target/release",
405
- defaultPort: 8080,
406
- defaultBuildCommand: "cargo build --release",
407
- defaultStartCommand: "./target/release/app",
408
- productionPaths: ["target/release/app"],
409
- },
410
- actix: {
411
- name: "Actix Web",
412
- language: "rust",
413
- category: "backend",
414
- outputDirectory: "target/release",
415
- defaultPort: 8080,
416
- defaultBuildCommand: "cargo build --release",
417
- defaultStartCommand: "./target/release/app",
418
- productionPaths: ["target/release/app"],
419
- },
420
- axum: {
421
- name: "Axum",
422
- language: "rust",
423
- category: "backend",
424
- outputDirectory: "target/release",
425
- defaultPort: 3000,
426
- defaultBuildCommand: "cargo build --release",
427
- defaultStartCommand: "./target/release/app",
428
- productionPaths: ["target/release/app"],
429
- },
430
- rocket: {
431
- name: "Rocket",
432
- language: "rust",
433
- category: "backend",
434
- outputDirectory: "target/release",
435
- defaultPort: 8000,
436
- defaultBuildCommand: "cargo build --release",
437
- defaultStartCommand: "./target/release/app",
438
- productionPaths: ["target/release/app"],
439
- },
440
-
441
- // ── Python ─────────────────────────────────────────────────────────────────
442
-
443
- python: {
444
- name: "Python",
445
- language: "python",
446
- category: "backend",
447
- outputDirectory: ".",
448
- defaultPort: 8000,
449
- defaultBuildCommand: "pip install -r requirements.txt",
450
- defaultStartCommand: "python app.py",
451
- },
452
- django: {
453
- name: "Django",
454
- language: "python",
455
- category: "fullstack",
456
- outputDirectory: ".",
457
- defaultPort: 8000,
458
- defaultBuildCommand: "pip install -r requirements.txt && python manage.py collectstatic --noinput",
459
- defaultStartCommand: "gunicorn config.wsgi:application --bind 0.0.0.0:8000",
460
- },
461
- flask: {
462
- name: "Flask",
463
- language: "python",
464
- category: "backend",
465
- outputDirectory: ".",
466
- defaultPort: 5000,
467
- defaultBuildCommand: "pip install -r requirements.txt",
468
- defaultStartCommand: "gunicorn app:app --bind 0.0.0.0:5000",
469
- },
470
- fastapi: {
471
- name: "FastAPI",
472
- language: "python",
473
- category: "backend",
474
- outputDirectory: ".",
475
- defaultPort: 8000,
476
- defaultBuildCommand: "pip install -r requirements.txt",
477
- defaultStartCommand: "uvicorn main:app --host 0.0.0.0 --port 8000",
478
- },
479
-
480
- // ── Ruby ───────────────────────────────────────────────────────────────────
481
-
482
- rails: {
483
- name: "Ruby on Rails",
484
- language: "ruby",
485
- category: "fullstack",
486
- outputDirectory: ".",
487
- defaultPort: 3000,
488
- defaultBuildCommand: "bundle install && bundle exec rails assets:precompile",
489
- defaultStartCommand: "bundle exec rails server -b 0.0.0.0",
490
- },
491
- sinatra: {
492
- name: "Sinatra",
493
- language: "ruby",
494
- category: "backend",
495
- outputDirectory: ".",
496
- defaultPort: 4567,
497
- defaultBuildCommand: "bundle install",
498
- defaultStartCommand: "ruby app.rb",
499
- },
500
-
501
- // ── PHP ────────────────────────────────────────────────────────────────────
502
-
503
- laravel: {
504
- name: "Laravel",
505
- language: "php",
506
- category: "fullstack",
507
- runtimeImage: "php:8.3-apache",
508
- outputDirectory: "public",
509
- defaultPort: 8000,
510
- defaultBuildCommand: "composer install --no-dev --optimize-autoloader",
511
- defaultStartCommand: "php artisan serve --host=0.0.0.0 --port=8000",
512
- },
513
- symfony: {
514
- name: "Symfony",
515
- language: "php",
516
- category: "fullstack",
517
- runtimeImage: "php:8.3-apache",
518
- outputDirectory: "public",
519
- defaultPort: 8000,
520
- defaultBuildCommand: "composer install --no-dev --optimize-autoloader",
521
- defaultStartCommand: "php -S 0.0.0.0:8000 -t public",
522
- },
523
-
524
- // ── Java / JVM ─────────────────────────────────────────────────────────────
525
-
526
- springboot: {
527
- name: "Spring Boot",
528
- language: "java",
529
- category: "backend",
530
- outputDirectory: "target",
531
- defaultPort: 8080,
532
- defaultBuildCommand: "mvn clean package -DskipTests",
533
- defaultStartCommand: "java -jar target/*.jar",
534
- productionPaths: ["target"],
535
- defaultBuildStrategy: "local",
536
- },
537
- quarkus: {
538
- name: "Quarkus",
539
- language: "java",
540
- category: "backend",
541
- outputDirectory: "target",
542
- defaultPort: 8080,
543
- defaultBuildCommand: "mvn clean package -DskipTests",
544
- defaultStartCommand: "java -jar target/quarkus-app/quarkus-run.jar",
545
- productionPaths: ["target"],
546
- defaultBuildStrategy: "local",
547
- },
548
-
549
- // ── C# / .NET ──────────────────────────────────────────────────────────────
550
-
551
- dotnet: {
552
- name: ".NET",
553
- language: "csharp",
554
- category: "backend",
555
- outputDirectory: "bin/Release/net8.0/publish",
556
- defaultPort: 5000,
557
- defaultBuildCommand: "dotnet publish -c Release -o publish",
558
- defaultStartCommand: "dotnet publish/app.dll",
559
- productionPaths: ["publish"],
560
- },
561
- blazor: {
562
- name: "Blazor",
563
- language: "csharp",
564
- category: "fullstack",
565
- outputDirectory: "bin/Release/net8.0/publish/wwwroot",
566
- defaultPort: 5000,
567
- defaultBuildCommand: "dotnet publish -c Release -o publish",
568
- defaultStartCommand: "dotnet publish/app.dll",
569
- productionPaths: ["publish"],
570
- },
571
-
572
- // ── Elixir ─────────────────────────────────────────────────────────────────
573
-
574
- phoenix: {
575
- name: "Phoenix",
576
- language: "elixir",
577
- category: "fullstack",
578
- outputDirectory: "_build/prod/rel",
579
- defaultPort: 4000,
580
- defaultBuildCommand: "MIX_ENV=prod mix do deps.get, compile, assets.deploy, release",
581
- defaultStartCommand: "_build/prod/rel/app/bin/app start",
582
- productionPaths: ["_build/prod/rel"],
583
- },
584
-
585
- // ── Generic ────────────────────────────────────────────────────────────────
586
-
587
- node: {
588
- name: "Node.js",
589
- language: "javascript",
590
- category: "backend",
591
- outputDirectory: "dist",
592
- defaultPort: 3000,
593
- defaultBuildCommand: "",
594
- defaultStartCommand: "node index.js",
595
- defaultBuildStrategy: "local",
596
- },
597
- static: {
598
- name: "Static Site",
599
- language: "multi",
600
- category: "static",
601
- runtimeImage: "nginx:alpine",
602
- outputDirectory: ".",
603
- defaultPort: 80,
604
- defaultBuildCommand: "",
605
- defaultStartCommand: "",
606
- },
607
- docker: {
608
- name: "Dockerfile",
609
- language: "multi",
610
- category: "docker",
611
- outputDirectory: ".",
612
- defaultPort: 3000,
613
- defaultBuildCommand: "",
614
- defaultStartCommand: "",
615
- },
616
- "docker-compose": {
617
- name: "Docker Compose",
618
- language: "multi",
619
- category: "services",
620
- outputDirectory: ".",
621
- defaultPort: 3000,
622
- defaultBuildCommand: "",
623
- defaultStartCommand: "",
624
- },
625
- unknown: {
626
- name: "Unknown",
627
- language: "multi",
628
- category: "generic",
629
- outputDirectory: "dist",
630
- defaultPort: 3000,
631
- defaultBuildCommand: "",
632
- defaultStartCommand: "",
633
- },
634
- } as const satisfies Record<string, StackDefinition>;
635
-
636
- // ─── Derived constants (auto-generated, never edit manually) ─────────────────
637
-
638
- /** All stack IDs as a type — replaces the old hardcoded `Framework` union */
639
- export type StackId = keyof typeof STACKS;
640
-
641
- /** All stack IDs as a runtime array */
642
- export const STACK_IDS = Object.keys(STACKS) as StackId[];
643
-
644
- /** All language IDs as a runtime array */
645
- export const LANGUAGE_IDS = Object.keys(LANGUAGES) as Language[];
646
-
647
- /** All unique package managers across all languages */
648
- export const ALL_PACKAGE_MANAGERS: string[] = [
649
- ...new Set(Object.values(LANGUAGES).flatMap((l) => l.packageManagers)),
650
- ];
651
-
652
- /** Output directories keyed by stack — derived from STACKS */
653
- export const OUTPUT_DIRECTORIES: Record<string, string> = Object.fromEntries(
654
- Object.entries(STACKS).map(([id, s]) => [id, s.outputDirectory]),
655
- );
656
-
657
- /** JS/TS languages that should use oven/bun when the package manager is bun */
658
- const BUN_ELIGIBLE_LANGUAGES: ReadonlySet<string> = new Set(["javascript", "typescript"]);
659
-
660
- /** Get the resolved Docker build image for a stack */
661
- export function getBuildImage(stackId: StackId, packageManager?: string): string {
662
- const stack = STACKS[stackId] as StackDefinition;
663
- if (packageManager === "bun" && BUN_ELIGIBLE_LANGUAGES.has(stack.language)) {
664
- return "oven/bun:latest";
665
- }
666
- return stack.buildImage ?? LANGUAGES[stack.language].buildImage;
667
- }
668
-
669
- /** Get the resolved Docker runtime image for a stack */
670
- export function getRuntimeImage(stackId: StackId, packageManager?: string): string {
671
- const stack = STACKS[stackId] as StackDefinition;
672
- if (packageManager === "bun" && BUN_ELIGIBLE_LANGUAGES.has(stack.language)) {
673
- return "oven/bun:latest";
674
- }
675
- return stack.runtimeImage ?? LANGUAGES[stack.language].runtimeImage;
676
- }
677
-
678
-
679
- /** Get the full stack definition with resolved images */
680
- export function getStackDefaults(stackId: StackId, packageManager?: string) {
681
- const stack = STACKS[stackId] as StackDefinition;
682
- return {
683
- ...stack,
684
- buildImage: getBuildImage(stackId, packageManager),
685
- runtimeImage: getRuntimeImage(stackId, packageManager),
686
- };
687
- }
688
-
689
- /** Derive the project type from a stack ID */
690
- export function getProjectType(stackId: StackId): ProjectType {
691
- const cat = (STACKS[stackId] as StackDefinition).category;
692
- if (cat === "docker") return "docker";
693
- if (cat === "services") return "services";
694
- return "app";
695
- }
696
-
697
- /**
698
- * Hint whether a stack is typically static (no running server).
699
- * Used as a default for the hasServer toggle — the user can override.
700
- */
701
- export function isTypicallyStatic(stackId: StackId): boolean {
702
- const stack = STACKS[stackId] as StackDefinition;
703
- return (
704
- (stack.category === "static" || stack.category === "frontend") &&
705
- !stack.defaultStartCommand
706
- );
707
- }
708
-
709
- // ─── Icon URLs — source of truth for logo/icon display ───────────────────────
710
-
711
- const DI = "https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons";
712
-
713
- export const STACK_ICONS: Partial<Record<StackId, string>> = {
714
- // JS/TS — Frontend & Fullstack
715
- nextjs: `${DI}/nextjs/nextjs-original.svg`,
716
- nuxt: `${DI}/nuxtjs/nuxtjs-original.svg`,
717
- sveltekit: `${DI}/svelte/svelte-original.svg`,
718
- remix: `${DI}/react/react-original.svg`,
719
- astro: `${DI}/astro/astro-original.svg`,
720
- vite: `${DI}/vitejs/vitejs-original.svg`,
721
- angular: `${DI}/angular/angular-original.svg`,
722
- gatsby: `${DI}/gatsby/gatsby-original.svg`,
723
- cra: `${DI}/react/react-original.svg`,
724
- vue: `${DI}/vuejs/vuejs-original.svg`,
725
- react: `${DI}/react/react-original.svg`,
726
-
727
- // JS/TS — Backend
728
- express: `${DI}/express/express-original.svg`,
729
- fastify: `${DI}/fastify/fastify-original.svg`,
730
- hono: "https://hono.dev/images/logo-small.png",
731
- nestjs: `${DI}/nestjs/nestjs-original.svg`,
732
- koa: `${DI}/nodejs/nodejs-original.svg`,
733
- adonis: `${DI}/adonisjs/adonisjs-original.svg`,
734
- elysia: "https://elysiajs.com/assets/elysia.svg",
735
-
736
- // Go
737
- go: `${DI}/go/go-original.svg`,
738
- gin: `${DI}/go/go-original.svg`,
739
- fiber: `${DI}/go/go-original.svg`,
740
- echo: `${DI}/go/go-original.svg`,
741
-
742
- // Rust
743
- rust: `${DI}/rust/rust-original.svg`,
744
- actix: `${DI}/rust/rust-original.svg`,
745
- axum: `${DI}/rust/rust-original.svg`,
746
- rocket: `${DI}/rust/rust-original.svg`,
747
-
748
- // Python
749
- python: `${DI}/python/python-original.svg`,
750
- django: `${DI}/django/django-plain.svg`,
751
- flask: `${DI}/flask/flask-original.svg`,
752
- fastapi: `${DI}/fastapi/fastapi-original.svg`,
753
-
754
- // Ruby
755
- rails: `${DI}/rails/rails-plain.svg`,
756
- sinatra: `${DI}/ruby/ruby-original.svg`,
757
-
758
- // PHP
759
- laravel: `${DI}/laravel/laravel-original.svg`,
760
- symfony: `${DI}/symfony/symfony-original.svg`,
761
-
762
- // Java
763
- springboot: `${DI}/spring/spring-original.svg`,
764
- quarkus: `${DI}/quarkus/quarkus-original.svg`,
765
-
766
- // C# / .NET
767
- dotnet: `${DI}/dotnetcore/dotnetcore-original.svg`,
768
- blazor: `${DI}/dotnetcore/dotnetcore-original.svg`,
769
-
770
- // Elixir
771
- phoenix: `${DI}/phoenix/phoenix-original.svg`,
772
-
773
- // Generic
774
- node: `${DI}/nodejs/nodejs-original.svg`,
775
- static: `${DI}/html5/html5-original.svg`,
776
- docker: `${DI}/docker/docker-original.svg`,
777
- "docker-compose": `${DI}/docker/docker-original.svg`,
778
- };