vibecarbon 0.1.0

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 (495) hide show
  1. package/LICENSE +663 -0
  2. package/README.md +188 -0
  3. package/carbon/.claude/hooks/task-completed-gate.sh +19 -0
  4. package/carbon/.claude/hooks/teammate-idle-gate.sh +29 -0
  5. package/carbon/.claude/settings.json +29 -0
  6. package/carbon/.cursor/rules/vibecarbon.mdc +6 -0
  7. package/carbon/.dockerignore +57 -0
  8. package/carbon/.env.example +219 -0
  9. package/carbon/.github/copilot-instructions.md +3 -0
  10. package/carbon/.github/workflows/deploy.yml +346 -0
  11. package/carbon/.github/workflows/vibecarbon-build.yml +81 -0
  12. package/carbon/.windsurfrules +74 -0
  13. package/carbon/AGENTS.md +422 -0
  14. package/carbon/CLAUDE.md +3 -0
  15. package/carbon/DEVELOPMENT.md +187 -0
  16. package/carbon/Dockerfile +98 -0
  17. package/carbon/LICENSE +21 -0
  18. package/carbon/PRODUCTION.md +364 -0
  19. package/carbon/README.md +193 -0
  20. package/carbon/TESTING.md +138 -0
  21. package/carbon/backup/Dockerfile +75 -0
  22. package/carbon/backup/backup.sh +95 -0
  23. package/carbon/backup/compose-backup.sh +140 -0
  24. package/carbon/biome.json +83 -0
  25. package/carbon/cloud-init/docker-ce-setup.yaml +55 -0
  26. package/carbon/cloud-init/k3s/master-init.sh +215 -0
  27. package/carbon/cloud-init/k3s/supabase-init.sh +167 -0
  28. package/carbon/cloud-init/k3s/worker-init.sh +147 -0
  29. package/carbon/components.json +24 -0
  30. package/carbon/content/blog/authentication-guide.mdx +34 -0
  31. package/carbon/content/blog/getting-started.mdx +41 -0
  32. package/carbon/content/changelog/v0-1-0.mdx +40 -0
  33. package/carbon/content/docs/analytics.mdx +90 -0
  34. package/carbon/content/docs/authentication.mdx +231 -0
  35. package/carbon/content/docs/background-jobs.mdx +116 -0
  36. package/carbon/content/docs/cli.mdx +630 -0
  37. package/carbon/content/docs/database.mdx +236 -0
  38. package/carbon/content/docs/deployment.mdx +227 -0
  39. package/carbon/content/docs/development.mdx +238 -0
  40. package/carbon/content/docs/environments.mdx +84 -0
  41. package/carbon/content/docs/getting-started.mdx +112 -0
  42. package/carbon/content/docs/legal/privacy-policy.mdx +89 -0
  43. package/carbon/content/docs/legal/terms-of-service.mdx +99 -0
  44. package/carbon/content/docs/optional-services.mdx +160 -0
  45. package/carbon/db/Dockerfile +23 -0
  46. package/carbon/docker-compose.dev-init.yml +5 -0
  47. package/carbon/docker-compose.metabase.override.yml +14 -0
  48. package/carbon/docker-compose.metabase.prod.yml +28 -0
  49. package/carbon/docker-compose.metabase.yml +84 -0
  50. package/carbon/docker-compose.n8n.override.yml +14 -0
  51. package/carbon/docker-compose.n8n.prod.yml +31 -0
  52. package/carbon/docker-compose.n8n.yml +97 -0
  53. package/carbon/docker-compose.observability.override.yml +18 -0
  54. package/carbon/docker-compose.observability.prod.yml +28 -0
  55. package/carbon/docker-compose.observability.yml +125 -0
  56. package/carbon/docker-compose.override.yml +28 -0
  57. package/carbon/docker-compose.prod.yml +294 -0
  58. package/carbon/docker-compose.yml +508 -0
  59. package/carbon/docker-entrypoint.sh +12 -0
  60. package/carbon/ha/activate-standby.sh +52 -0
  61. package/carbon/ha/primary-init.sql +36 -0
  62. package/carbon/ha/standby-init.sh +74 -0
  63. package/carbon/k8s/LICENSE +99 -0
  64. package/carbon/k8s/README.md +272 -0
  65. package/carbon/k8s/base/app/deployment.yaml +130 -0
  66. package/carbon/k8s/base/app/hpa.yaml +44 -0
  67. package/carbon/k8s/base/app/kustomization.yaml +10 -0
  68. package/carbon/k8s/base/app/network-policy.yaml +124 -0
  69. package/carbon/k8s/base/app/pdb.yaml +14 -0
  70. package/carbon/k8s/base/app/rbac.yaml +36 -0
  71. package/carbon/k8s/base/app/service.yaml +16 -0
  72. package/carbon/k8s/base/backup/cronjob.yaml +120 -0
  73. package/carbon/k8s/base/backup/kustomization.yaml +7 -0
  74. package/carbon/k8s/base/backup/network-policy.yaml +31 -0
  75. package/carbon/k8s/base/backup/rbac.yaml +7 -0
  76. package/carbon/k8s/base/cluster-autoscaler/deployment.yaml +103 -0
  77. package/carbon/k8s/base/cluster-autoscaler/kustomization.yaml +17 -0
  78. package/carbon/k8s/base/cluster-autoscaler/rbac.yaml +109 -0
  79. package/carbon/k8s/base/config/configmap.yaml +48 -0
  80. package/carbon/k8s/base/config/kustomization.yaml +8 -0
  81. package/carbon/k8s/base/hetzner-ccm/kustomization.yaml +9 -0
  82. package/carbon/k8s/base/hetzner-csi/kustomization.yaml +9 -0
  83. package/carbon/k8s/base/kustomization.yaml +43 -0
  84. package/carbon/k8s/base/namespace.yaml +7 -0
  85. package/carbon/k8s/base/network-policies.yaml +95 -0
  86. package/carbon/k8s/base/registry/kustomization.yaml +5 -0
  87. package/carbon/k8s/base/registry/local-registry.yaml +193 -0
  88. package/carbon/k8s/base/traefik/certificate.yaml +21 -0
  89. package/carbon/k8s/base/traefik/configmap.yaml +13 -0
  90. package/carbon/k8s/base/traefik/deployment.yaml +165 -0
  91. package/carbon/k8s/base/traefik/ingressroute.yaml +141 -0
  92. package/carbon/k8s/base/traefik/kustomization.yaml +11 -0
  93. package/carbon/k8s/base/traefik/middleware.yaml +109 -0
  94. package/carbon/k8s/base/traefik/network-policy.yaml +92 -0
  95. package/carbon/k8s/base/traefik/service.yaml +38 -0
  96. package/carbon/k8s/flux/README.md +49 -0
  97. package/carbon/k8s/flux/clusters/primary/vibecarbon.yaml +128 -0
  98. package/carbon/k8s/flux/clusters/standby/vibecarbon.yaml +83 -0
  99. package/carbon/k8s/gitops/cert-manager-webhook-hetzner/helm-release.yaml +38 -0
  100. package/carbon/k8s/gitops/cert-manager-webhook-hetzner/helm-repository.yaml +16 -0
  101. package/carbon/k8s/gitops/cert-manager-webhook-hetzner/kustomization.yaml +10 -0
  102. package/carbon/k8s/gitops/supabase/helm-release.yaml +66 -0
  103. package/carbon/k8s/gitops/supabase/helm-repository.yaml +18 -0
  104. package/carbon/k8s/gitops/supabase/kustomization.yaml +33 -0
  105. package/carbon/k8s/infra/cert-manager-resources/cluster-issuers-cloudflare.yaml +51 -0
  106. package/carbon/k8s/infra/cert-manager-resources/cluster-issuers-hetzner.yaml +59 -0
  107. package/carbon/k8s/infra/cert-manager-resources/cluster-issuers-manual.yaml +43 -0
  108. package/carbon/k8s/infra/cert-manager-resources/kustomization.yaml +15 -0
  109. package/carbon/k8s/infra/kustomization.yaml +21 -0
  110. package/carbon/k8s/infra/traefik-crds/kustomization.yaml +10 -0
  111. package/carbon/k8s/overlays/local/configmap.yaml +23 -0
  112. package/carbon/k8s/overlays/local/ingressroute-studio.yaml +104 -0
  113. package/carbon/k8s/overlays/local/kustomization.yaml +215 -0
  114. package/carbon/k8s/overlays/local/namespace.yaml +8 -0
  115. package/carbon/k8s/overlays/local/secrets.yaml +32 -0
  116. package/carbon/k8s/overlays/production/kustomization.yaml +34 -0
  117. package/carbon/k8s/test-local.sh +318 -0
  118. package/carbon/k8s/values/supabase.values.yaml +133 -0
  119. package/carbon/package.json +154 -0
  120. package/carbon/runtime.Dockerfile +17 -0
  121. package/carbon/scripts/_dev-jwt.mjs +45 -0
  122. package/carbon/scripts/check-rls.ts +53 -0
  123. package/carbon/scripts/dev-init.js +191 -0
  124. package/carbon/scripts/dev.js +191 -0
  125. package/carbon/scripts/docker-down.js +63 -0
  126. package/carbon/scripts/docker-logs.js +59 -0
  127. package/carbon/scripts/docker-up.js +222 -0
  128. package/carbon/scripts/generate-dev-configs.sh +131 -0
  129. package/carbon/scripts/generate-rss.ts +116 -0
  130. package/carbon/scripts/generate-sitemap.ts +102 -0
  131. package/carbon/scripts/k8s-apply.js +71 -0
  132. package/carbon/scripts/k8s-delete.js +75 -0
  133. package/carbon/scripts/lib/manifest.js +176 -0
  134. package/carbon/scripts/secret-scan.mjs +278 -0
  135. package/carbon/scripts/validate-dev-configs.sh +101 -0
  136. package/carbon/src/client/App.tsx +202 -0
  137. package/carbon/src/client/assets/hyperformant-dark.svg +29 -0
  138. package/carbon/src/client/assets/hyperformant-light.svg +29 -0
  139. package/carbon/src/client/assets/logos/aider.svg +1 -0
  140. package/carbon/src/client/assets/logos/antigravity.svg +1 -0
  141. package/carbon/src/client/assets/logos/bolt.svg +1 -0
  142. package/carbon/src/client/assets/logos/claude-code.svg +1 -0
  143. package/carbon/src/client/assets/logos/copilot.svg +1 -0
  144. package/carbon/src/client/assets/logos/cursor.svg +1 -0
  145. package/carbon/src/client/assets/logos/gemini-cli.svg +1 -0
  146. package/carbon/src/client/assets/logos/lovable.svg +1 -0
  147. package/carbon/src/client/assets/logos/openai-codex.svg +1 -0
  148. package/carbon/src/client/assets/logos/v0.svg +1 -0
  149. package/carbon/src/client/assets/logos/windsurf.svg +1 -0
  150. package/carbon/src/client/assets/vibecarbon-icon.svg +19 -0
  151. package/carbon/src/client/assets/vibecarbon-logo-dark.svg +29 -0
  152. package/carbon/src/client/assets/vibecarbon-logo-light.svg +29 -0
  153. package/carbon/src/client/components/AIIntegrationSection.tsx +120 -0
  154. package/carbon/src/client/components/AppSidebar.tsx +760 -0
  155. package/carbon/src/client/components/ArchitectureSection.tsx +46 -0
  156. package/carbon/src/client/components/CTAFooter.tsx +59 -0
  157. package/carbon/src/client/components/ComparisonSection.tsx +132 -0
  158. package/carbon/src/client/components/ContentPanel.tsx +66 -0
  159. package/carbon/src/client/components/ContentSkeleton.tsx +21 -0
  160. package/carbon/src/client/components/ErrorBoundary.tsx +46 -0
  161. package/carbon/src/client/components/FAQSection.tsx +76 -0
  162. package/carbon/src/client/components/FileUpload.tsx +210 -0
  163. package/carbon/src/client/components/HeaderActions.tsx +17 -0
  164. package/carbon/src/client/components/Hero.tsx +608 -0
  165. package/carbon/src/client/components/ImpersonationBanner.tsx +31 -0
  166. package/carbon/src/client/components/LanguageSwitcher.tsx +67 -0
  167. package/carbon/src/client/components/Logo.tsx +87 -0
  168. package/carbon/src/client/components/LogoStrip.tsx +76 -0
  169. package/carbon/src/client/components/MetricsStrip.tsx +48 -0
  170. package/carbon/src/client/components/Nav.tsx +195 -0
  171. package/carbon/src/client/components/NewsletterSignup.tsx +147 -0
  172. package/carbon/src/client/components/NotificationDrawer.tsx +171 -0
  173. package/carbon/src/client/components/PageHeader.tsx +24 -0
  174. package/carbon/src/client/components/PlanGate.tsx +36 -0
  175. package/carbon/src/client/components/PricingSection.tsx +371 -0
  176. package/carbon/src/client/components/SEO.tsx +34 -0
  177. package/carbon/src/client/components/SmoothScroll.tsx +45 -0
  178. package/carbon/src/client/components/TechStackSection.tsx +165 -0
  179. package/carbon/src/client/components/WorkflowSection.tsx +604 -0
  180. package/carbon/src/client/components/admin/DockerLogs.tsx +276 -0
  181. package/carbon/src/client/components/admin/PerformanceMetrics.tsx +230 -0
  182. package/carbon/src/client/components/admin/ServiceCard.tsx +45 -0
  183. package/carbon/src/client/components/admin/ServicesStatus.tsx +296 -0
  184. package/carbon/src/client/components/architecture/ArchitectureDiagram.tsx +413 -0
  185. package/carbon/src/client/components/auth/AuthProvider.tsx +466 -0
  186. package/carbon/src/client/components/effects/FilmGrainOverlay.tsx +35 -0
  187. package/carbon/src/client/components/effects/FresnelEdge.tsx +49 -0
  188. package/carbon/src/client/components/effects/GlowTracker.tsx +46 -0
  189. package/carbon/src/client/components/effects/SparkBurst.tsx +145 -0
  190. package/carbon/src/client/components/effects/VGlowEffect.tsx +83 -0
  191. package/carbon/src/client/components/effects/index.ts +2 -0
  192. package/carbon/src/client/components/layouts/SidebarLayout.tsx +20 -0
  193. package/carbon/src/client/components/scroll/ScrollSection.tsx +76 -0
  194. package/carbon/src/client/components/scroll/ScrollytellingProvider.tsx +81 -0
  195. package/carbon/src/client/components/scroll/index.ts +2 -0
  196. package/carbon/src/client/components/ui/accordion.tsx +71 -0
  197. package/carbon/src/client/components/ui/alert-dialog.tsx +162 -0
  198. package/carbon/src/client/components/ui/alert.tsx +73 -0
  199. package/carbon/src/client/components/ui/aspect-ratio.tsx +22 -0
  200. package/carbon/src/client/components/ui/avatar.tsx +91 -0
  201. package/carbon/src/client/components/ui/badge.tsx +50 -0
  202. package/carbon/src/client/components/ui/breadcrumb.tsx +100 -0
  203. package/carbon/src/client/components/ui/button-group.tsx +78 -0
  204. package/carbon/src/client/components/ui/button.tsx +120 -0
  205. package/carbon/src/client/components/ui/calendar.tsx +182 -0
  206. package/carbon/src/client/components/ui/card.tsx +85 -0
  207. package/carbon/src/client/components/ui/carousel.tsx +227 -0
  208. package/carbon/src/client/components/ui/chart.tsx +357 -0
  209. package/carbon/src/client/components/ui/checkbox.tsx +27 -0
  210. package/carbon/src/client/components/ui/collapsible.tsx +15 -0
  211. package/carbon/src/client/components/ui/command.tsx +178 -0
  212. package/carbon/src/client/components/ui/context-menu.tsx +233 -0
  213. package/carbon/src/client/components/ui/dialog.tsx +132 -0
  214. package/carbon/src/client/components/ui/drawer.tsx +118 -0
  215. package/carbon/src/client/components/ui/dropdown-menu.tsx +242 -0
  216. package/carbon/src/client/components/ui/empty.tsx +94 -0
  217. package/carbon/src/client/components/ui/field.tsx +226 -0
  218. package/carbon/src/client/components/ui/hover-card.tsx +44 -0
  219. package/carbon/src/client/components/ui/input-group.tsx +146 -0
  220. package/carbon/src/client/components/ui/input-otp.tsx +83 -0
  221. package/carbon/src/client/components/ui/input.tsx +20 -0
  222. package/carbon/src/client/components/ui/item.tsx +188 -0
  223. package/carbon/src/client/components/ui/kbd.tsx +26 -0
  224. package/carbon/src/client/components/ui/label.tsx +21 -0
  225. package/carbon/src/client/components/ui/menubar.tsx +250 -0
  226. package/carbon/src/client/components/ui/navigation-menu.tsx +155 -0
  227. package/carbon/src/client/components/ui/pagination.tsx +102 -0
  228. package/carbon/src/client/components/ui/popover.tsx +75 -0
  229. package/carbon/src/client/components/ui/progress.tsx +66 -0
  230. package/carbon/src/client/components/ui/radio-group.tsx +36 -0
  231. package/carbon/src/client/components/ui/resizable.tsx +46 -0
  232. package/carbon/src/client/components/ui/scroll-area.tsx +48 -0
  233. package/carbon/src/client/components/ui/select.tsx +186 -0
  234. package/carbon/src/client/components/ui/separator.tsx +21 -0
  235. package/carbon/src/client/components/ui/sheet.tsx +124 -0
  236. package/carbon/src/client/components/ui/sidebar.tsx +702 -0
  237. package/carbon/src/client/components/ui/skeleton.tsx +13 -0
  238. package/carbon/src/client/components/ui/slider.tsx +57 -0
  239. package/carbon/src/client/components/ui/sonner.tsx +45 -0
  240. package/carbon/src/client/components/ui/spinner.tsx +15 -0
  241. package/carbon/src/client/components/ui/switch.tsx +30 -0
  242. package/carbon/src/client/components/ui/table.tsx +89 -0
  243. package/carbon/src/client/components/ui/tabs.tsx +73 -0
  244. package/carbon/src/client/components/ui/textarea.tsx +18 -0
  245. package/carbon/src/client/components/ui/toggle-group.tsx +87 -0
  246. package/carbon/src/client/components/ui/toggle.tsx +44 -0
  247. package/carbon/src/client/components/ui/tooltip.tsx +56 -0
  248. package/carbon/src/client/hooks/api/index.ts +14 -0
  249. package/carbon/src/client/hooks/api/useAuthSettings.ts +80 -0
  250. package/carbon/src/client/hooks/api/useSubscription.ts +87 -0
  251. package/carbon/src/client/hooks/use-mobile.ts +21 -0
  252. package/carbon/src/client/hooks/useMousePosition.ts +91 -0
  253. package/carbon/src/client/hooks/useNotifications.tsx +124 -0
  254. package/carbon/src/client/hooks/useOrganizationMembers.ts +127 -0
  255. package/carbon/src/client/hooks/useOrganizations.tsx +230 -0
  256. package/carbon/src/client/hooks/usePackageManager.ts +69 -0
  257. package/carbon/src/client/hooks/useReducedMotion.ts +20 -0
  258. package/carbon/src/client/hooks/useRunningServices.ts +114 -0
  259. package/carbon/src/client/hooks/useScrollProgress.ts +56 -0
  260. package/carbon/src/client/index.css +467 -0
  261. package/carbon/src/client/index.html +56 -0
  262. package/carbon/src/client/lib/admin-services.ts +151 -0
  263. package/carbon/src/client/lib/api.ts +32 -0
  264. package/carbon/src/client/lib/blog.ts +35 -0
  265. package/carbon/src/client/lib/changelog.ts +33 -0
  266. package/carbon/src/client/lib/docs-search.ts +101 -0
  267. package/carbon/src/client/lib/docs.ts +37 -0
  268. package/carbon/src/client/lib/i18n.ts +32 -0
  269. package/carbon/src/client/lib/supabase.ts +72 -0
  270. package/carbon/src/client/lib/tailwind-colors.ts +357 -0
  271. package/carbon/src/client/lib/theme.ts +117 -0
  272. package/carbon/src/client/lib/utils.ts +22 -0
  273. package/carbon/src/client/locales/de.json +529 -0
  274. package/carbon/src/client/locales/en.json +461 -0
  275. package/carbon/src/client/locales/es.json +529 -0
  276. package/carbon/src/client/locales/fr.json +529 -0
  277. package/carbon/src/client/locales/pt.json +529 -0
  278. package/carbon/src/client/main.tsx +56 -0
  279. package/carbon/src/client/mdx.d.ts +13 -0
  280. package/carbon/src/client/pages/ApiDocs.tsx +76 -0
  281. package/carbon/src/client/pages/AuthCallback.tsx +34 -0
  282. package/carbon/src/client/pages/Blog.tsx +167 -0
  283. package/carbon/src/client/pages/Changelog.tsx +171 -0
  284. package/carbon/src/client/pages/Charts.tsx +388 -0
  285. package/carbon/src/client/pages/Checkout.tsx +227 -0
  286. package/carbon/src/client/pages/Contact.tsx +174 -0
  287. package/carbon/src/client/pages/Dashboard.tsx +368 -0
  288. package/carbon/src/client/pages/Docs.tsx +372 -0
  289. package/carbon/src/client/pages/ForgotPassword.tsx +111 -0
  290. package/carbon/src/client/pages/Home.tsx +187 -0
  291. package/carbon/src/client/pages/Legal.tsx +100 -0
  292. package/carbon/src/client/pages/Login.tsx +408 -0
  293. package/carbon/src/client/pages/MFAVerify.tsx +156 -0
  294. package/carbon/src/client/pages/NotFound.tsx +21 -0
  295. package/carbon/src/client/pages/Onboarding.tsx +246 -0
  296. package/carbon/src/client/pages/ResetPassword.tsx +200 -0
  297. package/carbon/src/client/pages/UIComponents.tsx +390 -0
  298. package/carbon/src/client/pages/admin/ContactSubmissions.tsx +220 -0
  299. package/carbon/src/client/pages/admin/Dashboard.tsx +24 -0
  300. package/carbon/src/client/pages/admin/Infrastructure.tsx +257 -0
  301. package/carbon/src/client/pages/admin/Jobs.tsx +225 -0
  302. package/carbon/src/client/pages/admin/Logs.tsx +18 -0
  303. package/carbon/src/client/pages/admin/Newsletter.tsx +300 -0
  304. package/carbon/src/client/pages/admin/Notifications.tsx +603 -0
  305. package/carbon/src/client/pages/admin/Organizations.tsx +306 -0
  306. package/carbon/src/client/pages/admin/Settings.tsx +314 -0
  307. package/carbon/src/client/pages/admin/Theme.tsx +465 -0
  308. package/carbon/src/client/pages/admin/Users.tsx +365 -0
  309. package/carbon/src/client/pages/api-docs.css +156 -0
  310. package/carbon/src/client/pages/organizations/Details.tsx +200 -0
  311. package/carbon/src/client/pages/organizations/Members.tsx +402 -0
  312. package/carbon/src/client/pages/settings/Billing.tsx +473 -0
  313. package/carbon/src/client/pages/settings/Profile.tsx +160 -0
  314. package/carbon/src/client/pages/settings/Security.tsx +341 -0
  315. package/carbon/src/client/public/favicon.svg +19 -0
  316. package/carbon/src/client/public/robots.txt +8 -0
  317. package/carbon/src/server/billing/index.ts +104 -0
  318. package/carbon/src/server/billing/provider.ts +81 -0
  319. package/carbon/src/server/billing/providers/paddle.ts +314 -0
  320. package/carbon/src/server/billing/providers/polar.ts +325 -0
  321. package/carbon/src/server/billing/providers/stripe.ts +233 -0
  322. package/carbon/src/server/emails/templates.ts +116 -0
  323. package/carbon/src/server/index.ts +554 -0
  324. package/carbon/src/server/lib/auth.ts +6 -0
  325. package/carbon/src/server/lib/email.ts +64 -0
  326. package/carbon/src/server/lib/env.ts +112 -0
  327. package/carbon/src/server/lib/errors.ts +21 -0
  328. package/carbon/src/server/lib/logger.ts +17 -0
  329. package/carbon/src/server/lib/rate-limiter.ts +288 -0
  330. package/carbon/src/server/lib/request.ts +34 -0
  331. package/carbon/src/server/lib/stripe.ts +42 -0
  332. package/carbon/src/server/lib/supabase.ts +65 -0
  333. package/carbon/src/server/middleware/requirePlan.ts +80 -0
  334. package/carbon/src/server/routes/_internal/services-status.ts +958 -0
  335. package/carbon/src/server/routes/_internal/verify-role.ts +185 -0
  336. package/carbon/src/server/routes/health.ts +48 -0
  337. package/carbon/src/server/routes/v1/admin/contact.ts +128 -0
  338. package/carbon/src/server/routes/v1/admin/jobs.ts +171 -0
  339. package/carbon/src/server/routes/v1/admin/newsletter.ts +237 -0
  340. package/carbon/src/server/routes/v1/auth.ts +390 -0
  341. package/carbon/src/server/routes/v1/billing.ts +718 -0
  342. package/carbon/src/server/routes/v1/contact.ts +93 -0
  343. package/carbon/src/server/routes/v1/index.ts +1333 -0
  344. package/carbon/src/server/routes/v1/newsletter.ts +181 -0
  345. package/carbon/src/server/routes/v1/performance.ts +157 -0
  346. package/carbon/src/server/routes/v1/stats.ts +170 -0
  347. package/carbon/src/server/routes/v1/theme.ts +106 -0
  348. package/carbon/src/server/routes/webhooks/billing.ts +376 -0
  349. package/carbon/src/server/routes/webhooks/stripe.ts +276 -0
  350. package/carbon/src/server/types.ts +11 -0
  351. package/carbon/src/shared/pricing.ts +155 -0
  352. package/carbon/src/shared/types.ts +338 -0
  353. package/carbon/supabase/migrations/00001_init.sql +717 -0
  354. package/carbon/supabase/migrations/00002_theme_settings.sql +13 -0
  355. package/carbon/supabase/migrations/00003_pg_cron.sql +121 -0
  356. package/carbon/supabase/migrations/00004_contact_newsletter.sql +81 -0
  357. package/carbon/supabase/migrations/00005_localization_languages.sql +22 -0
  358. package/carbon/supabase/seed.sql +16 -0
  359. package/carbon/tests/_helpers/app.ts +45 -0
  360. package/carbon/tests/_helpers/env.ts +37 -0
  361. package/carbon/tests/_helpers/factories.ts +69 -0
  362. package/carbon/tests/_helpers/jwt.ts +23 -0
  363. package/carbon/tests/_helpers/setup-integration.ts +20 -0
  364. package/carbon/tests/_helpers/setup-rtl.ts +12 -0
  365. package/carbon/tests/component/ErrorBoundary.test.tsx +53 -0
  366. package/carbon/tests/component/use-auth-settings.test.tsx +119 -0
  367. package/carbon/tests/integration/server/routes/contact.test.ts +162 -0
  368. package/carbon/tests/integration/server/routes/health.test.ts +61 -0
  369. package/carbon/tests/structural/i18n-parity.test.ts +42 -0
  370. package/carbon/tests/unit/client/utils.test.ts +49 -0
  371. package/carbon/tests/unit/shared/pricing.test.ts +93 -0
  372. package/carbon/tsconfig.json +27 -0
  373. package/carbon/tsconfig.server.json +27 -0
  374. package/carbon/tsconfig.test.json +9 -0
  375. package/carbon/vite.config.ts +110 -0
  376. package/carbon/vitest.config.ts +74 -0
  377. package/carbon/volumes/db/jwt.sql +57 -0
  378. package/carbon/volumes/db/metabase-init.sh +29 -0
  379. package/carbon/volumes/db/n8n-init.sh +25 -0
  380. package/carbon/volumes/db/realtime.sql +33 -0
  381. package/carbon/volumes/db/roles.sql +93 -0
  382. package/carbon/volumes/db/set-passwords.sh +12 -0
  383. package/carbon/volumes/db/super-admin.dev.sql +113 -0
  384. package/carbon/volumes/db/super-admin.generated.sql +113 -0
  385. package/carbon/volumes/db/super-admin.sql +114 -0
  386. package/carbon/volumes/grafana/dashboards/logs.json +179 -0
  387. package/carbon/volumes/grafana/dashboards/overview.json +523 -0
  388. package/carbon/volumes/grafana/dashboards/postgresql.json +337 -0
  389. package/carbon/volumes/grafana/dashboards.dev/logs.json +179 -0
  390. package/carbon/volumes/grafana/dashboards.dev/overview.json +156 -0
  391. package/carbon/volumes/grafana/dashboards.dev/postgresql.json +337 -0
  392. package/carbon/volumes/grafana/provisioning/dashboards/dashboards.dev.yml +16 -0
  393. package/carbon/volumes/grafana/provisioning/dashboards/dashboards.yml +16 -0
  394. package/carbon/volumes/grafana/provisioning/datasources/datasources.yml +43 -0
  395. package/carbon/volumes/kong/docker-entrypoint.sh +9 -0
  396. package/carbon/volumes/kong/kong.yml +208 -0
  397. package/carbon/volumes/loki/loki-config.yml +58 -0
  398. package/carbon/volumes/n8n/hooks.js +131 -0
  399. package/carbon/volumes/n8n/scripts/setup.sh +66 -0
  400. package/carbon/volumes/prometheus/prometheus.yml +43 -0
  401. package/carbon/volumes/promtail/promtail-config.yml +64 -0
  402. package/carbon/volumes/traefik/middlewares.dev.yml +83 -0
  403. package/carbon/volumes/traefik/middlewares.yml +95 -0
  404. package/carbon/volumes/traefik/vite-dev.yml +20 -0
  405. package/package.json +95 -0
  406. package/src/access.js +354 -0
  407. package/src/activate.js +187 -0
  408. package/src/add.js +718 -0
  409. package/src/backup.js +786 -0
  410. package/src/cli.js +350 -0
  411. package/src/configure.js +967 -0
  412. package/src/console.js +155 -0
  413. package/src/create.js +1499 -0
  414. package/src/deploy.js +311 -0
  415. package/src/destroy.js +2033 -0
  416. package/src/diagnose.js +735 -0
  417. package/src/down.js +80 -0
  418. package/src/failover.js +1032 -0
  419. package/src/lib/backup-s3.js +179 -0
  420. package/src/lib/build.js +33 -0
  421. package/src/lib/checksum.js +28 -0
  422. package/src/lib/ci-setup.js +666 -0
  423. package/src/lib/cli/help.js +129 -0
  424. package/src/lib/cli/parse-flags.js +160 -0
  425. package/src/lib/cli/select-action.js +65 -0
  426. package/src/lib/cli/select-environment.js +108 -0
  427. package/src/lib/cli/tty-guard.js +75 -0
  428. package/src/lib/cloudflare.js +447 -0
  429. package/src/lib/colors.js +52 -0
  430. package/src/lib/command.js +361 -0
  431. package/src/lib/config.js +359 -0
  432. package/src/lib/cost.js +103 -0
  433. package/src/lib/deploy/bundle.js +231 -0
  434. package/src/lib/deploy/compose/acme-verify.js +121 -0
  435. package/src/lib/deploy/compose/build-args.js +78 -0
  436. package/src/lib/deploy/compose/ha.js +1874 -0
  437. package/src/lib/deploy/compose/index.js +1294 -0
  438. package/src/lib/deploy/compose/reconcile.js +74 -0
  439. package/src/lib/deploy/github.js +382 -0
  440. package/src/lib/deploy/image.js +191 -0
  441. package/src/lib/deploy/index.js +119 -0
  442. package/src/lib/deploy/k8s/LICENSE +99 -0
  443. package/src/lib/deploy/k8s/gitops-deploy.js +298 -0
  444. package/src/lib/deploy/k8s/ha/index.js +1000 -0
  445. package/src/lib/deploy/k8s/index.js +62 -0
  446. package/src/lib/deploy/k8s/k3s.js +2515 -0
  447. package/src/lib/deploy/orchestrator.js +1401 -0
  448. package/src/lib/deploy/prompts.js +545 -0
  449. package/src/lib/deploy/remote-build.js +130 -0
  450. package/src/lib/deploy/state.js +120 -0
  451. package/src/lib/deploy/utils.js +328 -0
  452. package/src/lib/deploy-logger.js +93 -0
  453. package/src/lib/dns-propagation.js +48 -0
  454. package/src/lib/environment.js +58 -0
  455. package/src/lib/fetch-retry.js +103 -0
  456. package/src/lib/github-environments.js +335 -0
  457. package/src/lib/hetzner-dns.js +377 -0
  458. package/src/lib/hetzner-guided-setup.js +275 -0
  459. package/src/lib/host-keys.js +37 -0
  460. package/src/lib/iac/cloud-init.js +52 -0
  461. package/src/lib/iac/index.js +325 -0
  462. package/src/lib/iac/programs/hetzner-compose.js +130 -0
  463. package/src/lib/iac/programs/hetzner-k8s.js +320 -0
  464. package/src/lib/kubectl.js +81 -0
  465. package/src/lib/licensing/index.js +259 -0
  466. package/src/lib/licensing/tiers.js +181 -0
  467. package/src/lib/licensing/validator.js +171 -0
  468. package/src/lib/merge-package-json.js +90 -0
  469. package/src/lib/operator-ip.js +381 -0
  470. package/src/lib/package-manager.js +111 -0
  471. package/src/lib/perf.js +71 -0
  472. package/src/lib/project-guard.js +39 -0
  473. package/src/lib/project.js +334 -0
  474. package/src/lib/providers/base.js +276 -0
  475. package/src/lib/providers/hetzner-s3.js +656 -0
  476. package/src/lib/providers/hetzner.js +755 -0
  477. package/src/lib/providers/index.js +164 -0
  478. package/src/lib/s3.js +510 -0
  479. package/src/lib/secret-scan.js +583 -0
  480. package/src/lib/secrets.js +63 -0
  481. package/src/lib/server-types.js +195 -0
  482. package/src/lib/shell.js +91 -0
  483. package/src/lib/ssh.js +241 -0
  484. package/src/lib/tracker.js +242 -0
  485. package/src/lib/upgrade-policy.js +170 -0
  486. package/src/lib/validators.js +105 -0
  487. package/src/lib/version.js +5 -0
  488. package/src/remove.js +292 -0
  489. package/src/reset.js +97 -0
  490. package/src/restore.js +871 -0
  491. package/src/scale.js +1734 -0
  492. package/src/shell.js +222 -0
  493. package/src/status.js +981 -0
  494. package/src/up.js +264 -0
  495. package/src/upgrade.js +721 -0
@@ -0,0 +1,461 @@
1
+ {
2
+ "common": {
3
+ "back": "Back",
4
+ "cancel": "Cancel",
5
+ "continue": "Continue",
6
+ "create": "Create",
7
+ "creating": "Creating...",
8
+ "delete": "Delete",
9
+ "loading": "Loading...",
10
+ "save": "Save Changes",
11
+ "settings": "Settings",
12
+ "signOut": "Sign out",
13
+ "skipForNow": "Skip for now",
14
+ "toggleTheme": "Toggle theme",
15
+ "free": "Free",
16
+ "popular": "Popular",
17
+ "manage": "Manage",
18
+ "update": "Update",
19
+ "remove": "Remove"
20
+ },
21
+ "nav": {
22
+ "docs": "User Docs",
23
+ "apiDocs": "API Docs",
24
+ "dashboard": "Dashboard",
25
+ "logIn": "Sign in",
26
+ "signUp": "Sign up"
27
+ },
28
+ "sidebar": {
29
+ "dashboard": "Dashboard",
30
+ "uiComponents": "Forms",
31
+ "charts": "Charts",
32
+ "menu": "Menu",
33
+ "selectOrganization": "Select Organization",
34
+ "createOrganization": "Create Organization",
35
+ "userSettings": "User Settings",
36
+ "profile": "Profile",
37
+ "billing": "Billing",
38
+ "security": "Security",
39
+ "orgDetails": "Org Details",
40
+ "members": "Members",
41
+ "superAdmin": "Super Admin",
42
+ "overview": "Overview",
43
+ "organizations": "Organizations",
44
+ "users": "Users",
45
+ "notifications": "Notifications",
46
+ "logs": "Logs",
47
+ "theme": "Theme",
48
+ "settings": "Settings"
49
+ },
50
+ "createOrg": {
51
+ "title": "Create Organization",
52
+ "description": "Add a new organization to manage your team and projects.",
53
+ "nameLabel": "Organization Name",
54
+ "namePlaceholder": "Enter organization name"
55
+ },
56
+ "auth": {
57
+ "checkYourEmail": "Check your email",
58
+ "createAccount": "Create account",
59
+ "signIn": "Sign in",
60
+ "signUp": "Sign up",
61
+ "signInAction": "Sign in",
62
+ "magicLinkSent": "We sent a sign-in link to {{email}}",
63
+ "poweredBy": "Powered by Supabase Auth",
64
+ "magicLinkExpiry": "Click the link in your email to sign in. The link expires in 1 hour.",
65
+ "backToSignIn": "Back to sign in",
66
+ "passwordInstead": "Sign in with password instead",
67
+ "namePlaceholder": "Name",
68
+ "emailPlaceholder": "Email",
69
+ "passwordPlaceholder": "Password",
70
+ "sending": "Sending...",
71
+ "sendMagicLink": "Send magic link",
72
+ "signInWithMagicLink": "Sign in with magic link",
73
+ "forgotPassword": "Forgot password?",
74
+ "orContinueWith": "Or continue with",
75
+ "alreadyHaveAccount": "Already have an account?",
76
+ "dontHaveAccount": "Don't have an account?",
77
+ "authFailed": "Authentication failed",
78
+ "magicLinkFailed": "Failed to send magic link",
79
+ "oauthFailed": "OAuth failed"
80
+ },
81
+ "dashboard": {
82
+ "title": "Dashboard",
83
+ "welcomeBack": "Welcome back!",
84
+ "signedInAs": "Signed in as",
85
+ "nextSteps": "Getting Started",
86
+ "nextStepsDescription": "Set up the remaining integrations for your app.",
87
+ "exploreStudio": "Explore Supabase Studio",
88
+ "configureOAuth": "Configure OAuth Providers",
89
+ "setupStripe": "Set up Stripe Billing",
90
+ "deployProduction": "Deploy to Production",
91
+ "totalUsers": "Total Users",
92
+ "newSignups": "New Signups",
93
+ "activeUsers": "Active Users",
94
+ "organizations": "Organizations",
95
+ "vsLastMonth": "{{diff}} vs last month",
96
+ "newThisMonth": "+{{count}} new this month",
97
+ "greeting": {
98
+ "morning": "Good morning",
99
+ "afternoon": "Good afternoon",
100
+ "evening": "Good evening"
101
+ }
102
+ },
103
+ "profile": {
104
+ "title": "Profile",
105
+ "description": "Manage your personal information",
106
+ "profileInfo": "Profile Information",
107
+ "profileInfoDescription": "Update your personal details and profile picture.",
108
+ "fullName": "Full Name",
109
+ "namePlaceholder": "Enter your name",
110
+ "email": "Email",
111
+ "emailChangeHint": "Contact support to change your email address.",
112
+ "account": "Account",
113
+ "accountDescription": "Manage your account settings.",
114
+ "deleteAccount": "Delete Account",
115
+ "deleteAccountDescription": "Permanently delete your account and all associated data.",
116
+ "deleteAccountConfirmTitle": "Delete your account?",
117
+ "deleteAccountConfirmDescription": "This action cannot be undone. Your account, profile data, and all associated information will be permanently deleted.",
118
+ "deleteAccountConfirmButton": "Delete my account",
119
+ "superAdminCannotDelete": "Super admin accounts cannot be deleted. Remove the super_admin role first, then try again."
120
+ },
121
+ "billing": {
122
+ "title": "Billing",
123
+ "description": "Subscription and payment settings",
124
+ "notConfigured": "Billing is not configured. Set <code>STRIPE_SECRET_KEY</code> and <code>STRIPE_WEBHOOK_SECRET</code> in your environment to enable billing.",
125
+ "currentPlan": "Current Plan",
126
+ "onPlan": "You are on the <strong>{{plan}}</strong> plan.",
127
+ "trial": "Trial",
128
+ "cancelsOn": "Cancels on {{date}}",
129
+ "subscriptionEndsOn": "Your subscription will end on ",
130
+ "nextBillingDate": "Next billing date: ",
131
+ "changePlan": "Change Plan",
132
+ "choosePlan": "Choose a Plan",
133
+ "changePlanDescription": "Switch to a different plan via the customer portal.",
134
+ "choosePlanDescription": "Select the plan that works best for you.",
135
+ "currentPlanButton": "Current plan",
136
+ "switchPlan": "Switch plan",
137
+ "upgrade": "Upgrade",
138
+ "paymentMethod": "Payment Method",
139
+ "paymentMethodDescription": "Manage your payment information through the customer portal.",
140
+ "paymentOnFile": "Payment method on file",
141
+ "manageInPortal": "Manage in customer portal",
142
+ "noPaymentMethod": "No payment method",
143
+ "addCardDescription": "Add a card to enable faster checkout",
144
+ "addCard": "Add card",
145
+ "billingHistory": "Billing History",
146
+ "billingHistoryDescription": "View and download your past invoices.",
147
+ "viewInPortal": "View your complete billing history in the customer portal.",
148
+ "viewInvoices": "View Invoices",
149
+ "noBillingHistory": "No billing history yet",
150
+ "invoicesAppearHere": "Your invoices will appear here once you upgrade."
151
+ },
152
+ "security": {
153
+ "title": "Security",
154
+ "description": "Password, MFA, and session management",
155
+ "mfaRequired": "Two-factor authentication required",
156
+ "mfaRequiredDescription": "Your organization requires two-factor authentication. Please set it up to continue.",
157
+ "twoFactor": "Two-Factor Authentication",
158
+ "twoFactorDescription": "Add an extra layer of security to your account by requiring a verification code from your authenticator app.",
159
+ "mfaEnabled": "Two-factor authentication is enabled",
160
+ "mfaEnabledDescription": "Your account is protected with an authenticator app.",
161
+ "enrolledAuthenticators": "Enrolled authenticators",
162
+ "authenticatorApp": "Authenticator App",
163
+ "mfaNotEnabled": "Two-factor authentication is not enabled",
164
+ "mfaNotEnabledDescription": "Enable 2FA to add an extra layer of security to your account.",
165
+ "enableMfa": "Enable two-factor authentication",
166
+ "settingUp": "Setting up...",
167
+ "mfaRequiredByOrg": "Two-factor authentication is required by your organization.",
168
+ "setupMfa": "Set up two-factor authentication",
169
+ "setupMfaDescription": "Scan the QR code with your authenticator app, then enter the verification code.",
170
+ "cantScan": "Can't scan? Enter this code manually:",
171
+ "enterCode": "Enter verification code",
172
+ "verifying": "Verifying...",
173
+ "verifyAndEnable": "Verify and enable",
174
+ "disableMfa": "Disable two-factor authentication?",
175
+ "disableMfaDescription": "This will remove the authenticator from your account. You can set it up again at any time.",
176
+ "disableMfaWarning": "Warning: Your organization requires two-factor authentication. You will need to set it up again before you can access your account.",
177
+ "disabling": "Disabling...",
178
+ "disable2fa": "Disable 2FA"
179
+ },
180
+ "onboarding": {
181
+ "getStarted": "Get Started",
182
+ "steps": {
183
+ "profile": "Profile",
184
+ "organization": "Organization",
185
+ "plan": "Plan",
186
+ "invite": "Invite"
187
+ },
188
+ "profile": {
189
+ "title": "Welcome! What should we call you?",
190
+ "description": "This helps personalize your experience.",
191
+ "fullName": "Full Name",
192
+ "placeholder": "Jane Smith"
193
+ },
194
+ "org": {
195
+ "title": "Create your organization",
196
+ "description": "Organizations help you manage teams and projects.",
197
+ "nameLabel": "Organization Name",
198
+ "placeholder": "Acme Inc",
199
+ "error": "Failed to create organization"
200
+ },
201
+ "plan": {
202
+ "title": "Choose your plan",
203
+ "description": "You can always change this later.",
204
+ "continueWithFree": "Continue with Free",
205
+ "continueToCheckout": "Continue to Checkout",
206
+ "dayTrial": "{{days}}-day trial"
207
+ },
208
+ "invite": {
209
+ "title": "Invite your team",
210
+ "description": "Add team members by email. You can do this later too.",
211
+ "emailLabel": "Email addresses",
212
+ "placeholder": "alice@example.com, bob@example.com",
213
+ "hint": "Separate multiple emails with commas.",
214
+ "finish": "Finish Setup"
215
+ }
216
+ },
217
+ "charts": {
218
+ "title": "Charts",
219
+ "revenue": "Revenue",
220
+ "revenueDescription": "Monthly revenue, Jan\u2013Jun",
221
+ "revenueSparkline": "$29.8k",
222
+ "newUsers": "New Users",
223
+ "activeUsers": "Active Users",
224
+ "activeUsersDescription": "Weekly signups \u2014 new vs. returning",
225
+ "mrr": "MRR",
226
+ "mrrGrowth": "MRR Growth",
227
+ "mrrGrowthDescription": "Cumulative monthly recurring revenue",
228
+ "mrrSparkline": "$31k",
229
+ "grossMargin": "Gross Margin",
230
+ "grossMarginSparkline": "53%",
231
+ "planDistribution": "Plan Distribution",
232
+ "planDistributionDescription": "Breakdown by subscription tier",
233
+ "featureUsage": "Feature Usage",
234
+ "featureUsageDescription": "Adoption across 6 product areas",
235
+ "revenueAndMargin": "Revenue & Margin",
236
+ "revenueAndMarginDescription": "Monthly revenue with gross margin %"
237
+ },
238
+ "theme": {
239
+ "title": "Theme",
240
+ "description": "Customize the app's brand colors and appearance",
241
+ "lightMode": "Light Mode",
242
+ "darkMode": "Dark Mode",
243
+ "borderRadius": "Border Radius",
244
+ "resetToDefaults": "Reset to Defaults",
245
+ "saveChanges": "Save Changes",
246
+ "saved": "Theme saved",
247
+ "saveFailed": "Failed to save theme",
248
+ "smoothScrolling": "Smooth Scrolling",
249
+ "smoothScrollEnabled": "Enable smooth scrolling",
250
+ "smoothScrollIntensity": "Intensity",
251
+ "smoothScrollDuration": "{{value}}s duration",
252
+ "colorSlots": {
253
+ "gradientStart": "Background Start",
254
+ "gradientEnd": "Background End",
255
+ "card": "Card",
256
+ "primary": "Primary",
257
+ "primaryDim": "Primary Dim",
258
+ "primaryForeground": "Primary Text",
259
+ "secondaryAccent": "Accent",
260
+ "secondaryAccentForeground": "Accent Text",
261
+ "destructive": "Destructive",
262
+ "warning": "Warning",
263
+ "success": "Success"
264
+ }
265
+ },
266
+ "admin": {
267
+ "impersonating": "Viewing as {{email}}",
268
+ "stopImpersonating": "Stop",
269
+ "loginAsUser": "Sign in as user",
270
+ "impersonateConfirm": "You will be signed in as this user. You can return to your admin account at any time.",
271
+ "cannotImpersonate": "Cannot impersonate this user"
272
+ },
273
+ "landing": {
274
+ "hero": {
275
+ "badge": "Fully Automated · Self-Hosted",
276
+ "headline1": "Professional Grade",
277
+ "subheading": "Full-stack SaaS architecture with auth, billing, infrastructure, and deployment — built for AI-driven development.",
278
+ "getUpdates": "Get Updates"
279
+ },
280
+ "metrics": {
281
+ "time": { "value": "< 5 min", "label": "From zero to production" },
282
+ "services": { "value": "12 services", "label": "Provisioned automatically" },
283
+ "config": { "value": "Zero config", "label": "Security hardened from creation" },
284
+ "commands": { "value": "3 commands", "label": "Create · develop · deploy" }
285
+ },
286
+ "logoStrip": {
287
+ "label": "Optimized for the tools you use"
288
+ },
289
+ "workflow": {
290
+ "headline": "Three commands to production",
291
+ "subheading": "Provision, deploy, and scale from the CLI",
292
+ "create": { "label": "Create", "description": "Full-stack app with auth, database, API, and Kubernetes manifests — ready to go." },
293
+ "develop": { "label": "Develop", "description": "Spin up your entire dev environment: database, auth, API, and hot-reloading frontend." },
294
+ "deploy": { "label": "Deploy", "description": "Provision a VPS or Kubernetes cluster with SSL, HA, backups, and CI/CD in one command." }
295
+ },
296
+ "techStack": {
297
+ "headline": "Built on tech that",
298
+ "headlineHighlight": "scales",
299
+ "subheading": "Every layer chosen for production reliability, not trend-chasing.",
300
+ "addOnsLabel": "Optional add-ons",
301
+ "items": {
302
+ "react": "Lightning-fast UI",
303
+ "typescript": "End-to-end type safety",
304
+ "hono": "13KB server framework",
305
+ "supabase": "Auth, DB & realtime",
306
+ "tailwind": "Utility-first styling",
307
+ "shadcn": "50+ ready components",
308
+ "tanstack": "Smart data fetching",
309
+ "stripe": "Payments & billing",
310
+ "mdx": "Blog, docs & changelog",
311
+ "i18next": "Multi-language support",
312
+ "docker": "Containerized deploys",
313
+ "kubernetes": "Production orchestration"
314
+ },
315
+ "addOns": {
316
+ "observability": { "description": "Grafana, Prometheus & Loki — metrics, logs, and dashboards pre-configured." },
317
+ "metabase": { "description": "Self-hosted business intelligence with direct access to your database." },
318
+ "n8n": { "description": "Visual workflow automation for background jobs, webhooks, and integrations." },
319
+ "redis": { "description": "In-memory caching and queues for high-throughput workloads." }
320
+ }
321
+ },
322
+ "architecture": {
323
+ "badge": "Architecture",
324
+ "headline": "Full stack, perfected.",
325
+ "subheading": "From React to PostgreSQL — fully wired."
326
+ },
327
+ "comparison": {
328
+ "headline": "Scalable &",
329
+ "headlineHighlight": "Secure.",
330
+ "subheading": "Ship fast — without going down in flames.",
331
+ "hacked": { "risk": "Getting hacked", "protection": "Security hardened", "how": "Traefik proxy, firewall rules, CSP headers, rate limiting" },
332
+ "exposed": { "risk": "Database exposed", "protection": "Database isolation", "how": "Network-isolated database, row-level security, scoped credentials" },
333
+ "traffic": { "risk": "Can't handle traffic", "protection": "Auto-scaling", "how": "Kubernetes autoscaling across pods and VPS nodes" },
334
+ "redundancy": { "risk": "Zero redundancy", "protection": "High availability", "how": "Multi-region with health monitoring & one-command failover" },
335
+ "visibility": { "risk": "No visibility", "protection": "Full observability", "how": "Native Grafana & Prometheus, configured per environment" },
336
+ "dataLoss": { "risk": "Data loss", "protection": "Automated backups", "how": "Scheduled S3 backups with one-command restore" }
337
+ },
338
+ "aiIntegration": {
339
+ "headline1": "Works with",
340
+ "headlineHighlight": "any AI tool",
341
+ "headline2": "you use",
342
+ "subheading": "Every project includes CLAUDE.md, Cursor rules, and security guardrails for AI agents. Code generated by AI follows your architecture and security policies from the first prompt.",
343
+ "footer1": "Use any AI to build — Vibecarbon handles the",
344
+ "footer2": "infrastructure and security",
345
+ "docs": { "title": "AI-native documentation", "description": "CLAUDE.md, AGENTS.md, .windsurfrules, Copilot instructions, and Cursor rules ship with every project — your AI assistant gets full codebase context from the first prompt." },
346
+ "guardrails": { "title": "Built-in security guardrails", "description": "AGENTS.md encodes mandatory MUST/NEVER rules for RLS, auth checks, client selection, and infrastructure hardening — so AI-generated code follows your security policies by default." },
347
+ "architecture": { "title": "Clean architecture", "description": "Clear separation of client, server, and shared code with typed interfaces. AI agents can navigate, understand, and extend your app without hallucinating structure." },
348
+ "patterns": { "title": "Predictable patterns", "description": "Every route validates with Zod, every query uses the right Supabase client, every table has RLS. AI agents replicate the same correct patterns every time." }
349
+ },
350
+ "pricing": {
351
+ "headline1": "From",
352
+ "headlineSketch": "sketch",
353
+ "headline2": "to",
354
+ "headlineScale": "scale.",
355
+ "subheading": "Same carbon, different form. One payment, lifetime access.",
356
+ "popular": "Most Popular",
357
+ "units": { "forever": "forever", "oneTime": "one-time payment" },
358
+ "graphite": {
359
+ "tagline": "Sketch and design locally",
360
+ "cta": "Start Sketching",
361
+ "features": {
362
+ "unlimitedProjects": "Unlimited projects",
363
+ "localDev": "Full local dev environment",
364
+ "addOns": "Every add-on included",
365
+ "supabase": "Complete Supabase stack",
366
+ "community": "Community support",
367
+ "production": "Production deployment",
368
+ "ha": "High availability",
369
+ "k8s": "Kubernetes autoscaling"
370
+ }
371
+ },
372
+ "diamond": {
373
+ "tagline": "Full automation for indie hackers and startups.",
374
+ "cta": "Get Diamond",
375
+ "features": {
376
+ "graphite": "Everything in Graphite",
377
+ "deployModes": "All deployment modes (Compose, HA, Kubernetes)",
378
+ "replication": "Streaming replication",
379
+ "healthChecks": "Health checks + one-command failover",
380
+ "backups": "Automated S3 backups",
381
+ "cicd": "CI/CD via GitHub Actions",
382
+ "unlimited": "Unlimited servers & projects",
383
+ "commercial": "Commercial use rights"
384
+ }
385
+ },
386
+ "fullerene": {
387
+ "tagline": "Commercial license for Agencies and Enterprise.",
388
+ "cta": "Get Fullerene",
389
+ "features": {
390
+ "diamond": "Everything in Diamond",
391
+ "commercial": "Commercial use rights (AGPL exception)",
392
+ "clients": "Deploy for clients & organizations",
393
+ "corporate": "Agency & enterprise teams",
394
+ "support": "Priority email support",
395
+ "lifetime": "Lifetime access"
396
+ }
397
+ }
398
+ },
399
+ "faq": {
400
+ "headline": "Frequently asked questions",
401
+ "subheading": "Common questions, direct answers.",
402
+ "q1": {
403
+ "question": "What do I get out of the box?",
404
+ "answer": "A full-stack app with React 19, Hono API, self-hosted Supabase, auth, billing, file uploads, blog, docs, i18n, Kubernetes manifests, and Docker Compose for local dev."
405
+ },
406
+ "q2": {
407
+ "question": "Can I modify or customize everything?",
408
+ "answer": "Yes. Every line is yours — generated once, kept forever. No vendor lock-in, no runtime dependency on Vibecarbon."
409
+ },
410
+ "q3": {
411
+ "question": "What cloud providers are supported?",
412
+ "answer": "Hetzner Cloud (more coming soon), with Docker Compose and Kubernetes manifests that work on any provider — AWS, GCP, DigitalOcean, and more."
413
+ },
414
+ "q4": {
415
+ "question": "How does deployment work?",
416
+ "answer": "Run \"npx vibecarbon deploy\" to provision a VPS, install k8s, configure Traefik, deploy your app with auto-HTTPS, and set up automated backups — all in one command."
417
+ },
418
+ "q5": {
419
+ "question": "How does pricing work?",
420
+ "answer": "Graphite is free forever — create projects, develop locally, and use every add-on. Diamond ($149 lifetime) is full automation for indie hackers and startups — all deployment modes, backups, CI/CD, and scaling. Fullerene ($499 lifetime) is the commercial license for agencies and enterprise — deploy for clients and organizations without AGPL restrictions. One-time payment, no subscriptions, your infrastructure."
421
+ },
422
+ "q6": {
423
+ "question": "How many projects can I create with one license?",
424
+ "answer": "Unlimited. One Diamond or Fullerene license covers every project you create — there's no per-project fee. The license is tied to you or your organization."
425
+ },
426
+ "q7": {
427
+ "question": "Do I need Fullerene to charge users or run a SaaS?",
428
+ "answer": "No. Diamond covers deploying your own product — charge users, run a SaaS, build a business. Fullerene is the commercial license for deploying on behalf of someone else: agencies, enterprise, and client work. The test: is this your product? Diamond. Someone else's? Fullerene."
429
+ },
430
+ "q8": {
431
+ "question": "What happens if Vibecarbon shuts down?",
432
+ "answer": "Nothing changes for your app. The generated code is MIT-licensed with zero runtime dependency on Vibecarbon — it's just a codebase you own outright. The CLI is open source under AGPL, so you can run it from source indefinitely. Your infrastructure runs on your own servers."
433
+ },
434
+ "q9": {
435
+ "question": "Do I need DevOps experience to deploy?",
436
+ "answer": "No. The CLI handles provisioning, SSL, scaling, backups, and monitoring. You need a Hetzner account, a domain, and SMTP credentials for email — that's it. All the Kubernetes manifests and Docker Compose files live in your project if you want to understand or customize what's being set up."
437
+ }
438
+ },
439
+ "newsletter": {
440
+ "placeholder": "Enter your email",
441
+ "button": "Subscribe",
442
+ "success": "Check your email to confirm your subscription.",
443
+ "errorEmpty": "Please enter your email address",
444
+ "errorInvalid": "Please enter a valid email address"
445
+ },
446
+ "cta": {
447
+ "badge": "Secure by design",
448
+ "headline": "Ship something you own.",
449
+ "subheading": "Production-grade infrastructure, no DevOps degree required."
450
+ },
451
+ "footer": {
452
+ "userDocs": "User Docs",
453
+ "apiDocs": "API Docs",
454
+ "blog": "Blog",
455
+ "changelog": "Changelog",
456
+ "contact": "Contact",
457
+ "privacy": "Privacy",
458
+ "terms": "Terms"
459
+ }
460
+ }
461
+ }