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
Deployment

Enterprise E2E Evidence

The end-to-end checks that verify authentication boundaries, protected APIs, and critical production surfaces.

What the E2E suite proves

The Playwright suite checks the deployed application through its public HTTP and browser boundaries. The security-boundary scenario verifies that, in SaaS mode:

  • unauthenticated users are redirected away from dashboard and admin pages;
  • enabled protected AI, organization, reporting, audit, and integration APIs return 401 without a session; disabled AI/RAG surfaces return 404;
  • public health, OpenAPI, changelog, landing, and blog surfaces remain reachable according to their feature flags;
  • configured feature flags produce the documented 404 behavior for disabled surfaces.

The boundary checks are in e2e/security-boundaries.spec.ts. They use requests without a storage state, so a passing result demonstrates the unauthenticated boundary rather than a test account shortcut.

Run the evidence

The E2E environment must provide the same database and auth configuration as the target deployment. The global setup validates the environment and waits for /api/health before the browser suite starts.

pnpm test:e2e --project=chromium e2e/security-boundaries.spec.ts

Run the complete Chromium evidence set with:

pnpm test:e2e --project=chromium

Evidence beyond unauthenticated flows

Authenticated organization and role behavior is covered by route integration tests with explicit session and membership fixtures. This keeps owner/admin/member authorization deterministic while Playwright verifies the real HTTP boundary. The two layers are complementary:

BoundaryEvidence
Browser navigation and redirectsPlaywright
Unauthenticated API responsesPlaywright
Organization membership and role checksRoute integration tests
Database/schema behaviorUnit and integration tests
Payment provider webhooksAdapter and route integration tests

When adding a protected surface, add its unauthenticated browser/API assertion and its authenticated organization-role test in the same change.

Enterprise provider boundaries

The repository tests provider boundaries with deterministic adapters and mocks:

FlowAutomated evidenceRequired staging evidence
SAML SSOAuthorize/callback route tests and SSO adapter testsComplete a real IdP login with the deployed ACS URL and configured tenant
SCIMToken, bearer authentication, organization-scoped lifecycle, and rate-limit testsRun a real provider sync and verify deprovisioning does not affect another organization
Billing webhooksSignature and normalized-event route tests for each configured adapterSend a signed duplicate and out-of-order event against staging and verify reconciliation
Jobs and webhooksRetry, backoff, dead-letter, and replay testsObserve the worker, alert, dead-letter queue, and replay procedure with production-like Redis

Provider mocks validate the application boundary and error handling. Pair them with a staging acceptance run against the provider that will own the production account to verify the complete deployment path.

SecurityEnterprise Production Readiness