openship 0.1.1 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (607) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +5786 -0
  3. package/dist/server/index.js +324319 -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,727 +0,0 @@
1
- "use client";
2
- import React, { createContext, useContext, useState, useEffect, useCallback, ReactNode, useRef, useMemo } from "react";
3
- import { projectsApi } from "@/lib/api";
4
-
5
- interface BasicProjectData {
6
- name: string;
7
- description: string;
8
- framework: string;
9
- [key: string]: any;
10
- }
11
-
12
- interface AnalyticsData {
13
- success: boolean;
14
- domain: string;
15
- summary: {
16
- totalRequests: number;
17
- uniqueIPs: number;
18
- uniqueRequests: number;
19
- totalIPs: number;
20
- uniqueIPsPercentage: string;
21
- firstRequest: string;
22
- lastRequest: string;
23
- timeRangeHours: number;
24
- avgRequestsPerHour: number;
25
- };
26
- performance: {
27
- avgResponseTime: number;
28
- avgResponseTimeMs: number;
29
- totalResponseTime: number;
30
- minResponseTime: string;
31
- maxResponseTime: string;
32
- };
33
- bandwidth: {
34
- totalIn: number;
35
- totalOut: number;
36
- totalInFormatted: string;
37
- totalOutFormatted: string;
38
- avgRequestSize: number;
39
- avgResponseSize: number;
40
- };
41
- topPaths: Array<{
42
- path: string;
43
- count: number;
44
- percentage: string;
45
- }>;
46
- trafficByHour: Array<{
47
- hour: number;
48
- requests: number;
49
- }>;
50
- limited: boolean;
51
- }
52
-
53
- interface DomainsData {
54
- domains: any[];
55
- isLoading: boolean;
56
- error: string | null;
57
- }
58
-
59
- interface EnvironmentData {
60
- envVars: any;
61
- isLoading: boolean;
62
- error: string | null;
63
- }
64
-
65
- interface GitData {
66
- repository: any;
67
- branch: string;
68
- recentCommits: any[];
69
- isLoading: boolean;
70
- error: string | null;
71
- autoDeployEnabled?: boolean;
72
- webhookActive?: boolean;
73
- }
74
-
75
- interface BuildData {
76
- buildCommand: string;
77
- outputDirectory: string;
78
- productionPaths: string;
79
- installCommand: string;
80
- startCommand: string;
81
- productionPort: string;
82
- hasServer: boolean;
83
- isLoading: boolean;
84
- error: string | null;
85
- }
86
-
87
- interface TerminalLogsData {
88
- logs: string[];
89
- isStreaming: boolean;
90
- sseConnection: { disconnect: () => void } | null;
91
- xtermInstance: any | null;
92
- }
93
-
94
- interface ServerLogsData {
95
- logs: any[];
96
- mockInterval: NodeJS.Timeout | null;
97
- }
98
-
99
- interface ProjectSettingsContextType {
100
- // Project basic data (for general settings only)
101
- projectData: BasicProjectData;
102
- deploymentsLoading: boolean;
103
- setProjectData: React.Dispatch<React.SetStateAction<BasicProjectData>>;
104
- updateProjectData: (updates: Partial<BasicProjectData>) => Promise<void>;
105
- updateProjectActive: (active: boolean) => Promise<void>;
106
- // Analytics
107
- analyticsData: AnalyticsData | null;
108
- isLoadingAnalytics: boolean;
109
- analyticsError: string | null;
110
- refreshAnalytics: () => Promise<void>;
111
-
112
- // Domains
113
- domainsData: DomainsData;
114
- updateDomains: (domains: any[]) => Promise<void>;
115
- refreshDomains: () => Promise<void>;
116
-
117
- // Environment
118
- environmentData: EnvironmentData;
119
- updateEnvironment: (envVars: any) => Promise<void>;
120
- refreshEnvironment: () => Promise<void>;
121
-
122
- // Git
123
- gitData: GitData;
124
- updateGit: (gitInfo: any) => Promise<void>;
125
- refreshGit: () => Promise<void>;
126
-
127
- // Build
128
- buildData: BuildData;
129
- updateBuild: (buildInfo: any) => Promise<void>;
130
- refreshBuild: () => Promise<void>;
131
-
132
- // Terminal Logs
133
- terminalLogsData: TerminalLogsData;
134
- addTerminalLog: (log: string) => void;
135
- clearTerminalLogs: () => void;
136
- setTerminalStreaming: (isStreaming: boolean) => void;
137
- setTerminalSSEConnection: (connection: { disconnect: () => void } | null) => void;
138
- setTerminalXtermInstance: (instance: any) => void;
139
-
140
- // Server Logs
141
- serverLogsData: ServerLogsData;
142
- addServerLog: (log: any) => void;
143
- setServerLogs: (logs: any[]) => void;
144
- clearServerLogs: () => void;
145
- setServerMockInterval: (interval: NodeJS.Timeout | null) => void;
146
-
147
- // Global state
148
- projectNotFound: boolean;
149
- errorType: 'project-not-found' | 'repo-not-found' | 'access-denied' | null;
150
- id: string;
151
- domain: string;
152
- slug?: string[]; // Optional array for catch-all routes
153
- activeTab: string;
154
- setActiveTab: (tab: string) => void;
155
- tabs: { id: string; label: string; icon: string }[];
156
- deployments: any[];
157
- fetchDeployments: () => Promise<void>;
158
- }
159
-
160
- const ProjectSettingsContext = createContext<ProjectSettingsContextType | undefined>(undefined);
161
-
162
- interface ProviderProps {
163
- children: ReactNode;
164
- id: string;
165
- slug?: string[]; // Optional array for catch-all routes
166
- initialProjectData?: BasicProjectData;
167
- }
168
-
169
- export const ProjectSettingsProvider: React.FC<ProviderProps> = ({
170
- children,
171
- id,
172
- slug,
173
- initialProjectData
174
- }) => {
175
- const [projectData, setProjectData] = useState<BasicProjectData>(initialProjectData || {
176
- name: '',
177
- description: '',
178
- framework: ''
179
- });
180
-
181
- const [analyticsData, setAnalyticsData] = useState<AnalyticsData | null>(null);
182
- const [isLoadingAnalytics, setIsLoadingAnalytics] = useState(true);
183
- const [analyticsError, setAnalyticsError] = useState<string | null>(null);
184
-
185
- const [domainsData, setDomainsData] = useState<DomainsData>({
186
- domains: [],
187
- isLoading: false,
188
- error: null,
189
- });
190
-
191
- const [environmentData, setEnvironmentData] = useState<EnvironmentData>({
192
- envVars: {},
193
- isLoading: false,
194
- error: null,
195
- });
196
-
197
- const [gitData, setGitData] = useState<GitData>({
198
- repository: null,
199
- branch: '',
200
- recentCommits: [],
201
- isLoading: false,
202
- error: null,
203
- });
204
-
205
- const [buildData, setBuildData] = useState<BuildData>({
206
- buildCommand: '',
207
- outputDirectory: '.',
208
- productionPaths: '',
209
- installCommand: 'bun install',
210
- startCommand: 'npm start',
211
- productionPort: '3000',
212
- hasServer: true,
213
- isLoading: false,
214
- error: null,
215
- });
216
-
217
- const [terminalLogsData, setTerminalLogsData] = useState<TerminalLogsData>({
218
- logs: [],
219
- isStreaming: false,
220
- sseConnection: null,
221
- xtermInstance: null,
222
- });
223
-
224
- const [serverLogsData, setServerLogsData] = useState<ServerLogsData>({
225
- logs: [],
226
- mockInterval: null,
227
- });
228
-
229
- const [projectNotFound, setProjectNotFound] = useState(false);
230
- const [errorType, setErrorType] = useState<'project-not-found' | 'repo-not-found' | 'access-denied' | null>(null);
231
- const [domain, setDomain] = useState('');
232
- const isLoadingAnalyticsRef = useRef<boolean>(false);
233
- const hasFetchedRef = useRef<boolean>(false);
234
- const lastFetchedIdRef = useRef<string>('');
235
-
236
- // Fetch analytics - memoized to prevent recreating on every render
237
- const refreshAnalytics = useCallback(async () => {
238
- try {
239
- // Prevent duplicate fetches for the same project
240
- if (isLoadingAnalyticsRef.current) return;
241
- if (hasFetchedRef.current && lastFetchedIdRef.current === id) {
242
- console.log('[ProjectSettings] Already fetched for this project, skipping');
243
- return;
244
- }
245
-
246
- isLoadingAnalyticsRef.current = true;
247
- setIsLoadingAnalytics(true);
248
- setAnalyticsError(null);
249
- setProjectNotFound(false);
250
- setErrorType(null);
251
-
252
- if (!id) return;
253
-
254
- console.log('[ProjectSettings] Fetching project info for:', id);
255
- const response = await projectsApi.getInfo(id);
256
-
257
- if (response.success) {
258
- setAnalyticsData(response.data.analytics);
259
- setProjectData(response.data.project);
260
- setBuildData(response.data.project.options);
261
- setDomainsData({
262
- domains: response.data.project.domains || [],
263
- isLoading: false,
264
- error: null
265
- });
266
- setDomain(response.data.project.domains?.[0]?.domain || '');
267
-
268
- // Mark as fetched for this id
269
- hasFetchedRef.current = true;
270
- lastFetchedIdRef.current = id;
271
- } else {
272
- setProjectNotFound(true);
273
- setErrorType('project-not-found');
274
- setAnalyticsError('Project not found');
275
- }
276
- } catch (error) {
277
- console.error('Failed to fetch analytics:', error);
278
- setProjectNotFound(true);
279
- setErrorType('project-not-found');
280
- setAnalyticsError('Failed to load analytics');
281
- } finally {
282
- setIsLoadingAnalytics(false);
283
- isLoadingAnalyticsRef.current = false;
284
- }
285
- }, [id]); // Only recreate when id changes
286
-
287
- // Fetch domains
288
- const refreshDomains = async () => {
289
- try {
290
- setDomainsData(prev => ({ ...prev, isLoading: true, error: null }));
291
- // Add your API call here
292
- // const response = await request(`projects/${domain}/domains`, {}, 'GET');
293
- // setDomainsData({ domains: response.domains, isLoading: false, error: null });
294
- } catch (error) {
295
- setDomainsData(prev => ({ ...prev, isLoading: false, error: 'Failed to load domains' }));
296
- }
297
- };
298
-
299
- const isLoadingEnvironmentRef = useRef(false);
300
- // Fetch environment
301
- const refreshEnvironment = useCallback(async () => {
302
- try {
303
- if (isLoadingEnvironmentRef.current) return;
304
- isLoadingEnvironmentRef.current = true;
305
- setEnvironmentData(prev => ({ ...prev, isLoading: true, error: null }));
306
-
307
- if (!id) {
308
- setEnvironmentData(prev => ({ ...prev, isLoading: false }));
309
- return;
310
- }
311
-
312
- const response = await projectsApi.getEnv(id);
313
-
314
- if (response.success) {
315
- // Convert array format to expected format
316
- const envVarsArray = response.data || [];
317
- const envVars = {
318
- development: envVarsArray.map((env: any, index: number) => ({
319
- id: Date.now() + index,
320
- key: env.key,
321
- value: env.value,
322
- encrypted: true,
323
- })),
324
- preview: [],
325
- production: [],
326
- };
327
-
328
- setEnvironmentData({
329
- envVars: envVars,
330
- isLoading: false,
331
- error: null,
332
- });
333
- } else {
334
- setEnvironmentData(prev => ({
335
- ...prev,
336
- isLoading: false,
337
- }));
338
- }
339
- } catch (error) {
340
- console.error('Failed to fetch environment variables:', error);
341
- setEnvironmentData(prev => ({
342
- ...prev,
343
- isLoading: false,
344
- }));
345
- } finally {
346
- isLoadingEnvironmentRef.current = false;
347
- }
348
- }, [id]);
349
-
350
- // Fetch git
351
- const isLoadingGitRef = useRef(false);
352
- const refreshGit = useCallback(async () => {
353
- try {
354
- if (isLoadingGitRef.current) return;
355
- isLoadingGitRef.current = true;
356
- setGitData(prev => ({ ...prev, isLoading: true, error: null }));
357
-
358
- if (!id) {
359
- setGitData(prev => ({ ...prev, isLoading: false }));
360
- return;
361
- }
362
-
363
- const response = await projectsApi.getGit(id);
364
-
365
- if (response.success) {
366
- // Map commits from API response
367
- const mappedCommits = (response.commits || []).map((commit: any) => ({
368
- id: commit.commit_id,
369
- status: commit.status, // 'success', 'failed', 'pending'
370
- message: commit.commit_info?.message || 'No message',
371
- author: commit.created_by || 'Unknown',
372
- avatar: (commit.created_by || 'U').charAt(0).toUpperCase() + (commit.created_by?.split(' ')[1]?.[0]?.toUpperCase() || ''),
373
- time: new Date(commit.created_at).toLocaleString(),
374
- timestamp: commit.commit_info?.timestamp,
375
- url: commit.commit_info?.url,
376
- files: (commit.commit_info?.added?.length || 0) + (commit.commit_info?.modified?.length || 0) + (commit.commit_info?.removed?.length || 0),
377
- changedFiles: [
378
- ...(commit.commit_info?.added || []).map((f: string) => ({ name: f, type: 'added' })),
379
- ...(commit.commit_info?.modified || []).map((f: string) => ({ name: f, type: 'modified' })),
380
- ...(commit.commit_info?.removed || []).map((f: string) => ({ name: f, type: 'removed' })),
381
- ],
382
- }));
383
-
384
- setGitData({
385
- repository: {
386
- name: `${response.owner}/${response.repo}`,
387
- provider: 'GitHub',
388
- url: `https://github.com/${response.owner}/${response.repo}`,
389
- },
390
- branch: 'main', // Can be updated if API provides branch info
391
- recentCommits: mappedCommits,
392
- isLoading: false,
393
- error: null,
394
- autoDeployEnabled: response.auto_deploy,
395
- webhookActive: response.webhook_active,
396
- });
397
- } else {
398
- // Check if it's a repo not found error
399
- const isRepoError = response.error?.toLowerCase().includes('repository') ||
400
- response.error?.toLowerCase().includes('repo');
401
-
402
- if (isRepoError) {
403
- setProjectNotFound(true);
404
- setErrorType('repo-not-found');
405
- }
406
-
407
- setGitData(prev => ({
408
- ...prev,
409
- isLoading: false,
410
- error: response.error || 'Failed to load git data',
411
- repository: null,
412
- recentCommits: [],
413
- }));
414
- }
415
- } catch (error) {
416
- console.error('Failed to fetch git data:', error);
417
- setGitData(prev => ({
418
- ...prev,
419
- isLoading: false,
420
- error: 'Failed to load git data',
421
- repository: null,
422
- recentCommits: [],
423
- }));
424
- } finally {
425
- isLoadingGitRef.current = false;
426
- }
427
- }, []);
428
-
429
- // Fetch build
430
- const isLoadingBuildRef = useRef(false);
431
-
432
- const refreshBuild = useCallback(async () => {
433
- if (isLoadingBuildRef.current) return;
434
- isLoadingBuildRef.current = true;
435
- try {
436
- setBuildData(prev => ({ ...prev, isLoading: true, error: null }));
437
- // Add your API call here
438
- } catch (error) {
439
- setBuildData(prev => ({ ...prev, isLoading: false, error: 'Failed to load build data' }));
440
- } finally {
441
- isLoadingBuildRef.current = false;
442
- }
443
- }, [id]);
444
-
445
- // Update functions
446
- const updateProjectData = async (updates: Partial<BasicProjectData>) => {
447
- setProjectData(prev => ({ ...prev, ...updates }));
448
- // Add your API call here to persist changes
449
- };
450
-
451
- const updateDomains = async (domains: any[]) => {
452
- setDomainsData(prev => ({ ...prev, domains }));
453
- // Add your API call here to persist changes
454
- };
455
-
456
- const updateEnvironment = async (envVars: any) => {
457
- setEnvironmentData(prev => ({ ...prev, envVars }));
458
- // Add your API call here to persist changes
459
- };
460
-
461
- const updateGit = async (gitInfo: any) => {
462
- // setGitData(prev => ({ ...prev, ...gitInfo }));
463
- // Add your API call here to persist changes
464
- };
465
-
466
- const updateBuild = async (buildInfo: any) => {
467
- setBuildData(prev => ({ ...prev, ...buildInfo }));
468
- // Add your API call here to persist changes
469
- };
470
-
471
- const updateProjectActive = async (active: boolean) => {
472
- setProjectData(prev => ({ ...prev, active }));
473
- // Add your API call here to persist changes
474
- };
475
-
476
- // Terminal Logs Management
477
- const addTerminalLog = useCallback((log: string) => {
478
- setTerminalLogsData(prev => ({
479
- ...prev,
480
- logs: [...prev.logs, log],
481
- }));
482
- }, []);
483
-
484
- const clearTerminalLogs = useCallback(() => {
485
- setTerminalLogsData(prev => ({
486
- ...prev,
487
- logs: [],
488
- }));
489
- }, []);
490
-
491
- const setTerminalStreaming = useCallback((isStreaming: boolean) => {
492
- setTerminalLogsData(prev => ({
493
- ...prev,
494
- isStreaming,
495
- }));
496
- }, []);
497
-
498
- const setTerminalSSEConnection = useCallback((connection: { disconnect: () => void } | null) => {
499
- setTerminalLogsData(prev => ({
500
- ...prev,
501
- sseConnection: connection,
502
- }));
503
- }, []);
504
-
505
- const setTerminalXtermInstance = useCallback((instance: any) => {
506
- setTerminalLogsData(prev => ({
507
- ...prev,
508
- xtermInstance: instance,
509
- }));
510
- }, []);
511
-
512
- // Server Logs Management
513
- const addServerLog = useCallback((log: any) => {
514
- setServerLogsData(prev => ({
515
- ...prev,
516
- logs: [log, ...prev.logs].slice(0, 50), // Keep last 50 logs
517
- }));
518
- }, []);
519
-
520
- const setServerLogs = useCallback((logs: any[]) => {
521
- setServerLogsData(prev => ({
522
- ...prev,
523
- logs,
524
- }));
525
- }, []);
526
-
527
- const clearServerLogs = useCallback(() => {
528
- setServerLogsData(prev => ({
529
- ...prev,
530
- logs: [],
531
- }));
532
- }, []);
533
-
534
- const setServerMockInterval = useCallback((interval: NodeJS.Timeout | null) => {
535
- // Clear previous interval if exists
536
- if (serverLogsData.mockInterval) {
537
- clearInterval(serverLogsData.mockInterval);
538
- }
539
- setServerLogsData(prev => ({
540
- ...prev,
541
- mockInterval: interval,
542
- }));
543
- }, [serverLogsData.mockInterval]);
544
-
545
- // Cleanup on unmount - use refs to avoid re-running on data changes
546
- const terminalSSERef = useRef(terminalLogsData.sseConnection);
547
- const serverIntervalRef = useRef(serverLogsData.mockInterval);
548
-
549
- // Keep refs in sync
550
- useEffect(() => {
551
- terminalSSERef.current = terminalLogsData.sseConnection;
552
- }, [terminalLogsData.sseConnection]);
553
-
554
- useEffect(() => {
555
- serverIntervalRef.current = serverLogsData.mockInterval;
556
- }, [serverLogsData.mockInterval]);
557
-
558
- // Cleanup on unmount only
559
- useEffect(() => {
560
- return () => {
561
- // Cleanup terminal SSE connection
562
- if (terminalSSERef.current) {
563
- terminalSSERef.current.disconnect();
564
- }
565
- // Cleanup server mock interval
566
- if (serverIntervalRef.current) {
567
- clearInterval(serverIntervalRef.current);
568
- }
569
- };
570
- }, []); // Empty deps - only run on mount/unmount
571
-
572
- const [activeTab, setActiveTab] = useState(slug?.[0] || "error");
573
-
574
- // Initial load - only fetch once on mount since id shouldn't change
575
- useEffect(() => {
576
- refreshAnalytics();
577
- }, [refreshAnalytics]); // refreshAnalytics is memoized with id as dependency
578
-
579
- // Sync activeTab with slug changes (for browser back/forward navigation)
580
- const slugTab = slug?.[0];
581
- useEffect(() => {
582
- if (slugTab && slugTab !== activeTab) {
583
- setActiveTab(slugTab);
584
- }
585
- }, [slugTab]); // Only watch slug[0] to avoid array reference issues
586
-
587
- const tabs = [
588
- { id: "general", label: "General", icon: 'setting-100-1658432731.png' },
589
- { id: "domains", label: "Domains", icon: 'server-59-1658435258.png' },
590
- { id: "deployments", label: "Deployments", icon: 'heart%20rate-118-1658433496.png' },
591
- // { id: "git", label: "Git", icon: 'git%20branch-159-1658431404.png' },
592
- { id: "settings", label: "Settings", icon: 'setting-40-1662364403.png' },
593
- { id: "logs", label: "Logs", icon: 'terminal-184-1658431404.png' },
594
- { id: "advanced", label: "Advanced", icon: 'error%20triangle-81-1658234612.png' },
595
- ];
596
-
597
- const [deployments, setDeployments] = useState([]);
598
- const [deploymentsLoading, setDeploymentsLoading] = useState(false);
599
- const isLoadingDeploymentsRef = useRef(false);
600
-
601
- const fetchDeployments = useCallback(async () => {
602
- if (deploymentsLoading || isLoadingDeploymentsRef.current) return;
603
- if (!id) return;
604
- try {
605
- setDeploymentsLoading(true);
606
- isLoadingDeploymentsRef.current = true;
607
- const response = await projectsApi.getDeployments(id);
608
- if (response.success) {
609
- // Add project info to each deployment
610
- const deploymentsWithProject = (response.deployments || []).map((deployment: any) => ({
611
- ...deployment,
612
- projectId: id,
613
- projectName: projectData.name,
614
- }));
615
- setDeployments(deploymentsWithProject);
616
- }
617
- } catch (error) {
618
- console.error("Error fetching deployments:", error);
619
- } finally {
620
- setDeploymentsLoading(false);
621
- isLoadingDeploymentsRef.current = false;
622
- }
623
- }, [id]);
624
-
625
- const value: ProjectSettingsContextType = useMemo(() => ({
626
- fetchDeployments,
627
- deployments,
628
- deploymentsLoading,
629
- projectData,
630
- setProjectData,
631
- updateProjectData,
632
- updateProjectActive,
633
-
634
- analyticsData,
635
- isLoadingAnalytics,
636
- analyticsError,
637
- refreshAnalytics,
638
-
639
- domainsData,
640
- updateDomains,
641
- refreshDomains,
642
-
643
- environmentData,
644
- updateEnvironment,
645
- refreshEnvironment,
646
-
647
- gitData,
648
- updateGit,
649
- refreshGit,
650
-
651
- buildData,
652
- updateBuild,
653
- refreshBuild,
654
-
655
- terminalLogsData,
656
- addTerminalLog,
657
- clearTerminalLogs,
658
- setTerminalStreaming,
659
- setTerminalSSEConnection,
660
- setTerminalXtermInstance,
661
-
662
- serverLogsData,
663
- addServerLog,
664
- setServerLogs,
665
- clearServerLogs,
666
- setServerMockInterval,
667
-
668
- projectNotFound,
669
- errorType,
670
- id,
671
- domain,
672
- slug,
673
- activeTab,
674
- setActiveTab,
675
- tabs,
676
- }), [
677
- projectData,
678
- analyticsData,
679
- isLoadingAnalytics,
680
- analyticsError,
681
- refreshAnalytics,
682
- domainsData,
683
- updateDomains,
684
- refreshDomains,
685
- environmentData,
686
- updateEnvironment,
687
- refreshEnvironment,
688
- gitData,
689
- updateGit,
690
- refreshGit,
691
- buildData,
692
- updateBuild,
693
- refreshBuild,
694
- terminalLogsData,
695
- addTerminalLog,
696
- clearTerminalLogs,
697
- setTerminalStreaming,
698
- setTerminalSSEConnection,
699
- setTerminalXtermInstance,
700
- serverLogsData,
701
- addServerLog,
702
- setServerLogs,
703
- clearServerLogs,
704
- setServerMockInterval,
705
- projectNotFound,
706
- errorType,
707
- id,
708
- domain,
709
- slug,
710
- activeTab,
711
- tabs,
712
- ]);
713
-
714
- return (
715
- <ProjectSettingsContext.Provider value={value}>
716
- {children}
717
- </ProjectSettingsContext.Provider>
718
- );
719
- };
720
-
721
- export const useProjectSettings = () => {
722
- const context = useContext(ProjectSettingsContext);
723
- if (context === undefined) {
724
- throw new Error('useProjectSettings must be used within a ProjectSettingsProvider');
725
- }
726
- return context;
727
- };