Codapult
DocsBlogPricingPluginsDemo
Get Codapult
Logo

Build your SaaS with AI. Keep the architecture under control.

Get Codapult

Product

  • Pricing
  • Architecture
  • Modules
  • AI platform
  • Plugins

Developers

  • MCP
  • CLI
  • Documentation
  • Launch your SaaS
  • Build a B2B SaaS

Resources

  • Blog
  • FAQ

Connect

  • Contact
  • GitHub

Compare

  • SaaS template comparison
  • Codapult vs Supastarter
  • Codapult vs Makerkit
  • Codapult vs ShipFast
  • Codapult vs SaaSBold
  • Codapult vs Gravity
  • Codapult vs Nextbase
  • Codapult vs BuilderKit

Featured on

Codapult on LaunchNestCodapult on LaunchNestbetterlaunch.cobetterlaunch.coFeatured on LaunchBuffFeatured on LaunchBuffCodapult on PeerPushCodapult on PeerPushFeatured on LaunchItFeatured on LaunchIt
© 2026 Codapult·All rights reserved·Privacy Policy·Terms of Service
Full source code · One-time purchase · Self-host anywhere
All articles

Getting Started

  • Introduction
  • Quick Start
  • Your First 30 Minutes
  • Project Structure
  • License and Permitted Use
  • Starter Profiles and Recipes
  • Product Recipes

Configuration

  • Environment Variables
  • App Configuration
  • Which Modules Should I Enable?
  • Provider Matrix
  • Capability Coverage

Database

  • Database and Provider Guide
  • Database
  • Migrations

Authentication

  • Authentication
  • OAuth Providers
  • Two-Factor & Passwordless
  • Enterprise SSO (SAML)

Ai

  • AI Runtime Architecture and Evals
  • AI Features
  • Streaming Chat
  • RAG and Semantic Search
  • Quotas and Memory

Teams

  • Teams & Organizations
  • Permissions & RBAC
  • SCIM Provisioning

Security

  • Data Retention Policy
  • Security

Deployment

  • Enterprise E2E Evidence
  • Enterprise Production Readiness
  • Deployment, Backup, and Restore Runbook
  • Deployment
  • Troubleshooting

Payments

  • Payments & Billing
  • Stripe Setup
  • LemonSqueezy Setup
  • Polar Setup
  • Payment Webhooks

Api

  • API Layer
  • tRPC
  • GraphQL

Email

  • Email
  • Email Templates

Infrastructure

  • Infrastructure
  • Self-Hosting
  • File Storage
  • Docker
  • Background Jobs
  • Terraform & Pulumi
  • Kubernetes

Ui

  • UI & Theming

I18n

  • Internationalization

Content Management

  • Content Management

Admin

  • Admin Panel

Monitoring

  • Analytics & Monitoring

Modules

  • Module Architecture
  • Waitlist
  • Audit Log
  • White-Labeling
  • Workflow Automation
  • A/B Testing
  • Welcome Page
  • Referrals
  • GDPR Export and Deletion
  • Promotions
  • Outgoing Webhooks

Plugins

  • Plugin System
  • CRM Plugin
  • Helpdesk Plugin
  • Email Marketing Plugin

Upgrading

  • Upgrading Codapult

Developer Tools

  • AI Agents & IDEs
  • MCP Server
  • Testing
  • Build Your First Feature with Codapult MCP
  • How Guard Blocks an Architectural Regression
Infrastructure

Kubernetes

Deploy Codapult to any Kubernetes cluster with the included Helm chart.

Codapult ships a Helm chart in infra/helm/codapult/. It deploys the standalone Next.js container, optional BullMQ worker, optional Redis, ingress, service account, secrets, and autoscaling.

Chart Structure

infra/helm/codapult/
├── Chart.yaml
├── values.yaml
└── templates/
    ├── deployment.yaml
    ├── worker.yaml
    ├── redis.yaml
    ├── service.yaml
    ├── ingress.yaml
    ├── hpa.yaml
    ├── secrets.yaml
    └── serviceaccount.yaml

Install

cp infra/helm/codapult/values.yaml my-values.yaml
helm install codapult ./infra/helm/codapult -f my-values.yaml

Upgrade:

helm upgrade codapult ./infra/helm/codapult -f my-values.yaml

Image

Build and push the standalone image first:

docker build -t ghcr.io/acme/codapult:2026-05-24 .
docker push ghcr.io/acme/codapult:2026-05-24

Set:

image:
  repository: ghcr.io/acme/codapult
  tag: '2026-05-24'

Secrets

Production should reference an existing Kubernetes Secret:

kubectl create secret generic codapult-secrets \
  --from-literal=TURSO_DATABASE_URL="libsql://..." \
  --from-literal=TURSO_AUTH_TOKEN="..." \
  --from-literal=BETTER_AUTH_SECRET="..." \
  --from-literal=STRIPE_SECRET_KEY="..." \
  --from-literal=STRIPE_WEBHOOK_SECRET="..."

Then:

existingSecret: codapult-secrets

For local or disposable environments, values.yaml also supports inline secrets, but avoid that in production git repositories.

Core Values

ValueDescription
replicaCountNumber of web pods when HPA is disabled
image.repository, image.tag, image.pullPolicyApp image
app.url, app.name, app.portPublic URL, display name, container port
envNon-secret environment variables
existingSecretExisting Secret used by envFrom
ingress.enabled, ingress.className, ingress.hosts, ingress.tlsHTTP ingress
resourcesWeb pod resource requests/limits
autoscalingHorizontalPodAutoscaler settings
worker.enabledDedicated BullMQ worker deployment
redis.enabled, redis.externalUrlIn-cluster or external Redis

Workers and Redis

Enable production jobs with a dedicated worker:

env:
  JOB_PROVIDER: bullmq
  CODAPULT_DISABLE_IN_PROCESS_JOBS: 'true'

worker:
  enabled: true
  replicaCount: 1

redis:
  enabled: true

The worker pod sets CODAPULT_WORKER_MODE=true and starts registered BullMQ handlers and cron schedules. Use an external Redis instead of in-cluster Redis when you need managed persistence:

redis:
  enabled: false
  externalUrl: redis://redis.example.com:6379

Ingress and TLS

The default chart assumes nginx ingress and cert-manager:

ingress:
  enabled: true
  className: nginx
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
  hosts:
    - host: app.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: codapult-tls
      hosts:
        - app.example.com

Update annotations for your ingress controller if you use ALB, Traefik, Gateway API, or a managed platform ingress.

Terraform & PulumiUI & Theming