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.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5786 -0
- package/dist/server/index.js +324319 -0
- package/dist/server/migrations/0000_init.sql +666 -0
- package/dist/server/migrations/0001_brief_tomorrow_man.sql +47 -0
- package/dist/server/migrations/0002_funny_dazzler.sql +2 -0
- package/dist/server/migrations/0003_third_killer_shrike.sql +1 -0
- package/dist/server/migrations/0004_session_active_org_not_null.sql +10 -0
- package/dist/server/migrations/0005_warm_amazoness.sql +3 -0
- package/dist/server/migrations/0006_lumpy_joystick.sql +1 -0
- package/dist/server/migrations/0007_outgoing_maginty.sql +2 -0
- package/dist/server/migrations/0008_frozen_cutover.sql +3 -0
- package/dist/server/migrations/0009_credits_billing.sql +142 -0
- package/dist/server/migrations/0010_credit_grant_dedupe.sql +14 -0
- package/dist/server/migrations/0011_remove_credit_ledger.sql +23 -0
- package/dist/server/migrations/0012_smart_deploys_and_git_rollback.sql +81 -0
- package/dist/server/migrations/0013_fix_check_run_rollup_unique.sql +38 -0
- package/dist/server/migrations/0014_default_rollback_git.sql +9 -0
- package/dist/server/migrations/0015_billing_idempotency_grants.sql +41 -0
- package/dist/server/migrations/0016_github_auth_high_findings.sql +30 -0
- package/dist/server/migrations/0017_spooky_rumiko_fujikawa.sql +6 -0
- package/dist/server/migrations/0018_calm_shatterstar.sql +1 -0
- package/dist/server/migrations/0019_rename_workspace_install_to_prepare.sql +1 -0
- package/dist/server/migrations/0020_uneven_the_renegades.sql +13 -0
- package/dist/server/migrations/0021_shiny_firestar.sql +2 -0
- package/dist/server/migrations/0022_version_on_success_backfill.sql +6 -0
- package/dist/server/migrations/0023_productive_gorilla_man.sql +17 -0
- package/dist/server/migrations/0024_sleepy_peter_quill.sql +2 -0
- package/dist/server/migrations/0025_smooth_blue_shield.sql +1 -0
- package/dist/server/migrations/0026_mail_backup_source.sql +11 -0
- package/dist/server/migrations/0027_opposite_anthem.sql +6 -0
- package/dist/server/migrations/0028_stale_rogue.sql +18 -0
- package/dist/server/migrations/0029_bouncy_loners.sql +16 -0
- package/dist/server/migrations/0030_bright_darkstar.sql +6 -0
- package/dist/server/migrations/0031_conscious_catseye.sql +13 -0
- package/dist/server/migrations/0032_wet_mimic.sql +51 -0
- package/dist/server/migrations/0033_eminent_molly_hayes.sql +2 -0
- package/dist/server/migrations/meta/0000_snapshot.json +5110 -0
- package/dist/server/migrations/meta/0001_snapshot.json +5257 -0
- package/dist/server/migrations/meta/0002_snapshot.json +5279 -0
- package/dist/server/migrations/meta/0003_snapshot.json +5286 -0
- package/dist/server/migrations/meta/0004_snapshot.json +5286 -0
- package/dist/server/migrations/meta/0005_snapshot.json +5305 -0
- package/dist/server/migrations/meta/0006_snapshot.json +5311 -0
- package/dist/server/migrations/meta/0007_snapshot.json +5323 -0
- package/dist/server/migrations/meta/0016_snapshot.json +6345 -0
- package/dist/server/migrations/meta/0017_snapshot.json +6383 -0
- package/dist/server/migrations/meta/0018_snapshot.json +6390 -0
- package/dist/server/migrations/meta/0019_snapshot.json +6390 -0
- package/dist/server/migrations/meta/0020_snapshot.json +6497 -0
- package/dist/server/migrations/meta/0021_snapshot.json +6509 -0
- package/dist/server/migrations/meta/0022_snapshot.json +6509 -0
- package/dist/server/migrations/meta/0023_snapshot.json +6629 -0
- package/dist/server/migrations/meta/0024_snapshot.json +6641 -0
- package/dist/server/migrations/meta/0025_snapshot.json +6648 -0
- package/dist/server/migrations/meta/0026_snapshot.json +6750 -0
- package/dist/server/migrations/meta/0027_snapshot.json +6757 -0
- package/dist/server/migrations/meta/0028_snapshot.json +6895 -0
- package/dist/server/migrations/meta/0029_snapshot.json +7028 -0
- package/dist/server/migrations/meta/0030_snapshot.json +7066 -0
- package/dist/server/migrations/meta/0031_snapshot.json +7181 -0
- package/dist/server/migrations/meta/0032_snapshot.json +7570 -0
- package/dist/server/migrations/meta/0033_snapshot.json +7597 -0
- package/dist/server/migrations/meta/_journal.json +244 -0
- package/dist/server/pglite/pglite.data +0 -0
- package/dist/server/pglite/pglite.wasm +0 -0
- package/package.json +31 -33
- package/.env.example +0 -38
- package/.nvmrc +0 -1
- package/.prettierrc +0 -7
- package/CONTRIBUTING.md +0 -90
- package/LICENSE +0 -661
- package/README.md +0 -360
- package/apps/api/.env.example +0 -30
- package/apps/api/Dockerfile +0 -22
- package/apps/api/package.json +0 -41
- package/apps/api/src/app.ts +0 -69
- package/apps/api/src/config/env.ts +0 -113
- package/apps/api/src/config/index.ts +0 -1
- package/apps/api/src/index.ts +0 -8
- package/apps/api/src/lib/auth-mode.ts +0 -42
- package/apps/api/src/lib/auth.ts +0 -105
- package/apps/api/src/lib/cache.ts +0 -128
- package/apps/api/src/lib/cloud-auth-proxy.ts +0 -310
- package/apps/api/src/lib/cloud-client.ts +0 -103
- package/apps/api/src/lib/compose-parser.ts +0 -138
- package/apps/api/src/lib/controller-helpers.ts +0 -90
- package/apps/api/src/lib/email-templates.ts +0 -94
- package/apps/api/src/lib/encryption.ts +0 -102
- package/apps/api/src/lib/local-user.ts +0 -65
- package/apps/api/src/lib/mail.ts +0 -48
- package/apps/api/src/lib/notifications.ts +0 -195
- package/apps/api/src/lib/openship-cloud.ts +0 -101
- package/apps/api/src/lib/resources.ts +0 -96
- package/apps/api/src/lib/screenshots.ts +0 -189
- package/apps/api/src/lib/ssh-manager.ts +0 -369
- package/apps/api/src/lib/ssl-scheduler.ts +0 -109
- package/apps/api/src/lib/stack-detector.ts +0 -708
- package/apps/api/src/lib/system-debug.ts +0 -10
- package/apps/api/src/middleware/auth.ts +0 -60
- package/apps/api/src/middleware/error-handler.ts +0 -41
- package/apps/api/src/middleware/index.ts +0 -5
- package/apps/api/src/middleware/internal-auth.ts +0 -40
- package/apps/api/src/middleware/local-only.ts +0 -20
- package/apps/api/src/middleware/rate-limiter.ts +0 -35
- package/apps/api/src/modules/analytics/analytics.controller.ts +0 -111
- package/apps/api/src/modules/analytics/analytics.routes.ts +0 -29
- package/apps/api/src/modules/analytics/analytics.schema.ts +0 -37
- package/apps/api/src/modules/analytics/analytics.service.ts +0 -264
- package/apps/api/src/modules/auth/auth.routes.ts +0 -237
- package/apps/api/src/modules/billing/billing.controller.ts +0 -60
- package/apps/api/src/modules/billing/billing.routes.ts +0 -34
- package/apps/api/src/modules/billing/billing.schema.ts +0 -9
- package/apps/api/src/modules/billing/billing.service.ts +0 -33
- package/apps/api/src/modules/cloud/cloud.controller.ts +0 -225
- package/apps/api/src/modules/cloud/cloud.routes.ts +0 -40
- package/apps/api/src/modules/deployments/build.service.ts +0 -791
- package/apps/api/src/modules/deployments/deployment-lifecycle.ts +0 -138
- package/apps/api/src/modules/deployments/deployment.controller.ts +0 -343
- package/apps/api/src/modules/deployments/deployment.routes.ts +0 -37
- package/apps/api/src/modules/deployments/deployment.schema.ts +0 -39
- package/apps/api/src/modules/deployments/deployment.service.ts +0 -190
- package/apps/api/src/modules/deployments/preflight.ts +0 -280
- package/apps/api/src/modules/deployments/prepare.service.ts +0 -252
- package/apps/api/src/modules/deployments/session-manager.ts +0 -283
- package/apps/api/src/modules/deployments/ssl.service.ts +0 -73
- package/apps/api/src/modules/domains/domain.controller.ts +0 -73
- package/apps/api/src/modules/domains/domain.routes.ts +0 -24
- package/apps/api/src/modules/domains/domain.schema.ts +0 -35
- package/apps/api/src/modules/domains/domain.service.ts +0 -385
- package/apps/api/src/modules/github/github.auth.ts +0 -397
- package/apps/api/src/modules/github/github.controller.ts +0 -387
- package/apps/api/src/modules/github/github.local-auth.ts +0 -251
- package/apps/api/src/modules/github/github.routes.ts +0 -50
- package/apps/api/src/modules/github/github.schema.ts +0 -52
- package/apps/api/src/modules/github/github.service.ts +0 -592
- package/apps/api/src/modules/github/github.types.ts +0 -158
- package/apps/api/src/modules/github/github.webhook.ts +0 -186
- package/apps/api/src/modules/github/index.ts +0 -16
- package/apps/api/src/modules/health/health.routes.ts +0 -45
- package/apps/api/src/modules/projects/project.controller.ts +0 -498
- package/apps/api/src/modules/projects/project.routes.ts +0 -67
- package/apps/api/src/modules/projects/project.schema.ts +0 -107
- package/apps/api/src/modules/projects/project.service.ts +0 -514
- package/apps/api/src/modules/settings/settings.controller.ts +0 -55
- package/apps/api/src/modules/settings/settings.routes.ts +0 -25
- package/apps/api/src/modules/settings/settings.service.ts +0 -49
- package/apps/api/src/modules/system/filesystem.controller.ts +0 -66
- package/apps/api/src/modules/system/index.ts +0 -1
- package/apps/api/src/modules/system/server-check.controller.ts +0 -475
- package/apps/api/src/modules/system/setup-session.ts +0 -255
- package/apps/api/src/modules/system/setup.controller.ts +0 -128
- package/apps/api/src/modules/system/system.routes.ts +0 -42
- package/apps/api/src/modules/webhooks/webhook.controller.ts +0 -64
- package/apps/api/src/modules/webhooks/webhook.routes.ts +0 -15
- package/apps/api/src/modules/webhooks/webhook.service.ts +0 -52
- package/apps/api/src/modules/webhooks/webhook.types.ts +0 -35
- package/apps/api/tsconfig.json +0 -14
- package/apps/cli/package.json +0 -26
- package/apps/cli/src/commands/deploy.ts +0 -11
- package/apps/cli/src/commands/init.ts +0 -8
- package/apps/cli/src/commands/login.ts +0 -8
- package/apps/cli/src/commands/logs.ts +0 -9
- package/apps/cli/src/index.ts +0 -21
- package/apps/cli/src/lib/api-client.ts +0 -35
- package/apps/cli/tsconfig.json +0 -13
- package/apps/dashboard/Dockerfile +0 -22
- package/apps/dashboard/components.json +0 -20
- package/apps/dashboard/next-env.d.ts +0 -6
- package/apps/dashboard/next.config.mjs +0 -16
- package/apps/dashboard/package.json +0 -40
- package/apps/dashboard/postcss.config.mjs +0 -5
- package/apps/dashboard/public/android-chrome-192x192.png +0 -0
- package/apps/dashboard/public/android-chrome-512x512.png +0 -0
- package/apps/dashboard/public/apple-touch-icon.png +0 -0
- package/apps/dashboard/public/favicon-16x16.png +0 -0
- package/apps/dashboard/public/favicon-32x32.png +0 -0
- package/apps/dashboard/public/favicon.ico +0 -0
- package/apps/dashboard/public/site.webmanifest +0 -19
- package/apps/dashboard/src/app/(auth)/forgot-password/page.tsx +0 -114
- package/apps/dashboard/src/app/(auth)/layout.tsx +0 -21
- package/apps/dashboard/src/app/(auth)/login/page.tsx +0 -220
- package/apps/dashboard/src/app/(auth)/providers.tsx +0 -34
- package/apps/dashboard/src/app/(auth)/register/page.tsx +0 -176
- package/apps/dashboard/src/app/(auth)/reset-password/page.tsx +0 -172
- package/apps/dashboard/src/app/(auth)/verify-email/page.tsx +0 -190
- package/apps/dashboard/src/app/(dashboard)/(deployment)/build/[id]/page.tsx +0 -162
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/BuildSummary.tsx +0 -166
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/DnsConfiguration.tsx +0 -119
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/DomainSettings.tsx +0 -291
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/Header.tsx +0 -71
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/Sidebar.tsx +0 -270
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/SkeletonLoader.tsx +0 -87
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/page.tsx +0 -169
- package/apps/dashboard/src/app/(dashboard)/(deployment)/layout.tsx +0 -7
- package/apps/dashboard/src/app/(dashboard)/billing/page.tsx +0 -3
- package/apps/dashboard/src/app/(dashboard)/deployments/components/CommitDetailsModal.tsx +0 -240
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentCard.tsx +0 -121
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentHeader.tsx +0 -89
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentMenu.tsx +0 -182
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsContent.tsx +0 -324
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsFilters.tsx +0 -99
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsList.tsx +0 -31
- package/apps/dashboard/src/app/(dashboard)/deployments/components/EmptyState.tsx +0 -101
- package/apps/dashboard/src/app/(dashboard)/deployments/components/LoadingSkeleton.tsx +0 -57
- package/apps/dashboard/src/app/(dashboard)/deployments/components/ProjectFilter.tsx +0 -109
- package/apps/dashboard/src/app/(dashboard)/deployments/components/index.ts +0 -9
- package/apps/dashboard/src/app/(dashboard)/deployments/page.tsx +0 -14
- package/apps/dashboard/src/app/(dashboard)/deployments/types.ts +0 -44
- package/apps/dashboard/src/app/(dashboard)/deployments/utils.ts +0 -176
- package/apps/dashboard/src/app/(dashboard)/domains/page.tsx +0 -3
- package/apps/dashboard/src/app/(dashboard)/integrations/page.tsx +0 -321
- package/apps/dashboard/src/app/(dashboard)/layout.tsx +0 -27
- package/apps/dashboard/src/app/(dashboard)/library/components/ConnectPrompt.tsx +0 -187
- package/apps/dashboard/src/app/(dashboard)/library/components/LibrarySidebar.tsx +0 -147
- package/apps/dashboard/src/app/(dashboard)/library/components/LoadingSkeleton.tsx +0 -39
- package/apps/dashboard/src/app/(dashboard)/library/components/LocalProjects.tsx +0 -548
- package/apps/dashboard/src/app/(dashboard)/library/components/RepositoryList.tsx +0 -292
- package/apps/dashboard/src/app/(dashboard)/library/components/TemplateGrid.tsx +0 -36
- package/apps/dashboard/src/app/(dashboard)/library/components/UrlImport.tsx +0 -74
- package/apps/dashboard/src/app/(dashboard)/library/page.tsx +0 -121
- package/apps/dashboard/src/app/(dashboard)/library/types.ts +0 -26
- package/apps/dashboard/src/app/(dashboard)/monitoring/page.tsx +0 -3
- package/apps/dashboard/src/app/(dashboard)/page.tsx +0 -485
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/[[...slug]]/layout.tsx +0 -22
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/[[...slug]]/page.tsx +0 -286
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/AdvancedSettings.tsx +0 -235
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/BuildSettings.tsx +0 -174
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DeleteConfirmationDialog.tsx +0 -45
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DeletionModal.tsx +0 -95
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/Deployments.tsx +0 -11
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DomainSettings.tsx +0 -523
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/EnvironmentSettings.tsx +0 -246
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GeneralSettings.tsx +0 -93
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GitInfo.tsx +0 -261
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GitSettings.tsx +0 -391
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/LogsSettings.tsx +0 -133
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ProjectNotFound.tsx +0 -95
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ProjectsBottomNavigation.tsx +0 -62
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ResourceSettings.tsx +0 -333
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SettingSection.tsx +0 -66
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SettingsNavigation.tsx +0 -27
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SleepModeSettings.tsx +0 -134
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProductionUrl.tsx +0 -25
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProjectIdentity.tsx +0 -159
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProjectInfo.tsx +0 -58
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/SkeletonLoader.tsx +0 -170
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/StatsCards.tsx +0 -33
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/TopPaths.tsx +0 -56
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/TrafficChart.tsx +0 -157
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/index.ts +0 -14
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/LogsActions.tsx +0 -52
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/ServerLogs.tsx +0 -249
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/TerminalLogs.tsx +0 -682
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/logs.css +0 -127
- package/apps/dashboard/src/app/(dashboard)/projects/components/DeploymentCard.tsx +0 -73
- package/apps/dashboard/src/app/(dashboard)/projects/components/ProjectCard.tsx +0 -330
- package/apps/dashboard/src/app/(dashboard)/projects/page.tsx +0 -330
- package/apps/dashboard/src/app/(dashboard)/providers.tsx +0 -23
- package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/components-tab.tsx +0 -329
- package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/overview-tab.tsx +0 -229
- package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/terminal-tab.tsx +0 -38
- package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/page.tsx +0 -437
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/checking-state.tsx +0 -15
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/choose-mode.tsx +0 -54
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/component-row.tsx +0 -65
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/error-banner.tsx +0 -13
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/installing-panel.tsx +0 -227
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/results-panel.tsx +0 -90
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/setup-header.tsx +0 -56
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/types.ts +0 -13
- package/apps/dashboard/src/app/(dashboard)/servers/new/page.tsx +0 -666
- package/apps/dashboard/src/app/(dashboard)/servers/page.tsx +0 -283
- package/apps/dashboard/src/app/(dashboard)/settings/_components/BuildPreferences.tsx +0 -110
- package/apps/dashboard/src/app/(dashboard)/settings/_components/CloudConnection.tsx +0 -147
- package/apps/dashboard/src/app/(dashboard)/settings/_components/InstanceInfo.tsx +0 -54
- package/apps/dashboard/src/app/(dashboard)/settings/_components/ServerConnection.tsx +0 -407
- package/apps/dashboard/src/app/(dashboard)/settings/_components/SettingsSection.tsx +0 -32
- package/apps/dashboard/src/app/(dashboard)/settings/page.tsx +0 -67
- package/apps/dashboard/src/app/auth/callback/close/page.tsx +0 -23
- package/apps/dashboard/src/app/auth/callback/install/page.tsx +0 -40
- package/apps/dashboard/src/app/authorize/page.tsx +0 -137
- package/apps/dashboard/src/app/globals.css +0 -57
- package/apps/dashboard/src/app/layout.tsx +0 -55
- package/apps/dashboard/src/components/auth-shell.tsx +0 -66
- package/apps/dashboard/src/components/deployments/types.ts +0 -44
- package/apps/dashboard/src/components/global-deployments/index.ts +0 -17
- package/apps/dashboard/src/components/i18n-provider.tsx +0 -100
- package/apps/dashboard/src/components/import-project/BuildSettings.tsx +0 -376
- package/apps/dashboard/src/components/import-project/BuildSkeleton.tsx +0 -161
- package/apps/dashboard/src/components/import-project/BuildTerminal.tsx +0 -358
- package/apps/dashboard/src/components/import-project/ComposeServices.tsx +0 -455
- package/apps/dashboard/src/components/import-project/DeploymentProcessing.tsx +0 -510
- package/apps/dashboard/src/components/import-project/DockerSettings.tsx +0 -64
- package/apps/dashboard/src/components/import-project/EnvironmentVariables.tsx +0 -481
- package/apps/dashboard/src/components/import-project/Frameworks.tsx +0 -90
- package/apps/dashboard/src/components/import-project/ProjectSettings.tsx +0 -160
- package/apps/dashboard/src/components/import-project/types.ts +0 -82
- package/apps/dashboard/src/components/integrations/GithubPermissionModal.tsx +0 -173
- package/apps/dashboard/src/components/language-switcher.tsx +0 -36
- package/apps/dashboard/src/components/logo.tsx +0 -13
- package/apps/dashboard/src/components/network-error-handler.tsx +0 -27
- package/apps/dashboard/src/components/oauth-buttons.tsx +0 -81
- package/apps/dashboard/src/components/overview/ActivityChart.tsx +0 -247
- package/apps/dashboard/src/components/overview/ApiRequestsCard.tsx +0 -111
- package/apps/dashboard/src/components/overview/CreditsCard.tsx +0 -137
- package/apps/dashboard/src/components/overview/DeploymentsChart.tsx +0 -195
- package/apps/dashboard/src/components/overview/EmptyState.tsx +0 -126
- package/apps/dashboard/src/components/overview/LoadingSkeleton.tsx +0 -92
- package/apps/dashboard/src/components/overview/OverviewHeader.tsx +0 -74
- package/apps/dashboard/src/components/overview/OverviewHeroChart.tsx +0 -344
- package/apps/dashboard/src/components/overview/ProjectsCard.tsx +0 -134
- package/apps/dashboard/src/components/overview/QuickLinks.tsx +0 -119
- package/apps/dashboard/src/components/overview/SandboxesCard.tsx +0 -150
- package/apps/dashboard/src/components/overview/StatsGrid.tsx +0 -166
- package/apps/dashboard/src/components/overview/TokenUsageChart.tsx +0 -206
- package/apps/dashboard/src/components/overview/UsageStats.tsx +0 -79
- package/apps/dashboard/src/components/overview/index.ts +0 -30
- package/apps/dashboard/src/components/overview/types.ts +0 -116
- package/apps/dashboard/src/components/page-header.tsx +0 -25
- package/apps/dashboard/src/components/project-settings/ServerSideSwitch.jsx +0 -60
- package/apps/dashboard/src/components/shared/AlertBox.tsx +0 -39
- package/apps/dashboard/src/components/shared/CTASection.tsx +0 -45
- package/apps/dashboard/src/components/shared/ErrorState.tsx +0 -176
- package/apps/dashboard/src/components/shared/FeatureCard.tsx +0 -20
- package/apps/dashboard/src/components/shared/MDXComponents.tsx +0 -24
- package/apps/dashboard/src/components/shared/MachineSettingsModal.tsx +0 -286
- package/apps/dashboard/src/components/shared/Modal.tsx +0 -39
- package/apps/dashboard/src/components/shared/OTPInput.tsx +0 -122
- package/apps/dashboard/src/components/shared/PageHero.tsx +0 -21
- package/apps/dashboard/src/components/shared/PlatformFeatureCard.tsx +0 -27
- package/apps/dashboard/src/components/shared/StatCard.tsx +0 -14
- package/apps/dashboard/src/components/shared/ValueCard.tsx +0 -20
- package/apps/dashboard/src/components/shared/index.ts +0 -8
- package/apps/dashboard/src/components/sidebar.tsx +0 -282
- package/apps/dashboard/src/components/theme-provider.tsx +0 -96
- package/apps/dashboard/src/components/toast.tsx +0 -106
- package/apps/dashboard/src/components/ui/CustomCursor.tsx +0 -107
- package/apps/dashboard/src/components/ui/CustomSelect.tsx +0 -126
- package/apps/dashboard/src/components/ui/DropdownMenu.tsx +0 -174
- package/apps/dashboard/src/components/ui/FileIcon.jsx +0 -59
- package/apps/dashboard/src/components/ui/IconPickerModal.tsx +0 -273
- package/apps/dashboard/src/components/ui/InfoBanner.jsx +0 -39
- package/apps/dashboard/src/components/ui/Logo.tsx +0 -14
- package/apps/dashboard/src/components/ui/Modal.tsx +0 -117
- package/apps/dashboard/src/components/ui/PageContainer.tsx +0 -12
- package/apps/dashboard/src/components/ui/SectionContainer.jsx +0 -7
- package/apps/dashboard/src/components/ui/SlidingToggle.tsx +0 -128
- package/apps/dashboard/src/components/ui/Toast.tsx +0 -29
- package/apps/dashboard/src/components/ui/button.tsx +0 -58
- package/apps/dashboard/src/components/ui/card.tsx +0 -60
- package/apps/dashboard/src/components/ui/input.tsx +0 -20
- package/apps/dashboard/src/components/ui/label.tsx +0 -19
- package/apps/dashboard/src/components/ui/select.tsx +0 -10
- package/apps/dashboard/src/components/ui/textarea.tsx +0 -9
- package/apps/dashboard/src/constants/lang-colors.ts +0 -25
- package/apps/dashboard/src/constants/mock.ts +0 -38
- package/apps/dashboard/src/context/AuthContext.tsx +0 -91
- package/apps/dashboard/src/context/CloudContext.tsx +0 -275
- package/apps/dashboard/src/context/DeploymentContext.tsx +0 -71
- package/apps/dashboard/src/context/GitHubContext.tsx +0 -288
- package/apps/dashboard/src/context/ModalContext.tsx +0 -300
- package/apps/dashboard/src/context/NetworkContext.tsx +0 -32
- package/apps/dashboard/src/context/ProjectSettingsContext.tsx +0 -727
- package/apps/dashboard/src/context/ToastContext.tsx +0 -129
- package/apps/dashboard/src/context/deployment/index.ts +0 -3
- package/apps/dashboard/src/context/deployment/types.ts +0 -183
- package/apps/dashboard/src/context/deployment/useDeploymentBuild.ts +0 -547
- package/apps/dashboard/src/context/deployment/useDeploymentConfig.ts +0 -176
- package/apps/dashboard/src/hooks/useBuildConnection.ts +0 -334
- package/apps/dashboard/src/hooks/useMonitorStream.ts +0 -146
- package/apps/dashboard/src/hooks/useProjectData.ts +0 -110
- package/apps/dashboard/src/hooks/useSSEConnection.ts +0 -465
- package/apps/dashboard/src/hooks/useSSEStream.ts +0 -309
- package/apps/dashboard/src/hooks/useSessions.ts +0 -104
- package/apps/dashboard/src/hooks/useSetupStream.ts +0 -223
- package/apps/dashboard/src/i18n/dictionaries/ar.json +0 -218
- package/apps/dashboard/src/i18n/dictionaries/en.json +0 -218
- package/apps/dashboard/src/i18n/index.ts +0 -16
- package/apps/dashboard/src/lib/api/ai.ts +0 -22
- package/apps/dashboard/src/lib/api/auth.ts +0 -13
- package/apps/dashboard/src/lib/api/client.ts +0 -199
- package/apps/dashboard/src/lib/api/cloud.ts +0 -15
- package/apps/dashboard/src/lib/api/deploy.ts +0 -58
- package/apps/dashboard/src/lib/api/domains.ts +0 -13
- package/apps/dashboard/src/lib/api/endpoints.ts +0 -129
- package/apps/dashboard/src/lib/api/github.ts +0 -31
- package/apps/dashboard/src/lib/api/icons.ts +0 -12
- package/apps/dashboard/src/lib/api/index.ts +0 -41
- package/apps/dashboard/src/lib/api/projects.ts +0 -153
- package/apps/dashboard/src/lib/api/sandbox.ts +0 -14
- package/apps/dashboard/src/lib/api/settings.ts +0 -21
- package/apps/dashboard/src/lib/api/system.ts +0 -159
- package/apps/dashboard/src/lib/auth-client.ts +0 -54
- package/apps/dashboard/src/lib/country.ts +0 -25
- package/apps/dashboard/src/lib/server/api.ts +0 -140
- package/apps/dashboard/src/lib/server/session.ts +0 -103
- package/apps/dashboard/src/lib/sseClient.ts +0 -241
- package/apps/dashboard/src/lib/sseMessageProcessors.ts +0 -323
- package/apps/dashboard/src/lib/utils.ts +0 -6
- package/apps/dashboard/src/proxy.ts +0 -46
- package/apps/dashboard/src/styles/Toast.module.css +0 -92
- package/apps/dashboard/src/styles/fonts.css +0 -93
- package/apps/dashboard/src/styles/theme.css +0 -336
- package/apps/dashboard/src/types/research.ts +0 -42
- package/apps/dashboard/src/utils/SSEParser.js +0 -150
- package/apps/dashboard/src/utils/authWindow.ts +0 -143
- package/apps/dashboard/src/utils/codeTheme.ts +0 -127
- package/apps/dashboard/src/utils/colors.json +0 -2810
- package/apps/dashboard/src/utils/date.ts +0 -121
- package/apps/dashboard/src/utils/deployment.ts +0 -128
- package/apps/dashboard/src/utils/deploymentPhaseDetector.ts +0 -232
- package/apps/dashboard/src/utils/extToLang.js +0 -103
- package/apps/dashboard/src/utils/github.ts +0 -62
- package/apps/dashboard/src/utils/icons.js +0 -46
- package/apps/dashboard/src/utils/repoSlug.ts +0 -110
- package/apps/dashboard/src/utils/research-api.ts +0 -163
- package/apps/dashboard/src/utils/suggestions.ts +0 -84
- package/apps/dashboard/src/utils/theme.js +0 -1
- package/apps/dashboard/src/utils/ui-helpers.tsx +0 -30
- package/apps/dashboard/src/utils/upload.js +0 -12
- package/apps/dashboard/tsconfig.json +0 -33
- package/apps/desktop/forge.config.json +0 -36
- package/apps/desktop/package.json +0 -26
- package/apps/desktop/scripts/dev.mjs +0 -58
- package/apps/desktop/src/main/index.ts +0 -675
- package/apps/desktop/src/main/types/desktop.d.ts +0 -33
- package/apps/desktop/src/preload/index.ts +0 -88
- package/apps/desktop/src/renderer/index.html +0 -462
- package/apps/desktop/src/renderer/onboarding.js +0 -511
- package/apps/desktop/src/renderer/styles.css +0 -1139
- package/apps/desktop/tsconfig.json +0 -17
- package/apps/web/.source/browser.ts +0 -13
- package/apps/web/.source/dynamic.ts +0 -8
- package/apps/web/.source/server.ts +0 -22
- package/apps/web/.source/source.config.mjs +0 -20
- package/apps/web/Dockerfile +0 -22
- package/apps/web/content/blog/how-ai-builds-work.mdx +0 -55
- package/apps/web/content/blog/introducing-openship.mdx +0 -46
- package/apps/web/content/blog/self-hosting-cost-breakdown.mdx +0 -59
- package/apps/web/content/docs/_meta.json +0 -14
- package/apps/web/content/docs/api.mdx +0 -98
- package/apps/web/content/docs/cli.mdx +0 -80
- package/apps/web/content/docs/first-deployment.mdx +0 -56
- package/apps/web/content/docs/index.mdx +0 -27
- package/apps/web/content/docs/installation.mdx +0 -65
- package/apps/web/content/docs/quickstart.mdx +0 -45
- package/apps/web/next-env.d.ts +0 -6
- package/apps/web/next.config.mjs +0 -20
- package/apps/web/package.json +0 -33
- package/apps/web/postcss.config.mjs +0 -5
- package/apps/web/public/android-chrome-192x192.png +0 -0
- package/apps/web/public/android-chrome-512x512.png +0 -0
- package/apps/web/public/apple-touch-icon.png +0 -0
- package/apps/web/public/favicon-16x16.png +0 -0
- package/apps/web/public/favicon-32x32.png +0 -0
- package/apps/web/public/favicon.ico +0 -0
- package/apps/web/public/site.webmanifest +0 -1
- package/apps/web/source.config.ts +0 -17
- package/apps/web/src/app/(marketing)/layout.tsx +0 -9
- package/apps/web/src/app/(marketing)/page.tsx +0 -2
- package/apps/web/src/app/(marketing)/pricing/page.tsx +0 -10
- package/apps/web/src/app/blog/[...slug]/page.tsx +0 -247
- package/apps/web/src/app/blog/blog.css +0 -575
- package/apps/web/src/app/blog/layout.tsx +0 -50
- package/apps/web/src/app/blog/page.tsx +0 -235
- package/apps/web/src/app/docs/[[...slug]]/page.tsx +0 -67
- package/apps/web/src/app/docs/layout.tsx +0 -62
- package/apps/web/src/app/docs/toc-theme.css +0 -71
- package/apps/web/src/app/download/page.tsx +0 -396
- package/apps/web/src/app/globals.css +0 -20
- package/apps/web/src/app/layout.tsx +0 -70
- package/apps/web/src/app/page.tsx +0 -51
- package/apps/web/src/app/robots.ts +0 -15
- package/apps/web/src/app/sitemap.ts +0 -35
- package/apps/web/src/components/blog/share-sidebar.tsx +0 -81
- package/apps/web/src/components/blog/writer-sidebar.tsx +0 -81
- package/apps/web/src/components/landing/ai-native.tsx +0 -169
- package/apps/web/src/components/landing/backups.tsx +0 -139
- package/apps/web/src/components/landing/cdn.tsx +0 -109
- package/apps/web/src/components/landing/coming-soon.tsx +0 -180
- package/apps/web/src/components/landing/dark-section.tsx +0 -166
- package/apps/web/src/components/landing/dashboard.tsx +0 -407
- package/apps/web/src/components/landing/developer-experience.tsx +0 -224
- package/apps/web/src/components/landing/dns-domains.tsx +0 -146
- package/apps/web/src/components/landing/download-button.tsx +0 -151
- package/apps/web/src/components/landing/features/ai-visual.tsx +0 -48
- package/apps/web/src/components/landing/features/cloud-visual.tsx +0 -44
- package/apps/web/src/components/landing/features/git-visual.tsx +0 -61
- package/apps/web/src/components/landing/features/index.tsx +0 -642
- package/apps/web/src/components/landing/features/infra-visual.tsx +0 -69
- package/apps/web/src/components/landing/features/rollback-visual.tsx +0 -42
- package/apps/web/src/components/landing/features/ssl-visual.tsx +0 -41
- package/apps/web/src/components/landing/features/stacks-visual.tsx +0 -54
- package/apps/web/src/components/landing/final-cta.tsx +0 -116
- package/apps/web/src/components/landing/footer.tsx +0 -145
- package/apps/web/src/components/landing/hero.tsx +0 -110
- package/apps/web/src/components/landing/how-it-works.tsx +0 -210
- package/apps/web/src/components/landing/index.ts +0 -21
- package/apps/web/src/components/landing/mail-server.tsx +0 -122
- package/apps/web/src/components/landing/navbar.tsx +0 -199
- package/apps/web/src/components/landing/no-lockin.tsx +0 -185
- package/apps/web/src/components/landing/open-source-cta.tsx +0 -151
- package/apps/web/src/components/landing/portability.tsx +0 -190
- package/apps/web/src/components/landing/pricing.tsx +0 -263
- package/apps/web/src/components/landing/scaling.tsx +0 -209
- package/apps/web/src/components/landing/why-openship.tsx +0 -291
- package/apps/web/src/hooks/use-gsap-scroll.ts +0 -158
- package/apps/web/src/hooks/use-platform.ts +0 -86
- package/apps/web/src/lib/source.ts +0 -12
- package/apps/web/src/styles/fonts.css +0 -84
- package/apps/web/src/styles/landing.css +0 -951
- package/apps/web/src/styles/theme.css +0 -227
- package/apps/web/tsconfig.json +0 -16
- package/bun.lock +0 -3260
- package/docker-compose.yml +0 -90
- package/docs/screenshots/.gitkeep +0 -0
- package/docs/screenshots/screen.png +0 -0
- package/openship.code-workspace +0 -7
- package/packages/adapters/docs/ARCHITECTURE.md +0 -160
- package/packages/adapters/docs/BUILD-PIPELINE.md +0 -171
- package/packages/adapters/docs/CLOUD.md +0 -239
- package/packages/adapters/docs/EXECUTOR.md +0 -174
- package/packages/adapters/docs/LOG-STREAMING.md +0 -175
- package/packages/adapters/docs/SYSTEM.md +0 -191
- package/packages/adapters/package.json +0 -32
- package/packages/adapters/src/index.ts +0 -144
- package/packages/adapters/src/infra/cloud.ts +0 -42
- package/packages/adapters/src/infra/index.ts +0 -9
- package/packages/adapters/src/infra/noop.ts +0 -27
- package/packages/adapters/src/infra/traefik.ts +0 -297
- package/packages/adapters/src/infra/types.ts +0 -36
- package/packages/adapters/src/platform.ts +0 -255
- package/packages/adapters/src/runtime/bare.ts +0 -567
- package/packages/adapters/src/runtime/build-pipeline.ts +0 -237
- package/packages/adapters/src/runtime/cloud.ts +0 -791
- package/packages/adapters/src/runtime/deploy-pipeline.ts +0 -146
- package/packages/adapters/src/runtime/docker.ts +0 -443
- package/packages/adapters/src/runtime/index.ts +0 -69
- package/packages/adapters/src/runtime/local-build.ts +0 -112
- package/packages/adapters/src/runtime/transfer.ts +0 -82
- package/packages/adapters/src/runtime/types.ts +0 -138
- package/packages/adapters/src/system/catalog.ts +0 -188
- package/packages/adapters/src/system/checks.ts +0 -228
- package/packages/adapters/src/system/components.ts +0 -45
- package/packages/adapters/src/system/debug.ts +0 -18
- package/packages/adapters/src/system/environment.ts +0 -168
- package/packages/adapters/src/system/errors.ts +0 -34
- package/packages/adapters/src/system/executor.ts +0 -600
- package/packages/adapters/src/system/index.ts +0 -58
- package/packages/adapters/src/system/installer.ts +0 -310
- package/packages/adapters/src/system/setup.ts +0 -442
- package/packages/adapters/src/system/state.ts +0 -96
- package/packages/adapters/src/system/types.ts +0 -116
- package/packages/adapters/src/toolchain/catalog.ts +0 -439
- package/packages/adapters/src/toolchain/checks.ts +0 -181
- package/packages/adapters/src/toolchain/index.ts +0 -38
- package/packages/adapters/src/toolchain/installer.ts +0 -189
- package/packages/adapters/src/toolchain/types.ts +0 -84
- package/packages/adapters/src/types.ts +0 -277
- package/packages/adapters/tsconfig.json +0 -11
- package/packages/core/package.json +0 -27
- package/packages/core/src/constants.ts +0 -71
- package/packages/core/src/errors.ts +0 -49
- package/packages/core/src/index.ts +0 -6
- package/packages/core/src/stacks.ts +0 -778
- package/packages/core/src/system.ts +0 -111
- package/packages/core/src/types.ts +0 -68
- package/packages/core/src/utils.ts +0 -43
- package/packages/core/tsconfig.json +0 -11
- package/packages/db/drizzle/0000_init.sql +0 -231
- package/packages/db/drizzle/0001_add_server_name.sql +0 -1
- package/packages/db/drizzle/meta/_journal.json +0 -20
- package/packages/db/drizzle.config.ts +0 -10
- package/packages/db/package.json +0 -44
- package/packages/db/src/client.ts +0 -119
- package/packages/db/src/index.ts +0 -60
- package/packages/db/src/repos/account.repo.ts +0 -92
- package/packages/db/src/repos/deployment.repo.ts +0 -168
- package/packages/db/src/repos/domain.repo.ts +0 -102
- package/packages/db/src/repos/git-installation.repo.ts +0 -95
- package/packages/db/src/repos/index.ts +0 -43
- package/packages/db/src/repos/instance-settings.repo.ts +0 -43
- package/packages/db/src/repos/project.repo.ts +0 -159
- package/packages/db/src/repos/session.repo.ts +0 -82
- package/packages/db/src/repos/settings.repo.ts +0 -51
- package/packages/db/src/repos/user.repo.ts +0 -94
- package/packages/db/src/schema/auth.ts +0 -56
- package/packages/db/src/schema/deployment.ts +0 -87
- package/packages/db/src/schema/domain.ts +0 -46
- package/packages/db/src/schema/github.ts +0 -24
- package/packages/db/src/schema/index.ts +0 -6
- package/packages/db/src/schema/project.ts +0 -117
- package/packages/db/src/schema/settings.ts +0 -103
- package/packages/db/tsconfig.json +0 -11
- package/packages/ui/package.json +0 -38
- package/packages/ui/src/components/badge.tsx +0 -29
- package/packages/ui/src/components/button.tsx +0 -44
- package/packages/ui/src/components/card.tsx +0 -26
- package/packages/ui/src/components/status-dot.tsx +0 -25
- package/packages/ui/src/globals.css +0 -18
- package/packages/ui/src/index.tsx +0 -8
- package/packages/ui/src/lib/cn.ts +0 -7
- package/packages/ui/tsconfig.json +0 -14
- package/pnpm-workspace.yaml +0 -3
- package/tsconfig.base.json +0 -18
- package/turbo.json +0 -36
package/README.md
DELETED
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
<h1 align="center">Openship</h1>
|
|
2
|
-
|
|
3
|
-
<p align="center">
|
|
4
|
-
Deploy anything. Own everything.<br>
|
|
5
|
-
Push your code — build, configure, and deploy from one place.<br>
|
|
6
|
-
Use our cloud or connect your own servers.
|
|
7
|
-
</p>
|
|
8
|
-
|
|
9
|
-
<p align="center">
|
|
10
|
-
Desktop-first. Open-source. Zero lock-in.
|
|
11
|
-
</p>
|
|
12
|
-
|
|
13
|
-
<p align="center">
|
|
14
|
-
<img src="docs/screenshots/screen.png" alt="Openship" width="800" />
|
|
15
|
-
</p>
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## What Openship Is
|
|
20
|
-
|
|
21
|
-
Openship is a **desktop-first deployment platform with built-in CI/CD and full infrastructure control**.
|
|
22
|
-
|
|
23
|
-
It removes the gap between writing code and running it in production.
|
|
24
|
-
|
|
25
|
-
No pipelines to maintain.
|
|
26
|
-
No YAML to manage.
|
|
27
|
-
No platform lock-in.
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## The Core Idea
|
|
32
|
-
|
|
33
|
-
Most platforms run everything on your server:
|
|
34
|
-
|
|
35
|
-
- CI/CD pipelines
|
|
36
|
-
- Build systems
|
|
37
|
-
- Dashboards
|
|
38
|
-
- Databases
|
|
39
|
-
- Your apps
|
|
40
|
-
|
|
41
|
-
→ Your production resources are shared with tooling.
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
### Openship
|
|
46
|
-
|
|
47
|
-
**Your machine**
|
|
48
|
-
- Desktop app (UI)
|
|
49
|
-
- Build system (local by default)
|
|
50
|
-
- Deployment control
|
|
51
|
-
|
|
52
|
-
**Your server**
|
|
53
|
-
- Production containers only
|
|
54
|
-
|
|
55
|
-
→ No resource contention
|
|
56
|
-
→ Predictable performance
|
|
57
|
-
→ Clean architecture
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Desktop-First Architecture
|
|
62
|
-
|
|
63
|
-
Openship is not a hosted dashboard.
|
|
64
|
-
|
|
65
|
-
It’s a **local control plane for your infrastructure**.
|
|
66
|
-
|
|
67
|
-
- Builds run locally by default
|
|
68
|
-
- Deployments are triggered instantly
|
|
69
|
-
- Works with any VPS or private network
|
|
70
|
-
- No dependency on a remote control layer
|
|
71
|
-
|
|
72
|
-
Your server stays minimal:
|
|
73
|
-
- No CI runners
|
|
74
|
-
- No dashboards
|
|
75
|
-
- No management services
|
|
76
|
-
|
|
77
|
-
Only your apps.
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## Built-in CI/CD (Without the Overhead)
|
|
82
|
-
|
|
83
|
-
CI/CD is fully integrated — without pipelines to configure.
|
|
84
|
-
|
|
85
|
-
- Deploy on every push
|
|
86
|
-
- Preview environments per branch
|
|
87
|
-
- Staging and production flows
|
|
88
|
-
- Rollbacks built-in
|
|
89
|
-
|
|
90
|
-
You can still use:
|
|
91
|
-
- CLI workflows
|
|
92
|
-
- External CI if needed
|
|
93
|
-
- Server-side builds (optional)
|
|
94
|
-
|
|
95
|
-
Default: simple, fast, local.
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Deploy Anywhere
|
|
100
|
-
|
|
101
|
-
- Openship Cloud (managed)
|
|
102
|
-
- Any VPS or bare metal
|
|
103
|
-
- Any provider, any region
|
|
104
|
-
- Multi-server deployments
|
|
105
|
-
|
|
106
|
-
Same app, same flow — everywhere.
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Full Backend Support
|
|
111
|
-
|
|
112
|
-
Run complete applications out of the box:
|
|
113
|
-
|
|
114
|
-
- Databases (Postgres, MySQL, MongoDB)
|
|
115
|
-
- Redis / caching
|
|
116
|
-
- Background workers
|
|
117
|
-
- WebSockets
|
|
118
|
-
- APIs
|
|
119
|
-
- Storage
|
|
120
|
-
|
|
121
|
-
Provision and manage everything from the app.
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## Any Stack
|
|
126
|
-
|
|
127
|
-
If it builds, it ships.
|
|
128
|
-
|
|
129
|
-
- Node.js, Bun, Deno
|
|
130
|
-
- Python, Go, Rust
|
|
131
|
-
- PHP, Ruby, Java, .NET
|
|
132
|
-
- Docker (full control)
|
|
133
|
-
- Monorepos supported
|
|
134
|
-
|
|
135
|
-
No lock-in to a runtime.
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## Domains & SSL
|
|
140
|
-
|
|
141
|
-
- Automatic SSL (Let's Encrypt)
|
|
142
|
-
- Wildcard domains
|
|
143
|
-
- Unlimited domains
|
|
144
|
-
- Auto-renewal
|
|
145
|
-
|
|
146
|
-
No manual setup.
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## The Desktop App
|
|
151
|
-
|
|
152
|
-
Everything in one place:
|
|
153
|
-
|
|
154
|
-
- One-click deploys
|
|
155
|
-
- Live build logs
|
|
156
|
-
- Real-time metrics
|
|
157
|
-
- Domain & DNS management
|
|
158
|
-
- Database control
|
|
159
|
-
- Backups & restore
|
|
160
|
-
- Scaling controls
|
|
161
|
-
|
|
162
|
-
Replaces:
|
|
163
|
-
- CI dashboards
|
|
164
|
-
- SSH workflows
|
|
165
|
-
- Manual Docker setup
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## Developer Interfaces
|
|
170
|
-
|
|
171
|
-
### CLI
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
openship deploy
|
|
175
|
-
openship logs --follow
|
|
176
|
-
openship rollback
|
|
177
|
-
openship domains
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
### REST API
|
|
183
|
-
|
|
184
|
-
Automate everything:
|
|
185
|
-
|
|
186
|
-
- Deployments
|
|
187
|
-
- Projects
|
|
188
|
-
- Domains
|
|
189
|
-
- Logs
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
### MCP (AI / Agent Control)
|
|
194
|
-
|
|
195
|
-
Expose deployment actions to external agents when needed.
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
## Backups
|
|
200
|
-
|
|
201
|
-
- Scheduled backups
|
|
202
|
-
- Databases + volumes
|
|
203
|
-
- One-click restore
|
|
204
|
-
- Export anytime
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
## Portability
|
|
209
|
-
|
|
210
|
-
Move anywhere:
|
|
211
|
-
|
|
212
|
-
- Cloud ↔ self-host
|
|
213
|
-
- VPS → VPS
|
|
214
|
-
- Full export/import
|
|
215
|
-
|
|
216
|
-
No proprietary formats:
|
|
217
|
-
- Standard Docker containers
|
|
218
|
-
- Encrypted transfer via SSH
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## Built-in Mail Server
|
|
223
|
-
|
|
224
|
-
- Unlimited domains
|
|
225
|
-
- Standard email auth (DKIM, SPF, DMARC)
|
|
226
|
-
- No external providers required
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
|
|
230
|
-
## Global CDN
|
|
231
|
-
|
|
232
|
-
- Edge caching
|
|
233
|
-
- Compression (HTTP/3, Brotli)
|
|
234
|
-
- Instant cache purge
|
|
235
|
-
|
|
236
|
-
Works with any deployment.
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
## Scaling
|
|
241
|
-
|
|
242
|
-
### Cloud
|
|
243
|
-
- Auto-scaling
|
|
244
|
-
- Load balancing
|
|
245
|
-
- Zero config
|
|
246
|
-
|
|
247
|
-
### Self-hosted
|
|
248
|
-
- Upgrade servers anytime
|
|
249
|
-
- Move workloads without redeploy
|
|
250
|
-
- Multi-node ready
|
|
251
|
-
|
|
252
|
-
---
|
|
253
|
-
|
|
254
|
-
## Architecture Comparison
|
|
255
|
-
|
|
256
|
-
### Traditional Tools
|
|
257
|
-
|
|
258
|
-
Server runs:
|
|
259
|
-
- CI/CD
|
|
260
|
-
- Build system
|
|
261
|
-
- Dashboard
|
|
262
|
-
- Reverse proxy
|
|
263
|
-
- Apps
|
|
264
|
-
|
|
265
|
-
→ Resource contention
|
|
266
|
-
→ Complex setup
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
### Openship
|
|
271
|
-
|
|
272
|
-
**Local machine**
|
|
273
|
-
- Builds
|
|
274
|
-
- Control plane
|
|
275
|
-
|
|
276
|
-
**Server**
|
|
277
|
-
- Production containers only
|
|
278
|
-
|
|
279
|
-
→ Maximum efficiency
|
|
280
|
-
→ Minimal overhead
|
|
281
|
-
|
|
282
|
-
---
|
|
283
|
-
|
|
284
|
-
## Why Openship
|
|
285
|
-
|
|
286
|
-
- Desktop-first deployment loop
|
|
287
|
-
- Built-in CI/CD without pipeline overhead
|
|
288
|
-
- No YAML or infra complexity
|
|
289
|
-
- No server-side tooling overhead
|
|
290
|
-
- Works on any Linux server
|
|
291
|
-
- Fully open-source (AGPL-3)
|
|
292
|
-
- No vendor lock-in
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
## Example Flow
|
|
297
|
-
|
|
298
|
-
1. Connect your repo
|
|
299
|
-
2. Connect a server (or use cloud)
|
|
300
|
-
3. Click deploy
|
|
301
|
-
|
|
302
|
-
Under the hood:
|
|
303
|
-
- Build runs locally
|
|
304
|
-
- Production container is shipped
|
|
305
|
-
- App goes live
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
|
-
## Philosophy
|
|
310
|
-
|
|
311
|
-
Infrastructure should be:
|
|
312
|
-
|
|
313
|
-
- Local-first
|
|
314
|
-
- Transparent
|
|
315
|
-
- Portable
|
|
316
|
-
- Fully owned
|
|
317
|
-
|
|
318
|
-
Not hidden behind platforms.
|
|
319
|
-
Not tied to pricing models.
|
|
320
|
-
Not dependent on proprietary runtimes.
|
|
321
|
-
|
|
322
|
-
---
|
|
323
|
-
|
|
324
|
-
## Open Source
|
|
325
|
-
|
|
326
|
-
- AGPL-3 licensed
|
|
327
|
-
- Fully self-hostable
|
|
328
|
-
- No usage limits
|
|
329
|
-
- Community-driven
|
|
330
|
-
|
|
331
|
-
---
|
|
332
|
-
|
|
333
|
-
## Status
|
|
334
|
-
|
|
335
|
-
Production-ready core.
|
|
336
|
-
|
|
337
|
-
Planned:
|
|
338
|
-
- Multi-node clusters
|
|
339
|
-
- Load balancing UI
|
|
340
|
-
- Private networking
|
|
341
|
-
- Advanced monitoring
|
|
342
|
-
- Visual CI/CD pipelines
|
|
343
|
-
|
|
344
|
-
---
|
|
345
|
-
|
|
346
|
-
## Get Started
|
|
347
|
-
|
|
348
|
-
- Download the app
|
|
349
|
-
- Connect your repo
|
|
350
|
-
- Deploy in minutes
|
|
351
|
-
|
|
352
|
-
No lock-in.
|
|
353
|
-
No complexity.
|
|
354
|
-
Full control.
|
|
355
|
-
|
|
356
|
-
---
|
|
357
|
-
|
|
358
|
-
## License
|
|
359
|
-
|
|
360
|
-
AGPL-3
|
package/apps/api/.env.example
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# Openship API — Environment Variables
|
|
2
|
-
# Copy this file to .env and fill in the values.
|
|
3
|
-
|
|
4
|
-
NODE_ENV=development
|
|
5
|
-
PORT=4000
|
|
6
|
-
|
|
7
|
-
# ---------- Mode ----------
|
|
8
|
-
# Set to "true" to enable cloud billing, metering, multi-tenant features.
|
|
9
|
-
# Default: false (self-hosted single-tenant mode).
|
|
10
|
-
CLOUD_MODE=false
|
|
11
|
-
|
|
12
|
-
# ---------- Database ----------
|
|
13
|
-
DATABASE_URL=file:./dev.db
|
|
14
|
-
|
|
15
|
-
# ---------- Auth ----------
|
|
16
|
-
JWT_SECRET=change-me-in-production
|
|
17
|
-
JWT_EXPIRES_IN=15m
|
|
18
|
-
JWT_REFRESH_EXPIRES_IN=7d
|
|
19
|
-
|
|
20
|
-
# ---------- Redis ----------
|
|
21
|
-
REDIS_URL=redis://localhost:6379
|
|
22
|
-
|
|
23
|
-
# ---------- Stripe (Cloud mode only) ----------
|
|
24
|
-
# STRIPE_SECRET_KEY=sk_test_...
|
|
25
|
-
# STRIPE_WEBHOOK_SECRET=whsec_...
|
|
26
|
-
|
|
27
|
-
# ---------- GitHub App (for Git push webhooks) ----------
|
|
28
|
-
# GITHUB_APP_ID=
|
|
29
|
-
# GITHUB_PRIVATE_KEY=
|
|
30
|
-
# GITHUB_WEBHOOK_SECRET=
|
package/apps/api/Dockerfile
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# ─── Build stage ────────────────────────────────────────
|
|
2
|
-
FROM oven/bun:1 AS builder
|
|
3
|
-
WORKDIR /app
|
|
4
|
-
|
|
5
|
-
COPY package.json bun.lock pnpm-workspace.yaml ./
|
|
6
|
-
COPY packages/ ./packages/
|
|
7
|
-
COPY apps/api/ ./apps/api/
|
|
8
|
-
|
|
9
|
-
RUN bun install --frozen-lockfile
|
|
10
|
-
RUN cd apps/api && bun run build
|
|
11
|
-
|
|
12
|
-
# ─── Production stage ──────────────────────────────────
|
|
13
|
-
FROM oven/bun:1-slim AS runner
|
|
14
|
-
WORKDIR /app
|
|
15
|
-
|
|
16
|
-
COPY --from=builder /app/apps/api/dist ./dist
|
|
17
|
-
COPY --from=builder /app/apps/api/package.json ./
|
|
18
|
-
COPY --from=builder /app/node_modules ./node_modules
|
|
19
|
-
|
|
20
|
-
ENV NODE_ENV=production
|
|
21
|
-
EXPOSE 4000
|
|
22
|
-
CMD ["bun", "run", "dist/index.js"]
|
package/apps/api/package.json
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@repo/api",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"private": true,
|
|
5
|
-
"type": "module",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "node --env-file=.env --import tsx --watch src/index.ts",
|
|
8
|
-
"dev:saas": "PGLITE_DATA_DIR=$HOME/.openship/data-saas node --env-file=.env.saas --import tsx --watch src/index.ts",
|
|
9
|
-
"build": "tsup src/index.ts --format esm --dts",
|
|
10
|
-
"start": "node dist/index.js",
|
|
11
|
-
"lint": "tsc --noEmit",
|
|
12
|
-
"test": "vitest run",
|
|
13
|
-
"clean": "rm -rf dist .turbo node_modules"
|
|
14
|
-
},
|
|
15
|
-
"dependencies": {
|
|
16
|
-
"@better-auth/drizzle-adapter": "^1.5.4",
|
|
17
|
-
"@hono/node-server": "^1.19.11",
|
|
18
|
-
"@hono/typebox-validator": "^0.3.0",
|
|
19
|
-
"@repo/adapters": "workspace:*",
|
|
20
|
-
"@repo/core": "workspace:*",
|
|
21
|
-
"@repo/db": "workspace:*",
|
|
22
|
-
"@sinclair/typebox": "^0.34.48",
|
|
23
|
-
"better-auth": "^1.5.4",
|
|
24
|
-
"bullmq": "^5.70.4",
|
|
25
|
-
"hono": "^4.12.5",
|
|
26
|
-
"ioredis": "^5.10.0",
|
|
27
|
-
"nodemailer": "^8.0.1",
|
|
28
|
-
"pino": "^10.3.1",
|
|
29
|
-
"stripe": "^20.4.0",
|
|
30
|
-
"yaml": "^2.8.2",
|
|
31
|
-
"zod": "^4.3.6"
|
|
32
|
-
},
|
|
33
|
-
"devDependencies": {
|
|
34
|
-
"@types/node": "^22.13.0",
|
|
35
|
-
"@types/nodemailer": "^7.0.11",
|
|
36
|
-
"tsup": "^8.5.1",
|
|
37
|
-
"tsx": "^4.21.0",
|
|
38
|
-
"typescript": "^5.9.3",
|
|
39
|
-
"vitest": "^4.0.18"
|
|
40
|
-
}
|
|
41
|
-
}
|
package/apps/api/src/app.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { Hono } from "hono";
|
|
2
|
-
import { cors } from "hono/cors";
|
|
3
|
-
import { logger } from "hono/logger";
|
|
4
|
-
import { env, trustedOrigins } from "./config/env";
|
|
5
|
-
import { errorHandler } from "./middleware/error-handler";
|
|
6
|
-
import { rateLimiter } from "./middleware/rate-limiter";
|
|
7
|
-
import { bootstrapPlatform } from "./lib/controller-helpers";
|
|
8
|
-
|
|
9
|
-
import { authRoutes } from "./modules/auth/auth.routes";
|
|
10
|
-
import { projectRoutes } from "./modules/projects/project.routes";
|
|
11
|
-
import { deploymentRoutes } from "./modules/deployments/deployment.routes";
|
|
12
|
-
import { domainRoutes } from "./modules/domains/domain.routes";
|
|
13
|
-
import { analyticsRoutes } from "./modules/analytics/analytics.routes";
|
|
14
|
-
import { billingRoutes } from "./modules/billing/billing.routes";
|
|
15
|
-
import { webhookRoutes } from "./modules/webhooks/webhook.routes";
|
|
16
|
-
import { healthRoutes } from "./modules/health/health.routes";
|
|
17
|
-
import { githubRoutes } from "./modules/github";
|
|
18
|
-
import { settingsRoutes } from "./modules/settings/settings.routes";
|
|
19
|
-
|
|
20
|
-
/* ---------- Initialize platform (runtime + infra + system) ---------- */
|
|
21
|
-
await bootstrapPlatform();
|
|
22
|
-
|
|
23
|
-
export const app = new Hono();
|
|
24
|
-
|
|
25
|
-
/* ---------- Global middleware ---------- */
|
|
26
|
-
app.use(
|
|
27
|
-
"*",
|
|
28
|
-
cors({
|
|
29
|
-
origin: trustedOrigins,
|
|
30
|
-
credentials: true,
|
|
31
|
-
}),
|
|
32
|
-
);
|
|
33
|
-
app.use("*", errorHandler);
|
|
34
|
-
app.use("*", logger());
|
|
35
|
-
|
|
36
|
-
app.use("/api/auth/*", rateLimiter);
|
|
37
|
-
|
|
38
|
-
/* ---------- Shared routes (self-hosted + cloud + desktop) ---------- */
|
|
39
|
-
app.route("/api/health", healthRoutes);
|
|
40
|
-
app.route("/api/auth", authRoutes);
|
|
41
|
-
app.route("/api/projects", projectRoutes);
|
|
42
|
-
app.route("/api/deployments", deploymentRoutes);
|
|
43
|
-
app.route("/api/domains", domainRoutes);
|
|
44
|
-
app.route("/api/webhooks", webhookRoutes);
|
|
45
|
-
app.route("/api/github", githubRoutes);
|
|
46
|
-
app.route("/api/analytics", analyticsRoutes);
|
|
47
|
-
app.route("/api/settings", settingsRoutes);
|
|
48
|
-
|
|
49
|
-
/* ---------- Cloud-only routes (gated by CLOUD_MODE) ---------- */
|
|
50
|
-
if (env.CLOUD_MODE) {
|
|
51
|
-
const { cloudSaasRoutes } = await import("./modules/cloud/cloud.routes");
|
|
52
|
-
app.route("/api/cloud", cloudSaasRoutes);
|
|
53
|
-
app.route("/api/billing", billingRoutes);
|
|
54
|
-
} else {
|
|
55
|
-
/**
|
|
56
|
-
* System routes — filesystem browse, instance setup, user provisioning.
|
|
57
|
-
*
|
|
58
|
-
* Dynamic import: in cloud mode these modules are NEVER loaded into the
|
|
59
|
-
* process. The filesystem controller (node:fs), setup controller
|
|
60
|
-
* (admin user creation), and all their dependencies don't exist in
|
|
61
|
-
* the cloud runtime — not just "protected", but fully absent.
|
|
62
|
-
*/
|
|
63
|
-
const { systemRoutes } = await import("./modules/system");
|
|
64
|
-
app.route("/api/system", systemRoutes);
|
|
65
|
-
|
|
66
|
-
/** Cloud account management — connect/disconnect to Openship Cloud */
|
|
67
|
-
const { cloudLocalRoutes } = await import("./modules/cloud/cloud.routes");
|
|
68
|
-
app.route("/api/cloud", cloudLocalRoutes);
|
|
69
|
-
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* API configuration — loaded from environment variables.
|
|
5
|
-
*
|
|
6
|
-
* CLOUD_MODE=true enables billing, metering, and multi-tenant features.
|
|
7
|
-
* CLOUD_MODE=false (default) runs as a self-hosted single-tenant instance.
|
|
8
|
-
*/
|
|
9
|
-
const envSchema = z.object({
|
|
10
|
-
NODE_ENV: z.enum(["development", "production", "test"]).default("development"),
|
|
11
|
-
PORT: z.coerce.number().default(4000),
|
|
12
|
-
|
|
13
|
-
/* ---------- Mode ---------- */
|
|
14
|
-
CLOUD_MODE: z
|
|
15
|
-
.enum(["true", "false", "1", "0", ""])
|
|
16
|
-
.default("false")
|
|
17
|
-
.transform((v) => v === "true" || v === "1"),
|
|
18
|
-
/**
|
|
19
|
-
* Deployment mode — determines the runtime + infrastructure combination:
|
|
20
|
-
* - "docker" (default) → Docker runtime + Traefik routing/SSL (self-hosted)
|
|
21
|
-
* - "bare" → Process runtime + Traefik routing/SSL (self-hosted)
|
|
22
|
-
* - "cloud" → Oblien cloud API for everything (auto-set when CLOUD_MODE=true)
|
|
23
|
-
* - "desktop" → Bare runtime, no routing/SSL (desktop app)
|
|
24
|
-
*/
|
|
25
|
-
DEPLOY_MODE: z.enum(["docker", "bare", "cloud", "desktop"]).default("docker"),
|
|
26
|
-
|
|
27
|
-
/* ---------- Database ---------- */
|
|
28
|
-
DATABASE_URL: z.string().default(""),
|
|
29
|
-
|
|
30
|
-
/* ---------- Auth (Better Auth) ---------- */
|
|
31
|
-
BETTER_AUTH_SECRET: z.string().default("change-me-in-production"),
|
|
32
|
-
BETTER_AUTH_URL: z.string().default("http://localhost:4000"),
|
|
33
|
-
TRUSTED_ORIGINS: z.string().optional(),
|
|
34
|
-
|
|
35
|
-
/* ---------- OAuth Providers ---------- */
|
|
36
|
-
GITHUB_CLIENT_ID: z.string().optional(),
|
|
37
|
-
GITHUB_CLIENT_SECRET: z.string().optional(),
|
|
38
|
-
GOOGLE_CLIENT_ID: z.string().optional(),
|
|
39
|
-
GOOGLE_CLIENT_SECRET: z.string().optional(),
|
|
40
|
-
|
|
41
|
-
/* ---------- GitHub Auth Strategy ---------- */
|
|
42
|
-
/**
|
|
43
|
-
* Controls how the API authenticates with GitHub:
|
|
44
|
-
* - "auto" (default) → inferred from DEPLOY_MODE / CLOUD_MODE
|
|
45
|
-
* - "app" → GitHub App installation tokens (cloud)
|
|
46
|
-
* - "oauth" → Better Auth OAuth flow only (self-hosted with OAuth)
|
|
47
|
-
* - "cli" → `gh auth login` token from the machine (local/desktop)
|
|
48
|
-
* - "token" → static GITHUB_TOKEN env var (CI, scripts)
|
|
49
|
-
*/
|
|
50
|
-
GITHUB_AUTH_MODE: z.enum(["auto", "app", "oauth", "cli", "token"]).default("auto"),
|
|
51
|
-
/** Static GitHub personal access token — used when GITHUB_AUTH_MODE="token" */
|
|
52
|
-
GITHUB_TOKEN: z.string().optional(),
|
|
53
|
-
|
|
54
|
-
/* ---------- Redis ---------- */
|
|
55
|
-
REDIS_URL: z.string().default("redis://localhost:6379"),
|
|
56
|
-
|
|
57
|
-
/* ---------- Stripe (Cloud only) ---------- */
|
|
58
|
-
STRIPE_SECRET_KEY: z.string().optional(),
|
|
59
|
-
STRIPE_WEBHOOK_SECRET: z.string().optional(),
|
|
60
|
-
|
|
61
|
-
/* ---------- Git Webhooks ---------- */
|
|
62
|
-
GITHUB_APP_ID: z.string().optional(),
|
|
63
|
-
GITHUB_APP_SLUG: z.string().optional(),
|
|
64
|
-
GITHUB_PRIVATE_KEY: z.string().optional(),
|
|
65
|
-
GITHUB_WEBHOOK_SECRET: z.string().optional(),
|
|
66
|
-
|
|
67
|
-
/* ---------- Email (SMTP) ---------- */
|
|
68
|
-
SMTP_HOST: z.string().optional(),
|
|
69
|
-
SMTP_PORT: z.coerce.number().optional(),
|
|
70
|
-
SMTP_USER: z.string().optional(),
|
|
71
|
-
SMTP_PASS: z.string().optional(),
|
|
72
|
-
SMTP_FROM: z.string().default("Openship <noreply@openship.dev>"),
|
|
73
|
-
|
|
74
|
-
/* ---------- Dashboard ---------- */
|
|
75
|
-
DASHBOARD_URL: z.string().default("http://localhost:3001"),
|
|
76
|
-
|
|
77
|
-
/* ---------- Network (self-hosted) ---------- */
|
|
78
|
-
/** Public IP of the server — used for A record instructions in self-hosted mode. */
|
|
79
|
-
SERVER_IP: z.string().optional(),
|
|
80
|
-
|
|
81
|
-
/* ---------- Oblien Cloud ---------- */
|
|
82
|
-
OBLIEN_CLIENT_ID: z.string().optional(),
|
|
83
|
-
OBLIEN_CLIENT_SECRET: z.string().optional(),
|
|
84
|
-
|
|
85
|
-
/** Openship Cloud API URL — used by local instances to fetch namespace tokens */
|
|
86
|
-
OPENSHIP_CLOUD_URL: z.string().default("https://api.openship.io"),
|
|
87
|
-
|
|
88
|
-
/** Openship Cloud dashboard URL — used for external auth redirect (desktop + cloud connect) */
|
|
89
|
-
OPENSHIP_CLOUD_DASHBOARD_URL: z.string().default("https://app.openship.io"),
|
|
90
|
-
|
|
91
|
-
/* ---------- Screenshots (optional) ---------- */
|
|
92
|
-
SCREENSHOT_SERVICE_URL: z.string().optional(),
|
|
93
|
-
CDN_UPLOAD_URL: z.string().optional(),
|
|
94
|
-
|
|
95
|
-
/* ---------- Internal (Electron ↔ API) ---------- */
|
|
96
|
-
/** Shared secret for Electron → API calls (set by desktop app on startup) */
|
|
97
|
-
INTERNAL_TOKEN: z.string().optional(),
|
|
98
|
-
|
|
99
|
-
/** Enables verbose timing logs for SSH/system checks and environment detection */
|
|
100
|
-
SYSTEM_DEBUG_LOGS: z
|
|
101
|
-
.enum(["true", "false", "1", "0", ""])
|
|
102
|
-
.default("")
|
|
103
|
-
.transform((v) => v === "true" || v === "1"),
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
export type Env = z.infer<typeof envSchema>;
|
|
107
|
-
|
|
108
|
-
export const env = envSchema.parse(process.env);
|
|
109
|
-
|
|
110
|
-
/** Parsed trusted origins — single source of truth for CORS + Better Auth */
|
|
111
|
-
export const trustedOrigins = env.TRUSTED_ORIGINS
|
|
112
|
-
? env.TRUSTED_ORIGINS.split(",")
|
|
113
|
-
: ["http://localhost:3000", "http://localhost:3001"];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { env } from "./env";
|
package/apps/api/src/index.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cached auth-mode reader for desktop mode.
|
|
3
|
-
*
|
|
4
|
-
* Auth mode is written once during onboarding and rarely changes.
|
|
5
|
-
* Caching avoids a DB hit on every request through authMiddleware.
|
|
6
|
-
*
|
|
7
|
-
* The cache is cleared by setup.controller after any write so that
|
|
8
|
-
* re-onboarding (dev reset) picks up the new value immediately.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { env } from "../config/env";
|
|
12
|
-
|
|
13
|
-
let cached: string | null = null;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Returns the current auth mode for this instance.
|
|
17
|
-
*
|
|
18
|
-
* "none" → zero-auth desktop (auto-provisioned local user)
|
|
19
|
-
* "cloud" → cloud-authenticated desktop (Openship Cloud session)
|
|
20
|
-
* "local" → standard Better Auth (self-hosted VPS / SaaS)
|
|
21
|
-
*/
|
|
22
|
-
export async function getAuthMode(): Promise<"none" | "cloud" | "local"> {
|
|
23
|
-
// Non-desktop always uses local Better Auth
|
|
24
|
-
if (env.DEPLOY_MODE !== "desktop") return "local";
|
|
25
|
-
|
|
26
|
-
if (cached !== null) return cached as "none" | "cloud" | "local";
|
|
27
|
-
|
|
28
|
-
try {
|
|
29
|
-
const { repos } = await import("@repo/db");
|
|
30
|
-
const settings = await repos.instanceSettings.get();
|
|
31
|
-
cached = settings?.authMode ?? "none";
|
|
32
|
-
} catch {
|
|
33
|
-
cached = "none";
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return cached as "none" | "cloud" | "local";
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/** Clear the cached value — called after setup.controller writes. */
|
|
40
|
-
export function clearAuthModeCache() {
|
|
41
|
-
cached = null;
|
|
42
|
-
}
|