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.
- package/LICENSE +663 -0
- package/README.md +188 -0
- package/carbon/.claude/hooks/task-completed-gate.sh +19 -0
- package/carbon/.claude/hooks/teammate-idle-gate.sh +29 -0
- package/carbon/.claude/settings.json +29 -0
- package/carbon/.cursor/rules/vibecarbon.mdc +6 -0
- package/carbon/.dockerignore +57 -0
- package/carbon/.env.example +219 -0
- package/carbon/.github/copilot-instructions.md +3 -0
- package/carbon/.github/workflows/deploy.yml +346 -0
- package/carbon/.github/workflows/vibecarbon-build.yml +81 -0
- package/carbon/.windsurfrules +74 -0
- package/carbon/AGENTS.md +422 -0
- package/carbon/CLAUDE.md +3 -0
- package/carbon/DEVELOPMENT.md +187 -0
- package/carbon/Dockerfile +98 -0
- package/carbon/LICENSE +21 -0
- package/carbon/PRODUCTION.md +364 -0
- package/carbon/README.md +193 -0
- package/carbon/TESTING.md +138 -0
- package/carbon/backup/Dockerfile +75 -0
- package/carbon/backup/backup.sh +95 -0
- package/carbon/backup/compose-backup.sh +140 -0
- package/carbon/biome.json +83 -0
- package/carbon/cloud-init/docker-ce-setup.yaml +55 -0
- package/carbon/cloud-init/k3s/master-init.sh +215 -0
- package/carbon/cloud-init/k3s/supabase-init.sh +167 -0
- package/carbon/cloud-init/k3s/worker-init.sh +147 -0
- package/carbon/components.json +24 -0
- package/carbon/content/blog/authentication-guide.mdx +34 -0
- package/carbon/content/blog/getting-started.mdx +41 -0
- package/carbon/content/changelog/v0-1-0.mdx +40 -0
- package/carbon/content/docs/analytics.mdx +90 -0
- package/carbon/content/docs/authentication.mdx +231 -0
- package/carbon/content/docs/background-jobs.mdx +116 -0
- package/carbon/content/docs/cli.mdx +630 -0
- package/carbon/content/docs/database.mdx +236 -0
- package/carbon/content/docs/deployment.mdx +227 -0
- package/carbon/content/docs/development.mdx +238 -0
- package/carbon/content/docs/environments.mdx +84 -0
- package/carbon/content/docs/getting-started.mdx +112 -0
- package/carbon/content/docs/legal/privacy-policy.mdx +89 -0
- package/carbon/content/docs/legal/terms-of-service.mdx +99 -0
- package/carbon/content/docs/optional-services.mdx +160 -0
- package/carbon/db/Dockerfile +23 -0
- package/carbon/docker-compose.dev-init.yml +5 -0
- package/carbon/docker-compose.metabase.override.yml +14 -0
- package/carbon/docker-compose.metabase.prod.yml +28 -0
- package/carbon/docker-compose.metabase.yml +84 -0
- package/carbon/docker-compose.n8n.override.yml +14 -0
- package/carbon/docker-compose.n8n.prod.yml +31 -0
- package/carbon/docker-compose.n8n.yml +97 -0
- package/carbon/docker-compose.observability.override.yml +18 -0
- package/carbon/docker-compose.observability.prod.yml +28 -0
- package/carbon/docker-compose.observability.yml +125 -0
- package/carbon/docker-compose.override.yml +28 -0
- package/carbon/docker-compose.prod.yml +294 -0
- package/carbon/docker-compose.yml +508 -0
- package/carbon/docker-entrypoint.sh +12 -0
- package/carbon/ha/activate-standby.sh +52 -0
- package/carbon/ha/primary-init.sql +36 -0
- package/carbon/ha/standby-init.sh +74 -0
- package/carbon/k8s/LICENSE +99 -0
- package/carbon/k8s/README.md +272 -0
- package/carbon/k8s/base/app/deployment.yaml +130 -0
- package/carbon/k8s/base/app/hpa.yaml +44 -0
- package/carbon/k8s/base/app/kustomization.yaml +10 -0
- package/carbon/k8s/base/app/network-policy.yaml +124 -0
- package/carbon/k8s/base/app/pdb.yaml +14 -0
- package/carbon/k8s/base/app/rbac.yaml +36 -0
- package/carbon/k8s/base/app/service.yaml +16 -0
- package/carbon/k8s/base/backup/cronjob.yaml +120 -0
- package/carbon/k8s/base/backup/kustomization.yaml +7 -0
- package/carbon/k8s/base/backup/network-policy.yaml +31 -0
- package/carbon/k8s/base/backup/rbac.yaml +7 -0
- package/carbon/k8s/base/cluster-autoscaler/deployment.yaml +103 -0
- package/carbon/k8s/base/cluster-autoscaler/kustomization.yaml +17 -0
- package/carbon/k8s/base/cluster-autoscaler/rbac.yaml +109 -0
- package/carbon/k8s/base/config/configmap.yaml +48 -0
- package/carbon/k8s/base/config/kustomization.yaml +8 -0
- package/carbon/k8s/base/hetzner-ccm/kustomization.yaml +9 -0
- package/carbon/k8s/base/hetzner-csi/kustomization.yaml +9 -0
- package/carbon/k8s/base/kustomization.yaml +43 -0
- package/carbon/k8s/base/namespace.yaml +7 -0
- package/carbon/k8s/base/network-policies.yaml +95 -0
- package/carbon/k8s/base/registry/kustomization.yaml +5 -0
- package/carbon/k8s/base/registry/local-registry.yaml +193 -0
- package/carbon/k8s/base/traefik/certificate.yaml +21 -0
- package/carbon/k8s/base/traefik/configmap.yaml +13 -0
- package/carbon/k8s/base/traefik/deployment.yaml +165 -0
- package/carbon/k8s/base/traefik/ingressroute.yaml +141 -0
- package/carbon/k8s/base/traefik/kustomization.yaml +11 -0
- package/carbon/k8s/base/traefik/middleware.yaml +109 -0
- package/carbon/k8s/base/traefik/network-policy.yaml +92 -0
- package/carbon/k8s/base/traefik/service.yaml +38 -0
- package/carbon/k8s/flux/README.md +49 -0
- package/carbon/k8s/flux/clusters/primary/vibecarbon.yaml +128 -0
- package/carbon/k8s/flux/clusters/standby/vibecarbon.yaml +83 -0
- package/carbon/k8s/gitops/cert-manager-webhook-hetzner/helm-release.yaml +38 -0
- package/carbon/k8s/gitops/cert-manager-webhook-hetzner/helm-repository.yaml +16 -0
- package/carbon/k8s/gitops/cert-manager-webhook-hetzner/kustomization.yaml +10 -0
- package/carbon/k8s/gitops/supabase/helm-release.yaml +66 -0
- package/carbon/k8s/gitops/supabase/helm-repository.yaml +18 -0
- package/carbon/k8s/gitops/supabase/kustomization.yaml +33 -0
- package/carbon/k8s/infra/cert-manager-resources/cluster-issuers-cloudflare.yaml +51 -0
- package/carbon/k8s/infra/cert-manager-resources/cluster-issuers-hetzner.yaml +59 -0
- package/carbon/k8s/infra/cert-manager-resources/cluster-issuers-manual.yaml +43 -0
- package/carbon/k8s/infra/cert-manager-resources/kustomization.yaml +15 -0
- package/carbon/k8s/infra/kustomization.yaml +21 -0
- package/carbon/k8s/infra/traefik-crds/kustomization.yaml +10 -0
- package/carbon/k8s/overlays/local/configmap.yaml +23 -0
- package/carbon/k8s/overlays/local/ingressroute-studio.yaml +104 -0
- package/carbon/k8s/overlays/local/kustomization.yaml +215 -0
- package/carbon/k8s/overlays/local/namespace.yaml +8 -0
- package/carbon/k8s/overlays/local/secrets.yaml +32 -0
- package/carbon/k8s/overlays/production/kustomization.yaml +34 -0
- package/carbon/k8s/test-local.sh +318 -0
- package/carbon/k8s/values/supabase.values.yaml +133 -0
- package/carbon/package.json +154 -0
- package/carbon/runtime.Dockerfile +17 -0
- package/carbon/scripts/_dev-jwt.mjs +45 -0
- package/carbon/scripts/check-rls.ts +53 -0
- package/carbon/scripts/dev-init.js +191 -0
- package/carbon/scripts/dev.js +191 -0
- package/carbon/scripts/docker-down.js +63 -0
- package/carbon/scripts/docker-logs.js +59 -0
- package/carbon/scripts/docker-up.js +222 -0
- package/carbon/scripts/generate-dev-configs.sh +131 -0
- package/carbon/scripts/generate-rss.ts +116 -0
- package/carbon/scripts/generate-sitemap.ts +102 -0
- package/carbon/scripts/k8s-apply.js +71 -0
- package/carbon/scripts/k8s-delete.js +75 -0
- package/carbon/scripts/lib/manifest.js +176 -0
- package/carbon/scripts/secret-scan.mjs +278 -0
- package/carbon/scripts/validate-dev-configs.sh +101 -0
- package/carbon/src/client/App.tsx +202 -0
- package/carbon/src/client/assets/hyperformant-dark.svg +29 -0
- package/carbon/src/client/assets/hyperformant-light.svg +29 -0
- package/carbon/src/client/assets/logos/aider.svg +1 -0
- package/carbon/src/client/assets/logos/antigravity.svg +1 -0
- package/carbon/src/client/assets/logos/bolt.svg +1 -0
- package/carbon/src/client/assets/logos/claude-code.svg +1 -0
- package/carbon/src/client/assets/logos/copilot.svg +1 -0
- package/carbon/src/client/assets/logos/cursor.svg +1 -0
- package/carbon/src/client/assets/logos/gemini-cli.svg +1 -0
- package/carbon/src/client/assets/logos/lovable.svg +1 -0
- package/carbon/src/client/assets/logos/openai-codex.svg +1 -0
- package/carbon/src/client/assets/logos/v0.svg +1 -0
- package/carbon/src/client/assets/logos/windsurf.svg +1 -0
- package/carbon/src/client/assets/vibecarbon-icon.svg +19 -0
- package/carbon/src/client/assets/vibecarbon-logo-dark.svg +29 -0
- package/carbon/src/client/assets/vibecarbon-logo-light.svg +29 -0
- package/carbon/src/client/components/AIIntegrationSection.tsx +120 -0
- package/carbon/src/client/components/AppSidebar.tsx +760 -0
- package/carbon/src/client/components/ArchitectureSection.tsx +46 -0
- package/carbon/src/client/components/CTAFooter.tsx +59 -0
- package/carbon/src/client/components/ComparisonSection.tsx +132 -0
- package/carbon/src/client/components/ContentPanel.tsx +66 -0
- package/carbon/src/client/components/ContentSkeleton.tsx +21 -0
- package/carbon/src/client/components/ErrorBoundary.tsx +46 -0
- package/carbon/src/client/components/FAQSection.tsx +76 -0
- package/carbon/src/client/components/FileUpload.tsx +210 -0
- package/carbon/src/client/components/HeaderActions.tsx +17 -0
- package/carbon/src/client/components/Hero.tsx +608 -0
- package/carbon/src/client/components/ImpersonationBanner.tsx +31 -0
- package/carbon/src/client/components/LanguageSwitcher.tsx +67 -0
- package/carbon/src/client/components/Logo.tsx +87 -0
- package/carbon/src/client/components/LogoStrip.tsx +76 -0
- package/carbon/src/client/components/MetricsStrip.tsx +48 -0
- package/carbon/src/client/components/Nav.tsx +195 -0
- package/carbon/src/client/components/NewsletterSignup.tsx +147 -0
- package/carbon/src/client/components/NotificationDrawer.tsx +171 -0
- package/carbon/src/client/components/PageHeader.tsx +24 -0
- package/carbon/src/client/components/PlanGate.tsx +36 -0
- package/carbon/src/client/components/PricingSection.tsx +371 -0
- package/carbon/src/client/components/SEO.tsx +34 -0
- package/carbon/src/client/components/SmoothScroll.tsx +45 -0
- package/carbon/src/client/components/TechStackSection.tsx +165 -0
- package/carbon/src/client/components/WorkflowSection.tsx +604 -0
- package/carbon/src/client/components/admin/DockerLogs.tsx +276 -0
- package/carbon/src/client/components/admin/PerformanceMetrics.tsx +230 -0
- package/carbon/src/client/components/admin/ServiceCard.tsx +45 -0
- package/carbon/src/client/components/admin/ServicesStatus.tsx +296 -0
- package/carbon/src/client/components/architecture/ArchitectureDiagram.tsx +413 -0
- package/carbon/src/client/components/auth/AuthProvider.tsx +466 -0
- package/carbon/src/client/components/effects/FilmGrainOverlay.tsx +35 -0
- package/carbon/src/client/components/effects/FresnelEdge.tsx +49 -0
- package/carbon/src/client/components/effects/GlowTracker.tsx +46 -0
- package/carbon/src/client/components/effects/SparkBurst.tsx +145 -0
- package/carbon/src/client/components/effects/VGlowEffect.tsx +83 -0
- package/carbon/src/client/components/effects/index.ts +2 -0
- package/carbon/src/client/components/layouts/SidebarLayout.tsx +20 -0
- package/carbon/src/client/components/scroll/ScrollSection.tsx +76 -0
- package/carbon/src/client/components/scroll/ScrollytellingProvider.tsx +81 -0
- package/carbon/src/client/components/scroll/index.ts +2 -0
- package/carbon/src/client/components/ui/accordion.tsx +71 -0
- package/carbon/src/client/components/ui/alert-dialog.tsx +162 -0
- package/carbon/src/client/components/ui/alert.tsx +73 -0
- package/carbon/src/client/components/ui/aspect-ratio.tsx +22 -0
- package/carbon/src/client/components/ui/avatar.tsx +91 -0
- package/carbon/src/client/components/ui/badge.tsx +50 -0
- package/carbon/src/client/components/ui/breadcrumb.tsx +100 -0
- package/carbon/src/client/components/ui/button-group.tsx +78 -0
- package/carbon/src/client/components/ui/button.tsx +120 -0
- package/carbon/src/client/components/ui/calendar.tsx +182 -0
- package/carbon/src/client/components/ui/card.tsx +85 -0
- package/carbon/src/client/components/ui/carousel.tsx +227 -0
- package/carbon/src/client/components/ui/chart.tsx +357 -0
- package/carbon/src/client/components/ui/checkbox.tsx +27 -0
- package/carbon/src/client/components/ui/collapsible.tsx +15 -0
- package/carbon/src/client/components/ui/command.tsx +178 -0
- package/carbon/src/client/components/ui/context-menu.tsx +233 -0
- package/carbon/src/client/components/ui/dialog.tsx +132 -0
- package/carbon/src/client/components/ui/drawer.tsx +118 -0
- package/carbon/src/client/components/ui/dropdown-menu.tsx +242 -0
- package/carbon/src/client/components/ui/empty.tsx +94 -0
- package/carbon/src/client/components/ui/field.tsx +226 -0
- package/carbon/src/client/components/ui/hover-card.tsx +44 -0
- package/carbon/src/client/components/ui/input-group.tsx +146 -0
- package/carbon/src/client/components/ui/input-otp.tsx +83 -0
- package/carbon/src/client/components/ui/input.tsx +20 -0
- package/carbon/src/client/components/ui/item.tsx +188 -0
- package/carbon/src/client/components/ui/kbd.tsx +26 -0
- package/carbon/src/client/components/ui/label.tsx +21 -0
- package/carbon/src/client/components/ui/menubar.tsx +250 -0
- package/carbon/src/client/components/ui/navigation-menu.tsx +155 -0
- package/carbon/src/client/components/ui/pagination.tsx +102 -0
- package/carbon/src/client/components/ui/popover.tsx +75 -0
- package/carbon/src/client/components/ui/progress.tsx +66 -0
- package/carbon/src/client/components/ui/radio-group.tsx +36 -0
- package/carbon/src/client/components/ui/resizable.tsx +46 -0
- package/carbon/src/client/components/ui/scroll-area.tsx +48 -0
- package/carbon/src/client/components/ui/select.tsx +186 -0
- package/carbon/src/client/components/ui/separator.tsx +21 -0
- package/carbon/src/client/components/ui/sheet.tsx +124 -0
- package/carbon/src/client/components/ui/sidebar.tsx +702 -0
- package/carbon/src/client/components/ui/skeleton.tsx +13 -0
- package/carbon/src/client/components/ui/slider.tsx +57 -0
- package/carbon/src/client/components/ui/sonner.tsx +45 -0
- package/carbon/src/client/components/ui/spinner.tsx +15 -0
- package/carbon/src/client/components/ui/switch.tsx +30 -0
- package/carbon/src/client/components/ui/table.tsx +89 -0
- package/carbon/src/client/components/ui/tabs.tsx +73 -0
- package/carbon/src/client/components/ui/textarea.tsx +18 -0
- package/carbon/src/client/components/ui/toggle-group.tsx +87 -0
- package/carbon/src/client/components/ui/toggle.tsx +44 -0
- package/carbon/src/client/components/ui/tooltip.tsx +56 -0
- package/carbon/src/client/hooks/api/index.ts +14 -0
- package/carbon/src/client/hooks/api/useAuthSettings.ts +80 -0
- package/carbon/src/client/hooks/api/useSubscription.ts +87 -0
- package/carbon/src/client/hooks/use-mobile.ts +21 -0
- package/carbon/src/client/hooks/useMousePosition.ts +91 -0
- package/carbon/src/client/hooks/useNotifications.tsx +124 -0
- package/carbon/src/client/hooks/useOrganizationMembers.ts +127 -0
- package/carbon/src/client/hooks/useOrganizations.tsx +230 -0
- package/carbon/src/client/hooks/usePackageManager.ts +69 -0
- package/carbon/src/client/hooks/useReducedMotion.ts +20 -0
- package/carbon/src/client/hooks/useRunningServices.ts +114 -0
- package/carbon/src/client/hooks/useScrollProgress.ts +56 -0
- package/carbon/src/client/index.css +467 -0
- package/carbon/src/client/index.html +56 -0
- package/carbon/src/client/lib/admin-services.ts +151 -0
- package/carbon/src/client/lib/api.ts +32 -0
- package/carbon/src/client/lib/blog.ts +35 -0
- package/carbon/src/client/lib/changelog.ts +33 -0
- package/carbon/src/client/lib/docs-search.ts +101 -0
- package/carbon/src/client/lib/docs.ts +37 -0
- package/carbon/src/client/lib/i18n.ts +32 -0
- package/carbon/src/client/lib/supabase.ts +72 -0
- package/carbon/src/client/lib/tailwind-colors.ts +357 -0
- package/carbon/src/client/lib/theme.ts +117 -0
- package/carbon/src/client/lib/utils.ts +22 -0
- package/carbon/src/client/locales/de.json +529 -0
- package/carbon/src/client/locales/en.json +461 -0
- package/carbon/src/client/locales/es.json +529 -0
- package/carbon/src/client/locales/fr.json +529 -0
- package/carbon/src/client/locales/pt.json +529 -0
- package/carbon/src/client/main.tsx +56 -0
- package/carbon/src/client/mdx.d.ts +13 -0
- package/carbon/src/client/pages/ApiDocs.tsx +76 -0
- package/carbon/src/client/pages/AuthCallback.tsx +34 -0
- package/carbon/src/client/pages/Blog.tsx +167 -0
- package/carbon/src/client/pages/Changelog.tsx +171 -0
- package/carbon/src/client/pages/Charts.tsx +388 -0
- package/carbon/src/client/pages/Checkout.tsx +227 -0
- package/carbon/src/client/pages/Contact.tsx +174 -0
- package/carbon/src/client/pages/Dashboard.tsx +368 -0
- package/carbon/src/client/pages/Docs.tsx +372 -0
- package/carbon/src/client/pages/ForgotPassword.tsx +111 -0
- package/carbon/src/client/pages/Home.tsx +187 -0
- package/carbon/src/client/pages/Legal.tsx +100 -0
- package/carbon/src/client/pages/Login.tsx +408 -0
- package/carbon/src/client/pages/MFAVerify.tsx +156 -0
- package/carbon/src/client/pages/NotFound.tsx +21 -0
- package/carbon/src/client/pages/Onboarding.tsx +246 -0
- package/carbon/src/client/pages/ResetPassword.tsx +200 -0
- package/carbon/src/client/pages/UIComponents.tsx +390 -0
- package/carbon/src/client/pages/admin/ContactSubmissions.tsx +220 -0
- package/carbon/src/client/pages/admin/Dashboard.tsx +24 -0
- package/carbon/src/client/pages/admin/Infrastructure.tsx +257 -0
- package/carbon/src/client/pages/admin/Jobs.tsx +225 -0
- package/carbon/src/client/pages/admin/Logs.tsx +18 -0
- package/carbon/src/client/pages/admin/Newsletter.tsx +300 -0
- package/carbon/src/client/pages/admin/Notifications.tsx +603 -0
- package/carbon/src/client/pages/admin/Organizations.tsx +306 -0
- package/carbon/src/client/pages/admin/Settings.tsx +314 -0
- package/carbon/src/client/pages/admin/Theme.tsx +465 -0
- package/carbon/src/client/pages/admin/Users.tsx +365 -0
- package/carbon/src/client/pages/api-docs.css +156 -0
- package/carbon/src/client/pages/organizations/Details.tsx +200 -0
- package/carbon/src/client/pages/organizations/Members.tsx +402 -0
- package/carbon/src/client/pages/settings/Billing.tsx +473 -0
- package/carbon/src/client/pages/settings/Profile.tsx +160 -0
- package/carbon/src/client/pages/settings/Security.tsx +341 -0
- package/carbon/src/client/public/favicon.svg +19 -0
- package/carbon/src/client/public/robots.txt +8 -0
- package/carbon/src/server/billing/index.ts +104 -0
- package/carbon/src/server/billing/provider.ts +81 -0
- package/carbon/src/server/billing/providers/paddle.ts +314 -0
- package/carbon/src/server/billing/providers/polar.ts +325 -0
- package/carbon/src/server/billing/providers/stripe.ts +233 -0
- package/carbon/src/server/emails/templates.ts +116 -0
- package/carbon/src/server/index.ts +554 -0
- package/carbon/src/server/lib/auth.ts +6 -0
- package/carbon/src/server/lib/email.ts +64 -0
- package/carbon/src/server/lib/env.ts +112 -0
- package/carbon/src/server/lib/errors.ts +21 -0
- package/carbon/src/server/lib/logger.ts +17 -0
- package/carbon/src/server/lib/rate-limiter.ts +288 -0
- package/carbon/src/server/lib/request.ts +34 -0
- package/carbon/src/server/lib/stripe.ts +42 -0
- package/carbon/src/server/lib/supabase.ts +65 -0
- package/carbon/src/server/middleware/requirePlan.ts +80 -0
- package/carbon/src/server/routes/_internal/services-status.ts +958 -0
- package/carbon/src/server/routes/_internal/verify-role.ts +185 -0
- package/carbon/src/server/routes/health.ts +48 -0
- package/carbon/src/server/routes/v1/admin/contact.ts +128 -0
- package/carbon/src/server/routes/v1/admin/jobs.ts +171 -0
- package/carbon/src/server/routes/v1/admin/newsletter.ts +237 -0
- package/carbon/src/server/routes/v1/auth.ts +390 -0
- package/carbon/src/server/routes/v1/billing.ts +718 -0
- package/carbon/src/server/routes/v1/contact.ts +93 -0
- package/carbon/src/server/routes/v1/index.ts +1333 -0
- package/carbon/src/server/routes/v1/newsletter.ts +181 -0
- package/carbon/src/server/routes/v1/performance.ts +157 -0
- package/carbon/src/server/routes/v1/stats.ts +170 -0
- package/carbon/src/server/routes/v1/theme.ts +106 -0
- package/carbon/src/server/routes/webhooks/billing.ts +376 -0
- package/carbon/src/server/routes/webhooks/stripe.ts +276 -0
- package/carbon/src/server/types.ts +11 -0
- package/carbon/src/shared/pricing.ts +155 -0
- package/carbon/src/shared/types.ts +338 -0
- package/carbon/supabase/migrations/00001_init.sql +717 -0
- package/carbon/supabase/migrations/00002_theme_settings.sql +13 -0
- package/carbon/supabase/migrations/00003_pg_cron.sql +121 -0
- package/carbon/supabase/migrations/00004_contact_newsletter.sql +81 -0
- package/carbon/supabase/migrations/00005_localization_languages.sql +22 -0
- package/carbon/supabase/seed.sql +16 -0
- package/carbon/tests/_helpers/app.ts +45 -0
- package/carbon/tests/_helpers/env.ts +37 -0
- package/carbon/tests/_helpers/factories.ts +69 -0
- package/carbon/tests/_helpers/jwt.ts +23 -0
- package/carbon/tests/_helpers/setup-integration.ts +20 -0
- package/carbon/tests/_helpers/setup-rtl.ts +12 -0
- package/carbon/tests/component/ErrorBoundary.test.tsx +53 -0
- package/carbon/tests/component/use-auth-settings.test.tsx +119 -0
- package/carbon/tests/integration/server/routes/contact.test.ts +162 -0
- package/carbon/tests/integration/server/routes/health.test.ts +61 -0
- package/carbon/tests/structural/i18n-parity.test.ts +42 -0
- package/carbon/tests/unit/client/utils.test.ts +49 -0
- package/carbon/tests/unit/shared/pricing.test.ts +93 -0
- package/carbon/tsconfig.json +27 -0
- package/carbon/tsconfig.server.json +27 -0
- package/carbon/tsconfig.test.json +9 -0
- package/carbon/vite.config.ts +110 -0
- package/carbon/vitest.config.ts +74 -0
- package/carbon/volumes/db/jwt.sql +57 -0
- package/carbon/volumes/db/metabase-init.sh +29 -0
- package/carbon/volumes/db/n8n-init.sh +25 -0
- package/carbon/volumes/db/realtime.sql +33 -0
- package/carbon/volumes/db/roles.sql +93 -0
- package/carbon/volumes/db/set-passwords.sh +12 -0
- package/carbon/volumes/db/super-admin.dev.sql +113 -0
- package/carbon/volumes/db/super-admin.generated.sql +113 -0
- package/carbon/volumes/db/super-admin.sql +114 -0
- package/carbon/volumes/grafana/dashboards/logs.json +179 -0
- package/carbon/volumes/grafana/dashboards/overview.json +523 -0
- package/carbon/volumes/grafana/dashboards/postgresql.json +337 -0
- package/carbon/volumes/grafana/dashboards.dev/logs.json +179 -0
- package/carbon/volumes/grafana/dashboards.dev/overview.json +156 -0
- package/carbon/volumes/grafana/dashboards.dev/postgresql.json +337 -0
- package/carbon/volumes/grafana/provisioning/dashboards/dashboards.dev.yml +16 -0
- package/carbon/volumes/grafana/provisioning/dashboards/dashboards.yml +16 -0
- package/carbon/volumes/grafana/provisioning/datasources/datasources.yml +43 -0
- package/carbon/volumes/kong/docker-entrypoint.sh +9 -0
- package/carbon/volumes/kong/kong.yml +208 -0
- package/carbon/volumes/loki/loki-config.yml +58 -0
- package/carbon/volumes/n8n/hooks.js +131 -0
- package/carbon/volumes/n8n/scripts/setup.sh +66 -0
- package/carbon/volumes/prometheus/prometheus.yml +43 -0
- package/carbon/volumes/promtail/promtail-config.yml +64 -0
- package/carbon/volumes/traefik/middlewares.dev.yml +83 -0
- package/carbon/volumes/traefik/middlewares.yml +95 -0
- package/carbon/volumes/traefik/vite-dev.yml +20 -0
- package/package.json +95 -0
- package/src/access.js +354 -0
- package/src/activate.js +187 -0
- package/src/add.js +718 -0
- package/src/backup.js +786 -0
- package/src/cli.js +350 -0
- package/src/configure.js +967 -0
- package/src/console.js +155 -0
- package/src/create.js +1499 -0
- package/src/deploy.js +311 -0
- package/src/destroy.js +2033 -0
- package/src/diagnose.js +735 -0
- package/src/down.js +80 -0
- package/src/failover.js +1032 -0
- package/src/lib/backup-s3.js +179 -0
- package/src/lib/build.js +33 -0
- package/src/lib/checksum.js +28 -0
- package/src/lib/ci-setup.js +666 -0
- package/src/lib/cli/help.js +129 -0
- package/src/lib/cli/parse-flags.js +160 -0
- package/src/lib/cli/select-action.js +65 -0
- package/src/lib/cli/select-environment.js +108 -0
- package/src/lib/cli/tty-guard.js +75 -0
- package/src/lib/cloudflare.js +447 -0
- package/src/lib/colors.js +52 -0
- package/src/lib/command.js +361 -0
- package/src/lib/config.js +359 -0
- package/src/lib/cost.js +103 -0
- package/src/lib/deploy/bundle.js +231 -0
- package/src/lib/deploy/compose/acme-verify.js +121 -0
- package/src/lib/deploy/compose/build-args.js +78 -0
- package/src/lib/deploy/compose/ha.js +1874 -0
- package/src/lib/deploy/compose/index.js +1294 -0
- package/src/lib/deploy/compose/reconcile.js +74 -0
- package/src/lib/deploy/github.js +382 -0
- package/src/lib/deploy/image.js +191 -0
- package/src/lib/deploy/index.js +119 -0
- package/src/lib/deploy/k8s/LICENSE +99 -0
- package/src/lib/deploy/k8s/gitops-deploy.js +298 -0
- package/src/lib/deploy/k8s/ha/index.js +1000 -0
- package/src/lib/deploy/k8s/index.js +62 -0
- package/src/lib/deploy/k8s/k3s.js +2515 -0
- package/src/lib/deploy/orchestrator.js +1401 -0
- package/src/lib/deploy/prompts.js +545 -0
- package/src/lib/deploy/remote-build.js +130 -0
- package/src/lib/deploy/state.js +120 -0
- package/src/lib/deploy/utils.js +328 -0
- package/src/lib/deploy-logger.js +93 -0
- package/src/lib/dns-propagation.js +48 -0
- package/src/lib/environment.js +58 -0
- package/src/lib/fetch-retry.js +103 -0
- package/src/lib/github-environments.js +335 -0
- package/src/lib/hetzner-dns.js +377 -0
- package/src/lib/hetzner-guided-setup.js +275 -0
- package/src/lib/host-keys.js +37 -0
- package/src/lib/iac/cloud-init.js +52 -0
- package/src/lib/iac/index.js +325 -0
- package/src/lib/iac/programs/hetzner-compose.js +130 -0
- package/src/lib/iac/programs/hetzner-k8s.js +320 -0
- package/src/lib/kubectl.js +81 -0
- package/src/lib/licensing/index.js +259 -0
- package/src/lib/licensing/tiers.js +181 -0
- package/src/lib/licensing/validator.js +171 -0
- package/src/lib/merge-package-json.js +90 -0
- package/src/lib/operator-ip.js +381 -0
- package/src/lib/package-manager.js +111 -0
- package/src/lib/perf.js +71 -0
- package/src/lib/project-guard.js +39 -0
- package/src/lib/project.js +334 -0
- package/src/lib/providers/base.js +276 -0
- package/src/lib/providers/hetzner-s3.js +656 -0
- package/src/lib/providers/hetzner.js +755 -0
- package/src/lib/providers/index.js +164 -0
- package/src/lib/s3.js +510 -0
- package/src/lib/secret-scan.js +583 -0
- package/src/lib/secrets.js +63 -0
- package/src/lib/server-types.js +195 -0
- package/src/lib/shell.js +91 -0
- package/src/lib/ssh.js +241 -0
- package/src/lib/tracker.js +242 -0
- package/src/lib/upgrade-policy.js +170 -0
- package/src/lib/validators.js +105 -0
- package/src/lib/version.js +5 -0
- package/src/remove.js +292 -0
- package/src/reset.js +97 -0
- package/src/restore.js +871 -0
- package/src/scale.js +1734 -0
- package/src/shell.js +222 -0
- package/src/status.js +981 -0
- package/src/up.js +264 -0
- package/src/upgrade.js +721 -0
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
{
|
|
2
|
+
"common": {
|
|
3
|
+
"back": "Volver",
|
|
4
|
+
"cancel": "Cancelar",
|
|
5
|
+
"continue": "Continuar",
|
|
6
|
+
"create": "Crear",
|
|
7
|
+
"creating": "Creando...",
|
|
8
|
+
"delete": "Eliminar",
|
|
9
|
+
"loading": "Cargando...",
|
|
10
|
+
"save": "Guardar cambios",
|
|
11
|
+
"settings": "Configuración",
|
|
12
|
+
"signOut": "Cerrar sesión",
|
|
13
|
+
"skipForNow": "Omitir por ahora",
|
|
14
|
+
"toggleTheme": "Cambiar tema",
|
|
15
|
+
"free": "Gratis",
|
|
16
|
+
"popular": "Popular",
|
|
17
|
+
"manage": "Gestionar",
|
|
18
|
+
"update": "Actualizar",
|
|
19
|
+
"remove": "Eliminar"
|
|
20
|
+
},
|
|
21
|
+
"nav": {
|
|
22
|
+
"docs": "Documentación",
|
|
23
|
+
"apiDocs": "API Docs",
|
|
24
|
+
"dashboard": "Dashboard",
|
|
25
|
+
"logIn": "Iniciar sesión",
|
|
26
|
+
"signUp": "Registrarse"
|
|
27
|
+
},
|
|
28
|
+
"sidebar": {
|
|
29
|
+
"dashboard": "Dashboard",
|
|
30
|
+
"uiComponents": "Formularios",
|
|
31
|
+
"charts": "Gráficos",
|
|
32
|
+
"menu": "Menú",
|
|
33
|
+
"selectOrganization": "Seleccionar organización",
|
|
34
|
+
"createOrganization": "Crear organización",
|
|
35
|
+
"userSettings": "Configuración de usuario",
|
|
36
|
+
"profile": "Perfil",
|
|
37
|
+
"billing": "Facturación",
|
|
38
|
+
"security": "Seguridad",
|
|
39
|
+
"orgDetails": "Detalles de la org.",
|
|
40
|
+
"members": "Miembros",
|
|
41
|
+
"superAdmin": "Super Admin",
|
|
42
|
+
"overview": "Resumen",
|
|
43
|
+
"organizations": "Organizaciones",
|
|
44
|
+
"users": "Usuarios",
|
|
45
|
+
"notifications": "Notificaciones",
|
|
46
|
+
"logs": "Registros",
|
|
47
|
+
"theme": "Tema",
|
|
48
|
+
"settings": "Configuración"
|
|
49
|
+
},
|
|
50
|
+
"createOrg": {
|
|
51
|
+
"title": "Crear organización",
|
|
52
|
+
"description": "Agrega una nueva organización para gestionar tu equipo y proyectos.",
|
|
53
|
+
"nameLabel": "Nombre de la organización",
|
|
54
|
+
"namePlaceholder": "Ingresa el nombre de la organización"
|
|
55
|
+
},
|
|
56
|
+
"auth": {
|
|
57
|
+
"checkYourEmail": "Revisa tu correo",
|
|
58
|
+
"createAccount": "Crear cuenta",
|
|
59
|
+
"signIn": "Iniciar sesión",
|
|
60
|
+
"signUp": "Registrarse",
|
|
61
|
+
"signInAction": "Iniciar sesión",
|
|
62
|
+
"magicLinkSent": "Enviamos un enlace de acceso a {{email}}",
|
|
63
|
+
"poweredBy": "Desarrollado por Supabase Auth",
|
|
64
|
+
"magicLinkExpiry": "Haz clic en el enlace de tu correo para iniciar sesión. El enlace expira en 1 hora.",
|
|
65
|
+
"backToSignIn": "Volver al inicio de sesión",
|
|
66
|
+
"passwordInstead": "Iniciar sesión con contraseña",
|
|
67
|
+
"namePlaceholder": "Nombre",
|
|
68
|
+
"emailPlaceholder": "Correo electrónico",
|
|
69
|
+
"passwordPlaceholder": "Contraseña",
|
|
70
|
+
"sending": "Enviando...",
|
|
71
|
+
"sendMagicLink": "Enviar magic link",
|
|
72
|
+
"signInWithMagicLink": "Iniciar sesión con magic link",
|
|
73
|
+
"forgotPassword": "¿Olvidaste tu contraseña?",
|
|
74
|
+
"orContinueWith": "O continúa con",
|
|
75
|
+
"alreadyHaveAccount": "¿Ya tienes una cuenta?",
|
|
76
|
+
"dontHaveAccount": "¿No tienes una cuenta?",
|
|
77
|
+
"authFailed": "Error de autenticación",
|
|
78
|
+
"magicLinkFailed": "Error al enviar el magic link",
|
|
79
|
+
"oauthFailed": "Error con OAuth"
|
|
80
|
+
},
|
|
81
|
+
"dashboard": {
|
|
82
|
+
"title": "Dashboard",
|
|
83
|
+
"welcomeBack": "¡Bienvenido de nuevo!",
|
|
84
|
+
"signedInAs": "Sesión iniciada como",
|
|
85
|
+
"nextSteps": "Primeros pasos",
|
|
86
|
+
"nextStepsDescription": "Configura las integraciones restantes de tu aplicación.",
|
|
87
|
+
"exploreStudio": "Explorar Supabase Studio",
|
|
88
|
+
"configureOAuth": "Configurar proveedores OAuth",
|
|
89
|
+
"setupStripe": "Configurar facturación con Stripe",
|
|
90
|
+
"deployProduction": "Desplegar en producción",
|
|
91
|
+
"totalUsers": "Usuarios totales",
|
|
92
|
+
"newSignups": "Nuevos registros",
|
|
93
|
+
"activeUsers": "Usuarios activos",
|
|
94
|
+
"organizations": "Organizaciones",
|
|
95
|
+
"vsLastMonth": "{{diff}} vs el mes pasado",
|
|
96
|
+
"newThisMonth": "+{{count}} nuevos este mes",
|
|
97
|
+
"greeting": {
|
|
98
|
+
"morning": "Buenos días",
|
|
99
|
+
"afternoon": "Buenas tardes",
|
|
100
|
+
"evening": "Buenas noches"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"profile": {
|
|
104
|
+
"title": "Perfil",
|
|
105
|
+
"description": "Gestiona tu información personal",
|
|
106
|
+
"profileInfo": "Información del perfil",
|
|
107
|
+
"profileInfoDescription": "Actualiza tus datos personales y foto de perfil.",
|
|
108
|
+
"fullName": "Nombre completo",
|
|
109
|
+
"namePlaceholder": "Ingresa tu nombre",
|
|
110
|
+
"email": "Correo electrónico",
|
|
111
|
+
"emailChangeHint": "Contacta al soporte para cambiar tu dirección de correo.",
|
|
112
|
+
"account": "Cuenta",
|
|
113
|
+
"accountDescription": "Gestiona la configuración de tu cuenta.",
|
|
114
|
+
"deleteAccount": "Eliminar cuenta",
|
|
115
|
+
"deleteAccountDescription": "Elimina permanentemente tu cuenta y todos los datos asociados.",
|
|
116
|
+
"deleteAccountConfirmTitle": "¿Eliminar tu cuenta?",
|
|
117
|
+
"deleteAccountConfirmDescription": "Esta acción no se puede deshacer. Tu cuenta, datos de perfil y toda la información asociada serán eliminados permanentemente.",
|
|
118
|
+
"deleteAccountConfirmButton": "Eliminar mi cuenta",
|
|
119
|
+
"superAdminCannotDelete": "Las cuentas de super administrador no pueden eliminarse. Elimina el rol super_admin primero y vuelve a intentarlo."
|
|
120
|
+
},
|
|
121
|
+
"billing": {
|
|
122
|
+
"title": "Facturación",
|
|
123
|
+
"description": "Configuración de suscripción y pagos",
|
|
124
|
+
"notConfigured": "La facturación no está configurada. Define <code>STRIPE_SECRET_KEY</code> y <code>STRIPE_WEBHOOK_SECRET</code> en tu entorno para habilitarla.",
|
|
125
|
+
"currentPlan": "Plan actual",
|
|
126
|
+
"onPlan": "Estás en el plan <strong>{{plan}}</strong>.",
|
|
127
|
+
"trial": "Prueba",
|
|
128
|
+
"cancelsOn": "Se cancela el {{date}}",
|
|
129
|
+
"subscriptionEndsOn": "Tu suscripción finalizará el ",
|
|
130
|
+
"nextBillingDate": "Próxima fecha de facturación: ",
|
|
131
|
+
"changePlan": "Cambiar plan",
|
|
132
|
+
"choosePlan": "Elegir un plan",
|
|
133
|
+
"changePlanDescription": "Cambia a un plan diferente a través del portal del cliente.",
|
|
134
|
+
"choosePlanDescription": "Selecciona el plan que mejor se adapte a ti.",
|
|
135
|
+
"currentPlanButton": "Plan actual",
|
|
136
|
+
"switchPlan": "Cambiar plan",
|
|
137
|
+
"upgrade": "Actualizar",
|
|
138
|
+
"paymentMethod": "Método de pago",
|
|
139
|
+
"paymentMethodDescription": "Gestiona tu información de pago a través del portal del cliente.",
|
|
140
|
+
"paymentOnFile": "Método de pago registrado",
|
|
141
|
+
"manageInPortal": "Gestionar en el portal del cliente",
|
|
142
|
+
"noPaymentMethod": "Sin método de pago",
|
|
143
|
+
"addCardDescription": "Agrega una tarjeta para agilizar el proceso de pago",
|
|
144
|
+
"addCard": "Agregar tarjeta",
|
|
145
|
+
"billingHistory": "Historial de facturación",
|
|
146
|
+
"billingHistoryDescription": "Consulta y descarga tus facturas anteriores.",
|
|
147
|
+
"viewInPortal": "Consulta tu historial de facturación completo en el portal del cliente.",
|
|
148
|
+
"viewInvoices": "Ver facturas",
|
|
149
|
+
"noBillingHistory": "Aún no hay historial de facturación",
|
|
150
|
+
"invoicesAppearHere": "Tus facturas aparecerán aquí cuando actualices tu plan."
|
|
151
|
+
},
|
|
152
|
+
"security": {
|
|
153
|
+
"title": "Seguridad",
|
|
154
|
+
"description": "Gestión de contraseña, MFA y sesiones",
|
|
155
|
+
"mfaRequired": "Se requiere autenticación de dos factores",
|
|
156
|
+
"mfaRequiredDescription": "Tu organización requiere autenticación de dos factores. Configúrala para continuar.",
|
|
157
|
+
"twoFactor": "Autenticación de dos factores",
|
|
158
|
+
"twoFactorDescription": "Añade una capa adicional de seguridad a tu cuenta solicitando un código de verificación de tu aplicación de autenticación.",
|
|
159
|
+
"mfaEnabled": "La autenticación de dos factores está activada",
|
|
160
|
+
"mfaEnabledDescription": "Tu cuenta está protegida con una aplicación de autenticación.",
|
|
161
|
+
"enrolledAuthenticators": "Autenticadores registrados",
|
|
162
|
+
"authenticatorApp": "Aplicación de autenticación",
|
|
163
|
+
"mfaNotEnabled": "La autenticación de dos factores no está activada",
|
|
164
|
+
"mfaNotEnabledDescription": "Activa el 2FA para añadir una capa adicional de seguridad a tu cuenta.",
|
|
165
|
+
"enableMfa": "Activar autenticación de dos factores",
|
|
166
|
+
"settingUp": "Configurando...",
|
|
167
|
+
"mfaRequiredByOrg": "Tu organización requiere autenticación de dos factores.",
|
|
168
|
+
"setupMfa": "Configurar autenticación de dos factores",
|
|
169
|
+
"setupMfaDescription": "Escanea el código QR con tu aplicación de autenticación y luego ingresa el código de verificación.",
|
|
170
|
+
"cantScan": "¿No puedes escanear? Ingresa este código manualmente:",
|
|
171
|
+
"enterCode": "Ingresa el código de verificación",
|
|
172
|
+
"verifying": "Verificando...",
|
|
173
|
+
"verifyAndEnable": "Verificar y activar",
|
|
174
|
+
"disableMfa": "¿Desactivar la autenticación de dos factores?",
|
|
175
|
+
"disableMfaDescription": "Esto eliminará el autenticador de tu cuenta. Puedes volver a configurarlo en cualquier momento.",
|
|
176
|
+
"disableMfaWarning": "Advertencia: tu organización requiere autenticación de dos factores. Deberás configurarla nuevamente antes de poder acceder a tu cuenta.",
|
|
177
|
+
"disabling": "Desactivando...",
|
|
178
|
+
"disable2fa": "Desactivar 2FA"
|
|
179
|
+
},
|
|
180
|
+
"onboarding": {
|
|
181
|
+
"getStarted": "Comenzar",
|
|
182
|
+
"steps": {
|
|
183
|
+
"profile": "Perfil",
|
|
184
|
+
"organization": "Organización",
|
|
185
|
+
"plan": "Plan",
|
|
186
|
+
"invite": "Invitar"
|
|
187
|
+
},
|
|
188
|
+
"profile": {
|
|
189
|
+
"title": "¡Bienvenido! ¿Cómo te llamamos?",
|
|
190
|
+
"description": "Esto nos ayuda a personalizar tu experiencia.",
|
|
191
|
+
"fullName": "Nombre completo",
|
|
192
|
+
"placeholder": "Jane Smith"
|
|
193
|
+
},
|
|
194
|
+
"org": {
|
|
195
|
+
"title": "Crea tu organización",
|
|
196
|
+
"description": "Las organizaciones te ayudan a gestionar equipos y proyectos.",
|
|
197
|
+
"nameLabel": "Nombre de la organización",
|
|
198
|
+
"placeholder": "Acme Inc",
|
|
199
|
+
"error": "Error al crear la organización"
|
|
200
|
+
},
|
|
201
|
+
"plan": {
|
|
202
|
+
"title": "Elige tu plan",
|
|
203
|
+
"description": "Siempre puedes cambiarlo más adelante.",
|
|
204
|
+
"continueWithFree": "Continuar con Gratis",
|
|
205
|
+
"continueToCheckout": "Continuar al pago",
|
|
206
|
+
"dayTrial": "Prueba de {{days}} días"
|
|
207
|
+
},
|
|
208
|
+
"invite": {
|
|
209
|
+
"title": "Invita a tu equipo",
|
|
210
|
+
"description": "Agrega miembros del equipo por correo. También puedes hacerlo más tarde.",
|
|
211
|
+
"emailLabel": "Direcciones de correo",
|
|
212
|
+
"placeholder": "alice@example.com, bob@example.com",
|
|
213
|
+
"hint": "Separa múltiples correos con comas.",
|
|
214
|
+
"finish": "Finalizar configuración"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"charts": {
|
|
218
|
+
"title": "Gráficos",
|
|
219
|
+
"revenue": "Ingresos",
|
|
220
|
+
"revenueDescription": "Ingresos mensuales, ene–jun",
|
|
221
|
+
"revenueSparkline": "$29.8k",
|
|
222
|
+
"newUsers": "Nuevos usuarios",
|
|
223
|
+
"activeUsers": "Usuarios activos",
|
|
224
|
+
"activeUsersDescription": "Registros semanales — nuevos vs. recurrentes",
|
|
225
|
+
"mrr": "MRR",
|
|
226
|
+
"mrrGrowth": "Crecimiento MRR",
|
|
227
|
+
"mrrGrowthDescription": "Ingresos mensuales recurrentes acumulados",
|
|
228
|
+
"mrrSparkline": "$31k",
|
|
229
|
+
"grossMargin": "Margen bruto",
|
|
230
|
+
"grossMarginSparkline": "53%",
|
|
231
|
+
"planDistribution": "Distribución de planes",
|
|
232
|
+
"planDistributionDescription": "Desglose por nivel de suscripción",
|
|
233
|
+
"featureUsage": "Uso de funciones",
|
|
234
|
+
"featureUsageDescription": "Adopción en 6 áreas del producto",
|
|
235
|
+
"revenueAndMargin": "Ingresos y margen",
|
|
236
|
+
"revenueAndMarginDescription": "Ingresos mensuales con % de margen bruto"
|
|
237
|
+
},
|
|
238
|
+
"theme": {
|
|
239
|
+
"title": "Tema",
|
|
240
|
+
"description": "Personaliza los colores de marca y la apariencia de la app",
|
|
241
|
+
"lightMode": "Modo claro",
|
|
242
|
+
"darkMode": "Modo oscuro",
|
|
243
|
+
"borderRadius": "Radio de borde",
|
|
244
|
+
"resetToDefaults": "Restablecer valores predeterminados",
|
|
245
|
+
"saveChanges": "Guardar cambios",
|
|
246
|
+
"saved": "Tema guardado",
|
|
247
|
+
"saveFailed": "Error al guardar el tema",
|
|
248
|
+
"smoothScrolling": "Desplazamiento suave",
|
|
249
|
+
"smoothScrollEnabled": "Activar desplazamiento suave",
|
|
250
|
+
"smoothScrollIntensity": "Intensidad",
|
|
251
|
+
"smoothScrollDuration": "Duración de {{value}}s",
|
|
252
|
+
"colorSlots": {
|
|
253
|
+
"gradientStart": "Inicio del fondo",
|
|
254
|
+
"gradientEnd": "Fin del fondo",
|
|
255
|
+
"card": "Tarjeta",
|
|
256
|
+
"primary": "Primario",
|
|
257
|
+
"primaryDim": "Primario atenuado",
|
|
258
|
+
"primaryForeground": "Texto primario",
|
|
259
|
+
"secondaryAccent": "Acento",
|
|
260
|
+
"secondaryAccentForeground": "Texto de acento",
|
|
261
|
+
"destructive": "Destructivo",
|
|
262
|
+
"warning": "Advertencia",
|
|
263
|
+
"success": "Éxito"
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
"admin": {
|
|
267
|
+
"impersonating": "Viendo como {{email}}",
|
|
268
|
+
"stopImpersonating": "Detener",
|
|
269
|
+
"loginAsUser": "Iniciar sesión como usuario",
|
|
270
|
+
"impersonateConfirm": "Iniciarás sesión como este usuario. Puedes volver a tu cuenta de administrador en cualquier momento.",
|
|
271
|
+
"cannotImpersonate": "No se puede suplantar a este usuario"
|
|
272
|
+
},
|
|
273
|
+
"landing": {
|
|
274
|
+
"hero": {
|
|
275
|
+
"badge": "Totalmente automatizado · Self-Hosted",
|
|
276
|
+
"headline1": "Grado profesional",
|
|
277
|
+
"subheading": "Arquitectura segura, escalable y totalmente automatizada, y kit de inicio SaaS meticulosamente diseñado para IA.",
|
|
278
|
+
"getUpdates": "Recibir actualizaciones"
|
|
279
|
+
},
|
|
280
|
+
"metrics": {
|
|
281
|
+
"time": {
|
|
282
|
+
"value": "< 5 min",
|
|
283
|
+
"label": "De cero a producción"
|
|
284
|
+
},
|
|
285
|
+
"services": {
|
|
286
|
+
"value": "12 servicios",
|
|
287
|
+
"label": "Aprovisionados automáticamente"
|
|
288
|
+
},
|
|
289
|
+
"config": {
|
|
290
|
+
"value": "Cero config",
|
|
291
|
+
"label": "Seguridad desde el primer momento"
|
|
292
|
+
},
|
|
293
|
+
"commands": {
|
|
294
|
+
"value": "3 comandos",
|
|
295
|
+
"label": "Crear · desarrollar · desplegar"
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"logoStrip": {
|
|
299
|
+
"label": "Optimizado para las herramientas que usas"
|
|
300
|
+
},
|
|
301
|
+
"workflow": {
|
|
302
|
+
"headline": "Tres comandos para llegar a producción",
|
|
303
|
+
"subheading": "De cero a infraestructura lista para producción en minutos, no en meses",
|
|
304
|
+
"create": {
|
|
305
|
+
"label": "Crear",
|
|
306
|
+
"description": "App full-stack con autenticación, base de datos, API y manifiestos de Kubernetes — lista para usar."
|
|
307
|
+
},
|
|
308
|
+
"develop": {
|
|
309
|
+
"label": "Desarrollar",
|
|
310
|
+
"description": "Levanta todo tu entorno de desarrollo: base de datos, autenticación, API y frontend con recarga en caliente."
|
|
311
|
+
},
|
|
312
|
+
"deploy": {
|
|
313
|
+
"label": "Desplegar",
|
|
314
|
+
"description": "Despliega a producción con auto-escalado, alta disponibilidad, monitoreo, CI/CD y más."
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
|
+
"techStack": {
|
|
318
|
+
"headline": "Construido sobre tecnología que",
|
|
319
|
+
"headlineHighlight": "funciona",
|
|
320
|
+
"subheading": "Cada capa del stack está probada a escala — desde UI hasta orquestación.",
|
|
321
|
+
"addOnsLabel": "Complementos opcionales",
|
|
322
|
+
"items": {
|
|
323
|
+
"react": "UI ultra rápida",
|
|
324
|
+
"typescript": "Tipado de extremo a extremo",
|
|
325
|
+
"hono": "Framework servidor de 13KB",
|
|
326
|
+
"supabase": "Auth, DB y tiempo real",
|
|
327
|
+
"tailwind": "Estilos basados en utilidades",
|
|
328
|
+
"shadcn": "50+ componentes listos",
|
|
329
|
+
"tanstack": "Obtención de datos inteligente",
|
|
330
|
+
"stripe": "Pagos y facturación",
|
|
331
|
+
"mdx": "Blog, docs y changelog",
|
|
332
|
+
"i18next": "Soporte multiidioma",
|
|
333
|
+
"docker": "Despliegues en contenedores",
|
|
334
|
+
"kubernetes": "Orquestación en producción"
|
|
335
|
+
},
|
|
336
|
+
"addOns": {
|
|
337
|
+
"observability": {
|
|
338
|
+
"description": "Grafana, Prometheus & Loki — métricas, registros y dashboards preconfigurados."
|
|
339
|
+
},
|
|
340
|
+
"metabase": {
|
|
341
|
+
"description": "Business intelligence self-hosted con acceso directo a tu base de datos."
|
|
342
|
+
},
|
|
343
|
+
"n8n": {
|
|
344
|
+
"description": "Automatización visual de flujos de trabajo para tareas en segundo plano, webhooks e integraciones."
|
|
345
|
+
},
|
|
346
|
+
"redis": {
|
|
347
|
+
"description": "Caché en memoria y colas para cargas de trabajo de alto rendimiento."
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
"architecture": {
|
|
352
|
+
"badge": "Arquitectura",
|
|
353
|
+
"headline": "Stack completo, perfeccionado.",
|
|
354
|
+
"subheading": "De React a PostgreSQL — configurado y conectado desde el primer momento."
|
|
355
|
+
},
|
|
356
|
+
"comparison": {
|
|
357
|
+
"headline": "Escalable y",
|
|
358
|
+
"headlineHighlight": "seguro.",
|
|
359
|
+
"subheading": "Lanza rápido — sin que todo se derrumbe.",
|
|
360
|
+
"hacked": {
|
|
361
|
+
"risk": "Vulnerado por hackers",
|
|
362
|
+
"protection": "Seguridad reforzada",
|
|
363
|
+
"how": "Proxy Traefik, reglas de firewall, cabeceras CSP, límite de velocidad"
|
|
364
|
+
},
|
|
365
|
+
"exposed": {
|
|
366
|
+
"risk": "Base de datos expuesta",
|
|
367
|
+
"protection": "Aislamiento de base de datos",
|
|
368
|
+
"how": "Base de datos aislada en red, seguridad a nivel de fila, credenciales con alcance limitado"
|
|
369
|
+
},
|
|
370
|
+
"traffic": {
|
|
371
|
+
"risk": "No soporta el tráfico",
|
|
372
|
+
"protection": "Auto-escalado",
|
|
373
|
+
"how": "Kubernetes autoscaling en pods y nodos VPS"
|
|
374
|
+
},
|
|
375
|
+
"redundancy": {
|
|
376
|
+
"risk": "Sin redundancia",
|
|
377
|
+
"protection": "Alta disponibilidad",
|
|
378
|
+
"how": "Multi-región con monitoreo de salud y failover con un solo comando"
|
|
379
|
+
},
|
|
380
|
+
"visibility": {
|
|
381
|
+
"risk": "Sin visibilidad",
|
|
382
|
+
"protection": "Observabilidad total",
|
|
383
|
+
"how": "Grafana & Prometheus nativos, configurados por entorno"
|
|
384
|
+
},
|
|
385
|
+
"dataLoss": {
|
|
386
|
+
"risk": "Pérdida de datos",
|
|
387
|
+
"protection": "Copias de seguridad automáticas",
|
|
388
|
+
"how": "Copias de seguridad programadas en S3 con restauración en un solo comando"
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
"aiIntegration": {
|
|
392
|
+
"headline1": "Funciona con",
|
|
393
|
+
"headlineHighlight": "cualquier herramienta de IA",
|
|
394
|
+
"headline2": "que uses",
|
|
395
|
+
"subheading": "Cada proyecto incluye archivos de instrucciones específicos para cada herramienta y barreras de seguridad integradas. Tu IA escribe código de calidad de producción que sigue tus políticas de seguridad desde el primer día.",
|
|
396
|
+
"footer1": "Usa cualquier IA para construir — Vibecarbon se encarga de la",
|
|
397
|
+
"footer2": "infraestructura y la seguridad",
|
|
398
|
+
"docs": {
|
|
399
|
+
"title": "Documentación nativa para IA",
|
|
400
|
+
"description": "CLAUDE.md, AGENTS.md, .windsurfrules, instrucciones de Copilot y reglas de Cursor se incluyen en cada proyecto — tu asistente de IA obtiene el contexto completo del código desde el primer prompt."
|
|
401
|
+
},
|
|
402
|
+
"guardrails": {
|
|
403
|
+
"title": "Barreras de seguridad integradas",
|
|
404
|
+
"description": "AGENTS.md codifica reglas obligatorias MUST/NEVER para RLS, verificaciones de autenticación, selección de clientes y refuerzo de infraestructura — así el código generado por IA sigue tus políticas de seguridad por defecto."
|
|
405
|
+
},
|
|
406
|
+
"architecture": {
|
|
407
|
+
"title": "Arquitectura limpia",
|
|
408
|
+
"description": "Separación clara de código de cliente, servidor y compartido con interfaces tipadas. Los agentes de IA pueden navegar, entender y extender tu app sin alucinaciones de estructura."
|
|
409
|
+
},
|
|
410
|
+
"patterns": {
|
|
411
|
+
"title": "Patrones predecibles",
|
|
412
|
+
"description": "Cada ruta valida con Zod, cada consulta usa el cliente Supabase correcto, cada tabla tiene RLS. Los agentes de IA replican los mismos patrones correctos en todo momento."
|
|
413
|
+
}
|
|
414
|
+
},
|
|
415
|
+
"pricing": {
|
|
416
|
+
"headline1": "Del",
|
|
417
|
+
"headlineSketch": "boceto",
|
|
418
|
+
"headline2": "a la",
|
|
419
|
+
"headlineScale": "escala.",
|
|
420
|
+
"subheading": "El mismo carbono, distinta forma. Un solo pago, acceso de por vida.",
|
|
421
|
+
"popular": "Más popular",
|
|
422
|
+
"units": {
|
|
423
|
+
"forever": "siempre",
|
|
424
|
+
"oneTime": "pago único"
|
|
425
|
+
},
|
|
426
|
+
"graphite": {
|
|
427
|
+
"tagline": "Diseña y esboza localmente",
|
|
428
|
+
"cta": "Empezar a esbozar",
|
|
429
|
+
"features": {
|
|
430
|
+
"unlimitedProjects": "Proyectos ilimitados",
|
|
431
|
+
"localDev": "Entorno de desarrollo local completo",
|
|
432
|
+
"addOns": "Todos los complementos incluidos",
|
|
433
|
+
"supabase": "Stack completo de Supabase",
|
|
434
|
+
"community": "Soporte comunitario",
|
|
435
|
+
"production": "Despliegue en producción",
|
|
436
|
+
"ha": "Alta disponibilidad",
|
|
437
|
+
"k8s": "Kubernetes autoscaling"
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
"diamond": {
|
|
441
|
+
"tagline": "Automatización completa para indie hackers y startups.",
|
|
442
|
+
"cta": "Obtener Diamond",
|
|
443
|
+
"features": {
|
|
444
|
+
"graphite": "Todo lo de Graphite",
|
|
445
|
+
"deployModes": "Todos los modos de despliegue (Compose, HA, Kubernetes)",
|
|
446
|
+
"replication": "Replicación en streaming",
|
|
447
|
+
"healthChecks": "Verificaciones de salud + failover con un comando",
|
|
448
|
+
"backups": "Copias de seguridad automáticas en S3",
|
|
449
|
+
"cicd": "CI/CD mediante GitHub Actions",
|
|
450
|
+
"unlimited": "Servidores y proyectos ilimitados",
|
|
451
|
+
"commercial": "Derechos de uso comercial"
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
"fullerene": {
|
|
455
|
+
"tagline": "Licencia comercial para Agencias y Empresas.",
|
|
456
|
+
"cta": "Ir a Fullerene",
|
|
457
|
+
"features": {
|
|
458
|
+
"diamond": "Todo lo de Diamond",
|
|
459
|
+
"commercial": "Derechos de uso comercial (excepción AGPL)",
|
|
460
|
+
"clients": "Despliega para clientes y organizaciones",
|
|
461
|
+
"corporate": "Equipos de agencias y empresas",
|
|
462
|
+
"support": "Soporte prioritario por correo",
|
|
463
|
+
"lifetime": "Acceso de por vida"
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
"faq": {
|
|
468
|
+
"headline": "Preguntas frecuentes",
|
|
469
|
+
"subheading": "Todo lo que necesitas saber antes de comenzar.",
|
|
470
|
+
"q1": {
|
|
471
|
+
"question": "¿Qué obtengo desde el primer momento?",
|
|
472
|
+
"answer": "Una app full-stack con React 19, Hono API, Supabase self-hosted, autenticación, facturación, carga de archivos, blog, docs, i18n, manifiestos de Kubernetes y Docker Compose para desarrollo local."
|
|
473
|
+
},
|
|
474
|
+
"q2": {
|
|
475
|
+
"question": "¿Puedo modificar o personalizar todo?",
|
|
476
|
+
"answer": "Sí. Eres propietario del 100% del código generado. Sin dependencia de proveedores, sin dependencia en tiempo de ejecución de Vibecarbon."
|
|
477
|
+
},
|
|
478
|
+
"q3": {
|
|
479
|
+
"question": "¿Qué proveedores de nube están soportados?",
|
|
480
|
+
"answer": "Hetzner Cloud (más proveedores próximamente), con Docker Compose y manifiestos de Kubernetes que funcionan en cualquier proveedor — AWS, GCP, DigitalOcean y más."
|
|
481
|
+
},
|
|
482
|
+
"q4": {
|
|
483
|
+
"question": "¿Cómo funciona el despliegue?",
|
|
484
|
+
"answer": "Ejecuta \"npx vibecarbon deploy\" para provisionar un VPS, instalar k8s, configurar Traefik, desplegar tu app con HTTPS automático y configurar copias de seguridad automáticas — todo en un solo comando."
|
|
485
|
+
},
|
|
486
|
+
"q5": {
|
|
487
|
+
"question": "¿Cómo funciona el precio?",
|
|
488
|
+
"answer": "Graphite es gratuito para siempre — crea proyectos, desarrolla localmente y usa todos los complementos. Diamond ($149 de por vida) es automatización completa para indie hackers y startups — todos los modos de despliegue, backups, CI/CD y escalado. Fullerene ($499 de por vida) es la licencia comercial para agencias y empresas — despliega para clientes y organizaciones sin restricciones AGPL. Pago único, sin suscripciones."
|
|
489
|
+
},
|
|
490
|
+
"q6": {
|
|
491
|
+
"question": "¿Cuántos proyectos puedo crear con una licencia?",
|
|
492
|
+
"answer": "Ilimitados. Una licencia Diamond o Fullerene cubre cada proyecto que crees: no hay coste por proyecto. La licencia está vinculada a ti o a tu organización."
|
|
493
|
+
},
|
|
494
|
+
"q7": {
|
|
495
|
+
"question": "¿Necesito Fullerene para cobrar a los usuarios o gestionar un SaaS?",
|
|
496
|
+
"answer": "No. Diamond cubre el despliegue de tu propio producto: cobra a los usuarios, gestiona un SaaS, monta un negocio. Fullerene es la licencia comercial para desplegar en nombre de otra persona: agencias, empresas y trabajo para clientes. La prueba: ¿es tu producto? Diamond. ¿Es de otra persona? Fullerene."
|
|
497
|
+
},
|
|
498
|
+
"q8": {
|
|
499
|
+
"question": "¿Qué pasa si Vibecarbon cierra?",
|
|
500
|
+
"answer": "No cambia nada para tu aplicación. El código generado está bajo licencia MIT y sin ninguna dependencia en tiempo de ejecución de Vibecarbon: es simplemente una base de código que te pertenece por completo. La CLI es código abierto bajo AGPL, así que puedes ejecutarla desde el código fuente indefinidamente. Tu infraestructura corre en tus propios servidores."
|
|
501
|
+
},
|
|
502
|
+
"q9": {
|
|
503
|
+
"question": "¿Necesito experiencia en DevOps para desplegar?",
|
|
504
|
+
"answer": "No. La CLI se encarga del aprovisionamiento, SSL, escalado, copias de seguridad y monitoreo. Solo necesitas una cuenta de Hetzner, un dominio y credenciales SMTP para el correo: eso es todo. Todos los manifiestos de Kubernetes y archivos de Docker Compose viven en tu proyecto si quieres entender o personalizar lo que se está configurando."
|
|
505
|
+
}
|
|
506
|
+
},
|
|
507
|
+
"newsletter": {
|
|
508
|
+
"placeholder": "Ingresa tu correo",
|
|
509
|
+
"button": "Suscribirse",
|
|
510
|
+
"success": "Revisa tu correo para confirmar tu suscripción.",
|
|
511
|
+
"errorEmpty": "Por favor ingresa tu dirección de correo",
|
|
512
|
+
"errorInvalid": "Por favor ingresa una dirección de correo válida"
|
|
513
|
+
},
|
|
514
|
+
"cta": {
|
|
515
|
+
"badge": "Seguro por diseño",
|
|
516
|
+
"headline": "¿Listo para lanzar tu próxima app?",
|
|
517
|
+
"subheading": "Apps de IA increíblemente robustas en minutos."
|
|
518
|
+
},
|
|
519
|
+
"footer": {
|
|
520
|
+
"userDocs": "Documentación",
|
|
521
|
+
"apiDocs": "API Docs",
|
|
522
|
+
"blog": "Blog",
|
|
523
|
+
"changelog": "Changelog",
|
|
524
|
+
"contact": "Contacto",
|
|
525
|
+
"privacy": "Privacidad",
|
|
526
|
+
"terms": "Términos"
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|