Codapult
TarifsPluginsBlogDocsDémo
Logo

Le boilerplate SaaS pour les créateurs

© 2026 Codapult. Tous droits réservés.

Built with Codapult

Projet

  • Tarifs
  • Plugins
  • Blog
  • Documentation

Alternatives

  • Comparaison de templates SaaS
  • Codapult vs Supastarter
  • Codapult vs Makerkit
  • Codapult vs ShipFast
  • Codapult vs SaaSBold
  • Codapult vs Gravity
  • Codapult vs Nextbase
  • Codapult vs BuilderKit

À propos

  • Contact

Mentions légales

  • Politique de confidentialité
  • Conditions d'utilisation
Tous les articles

Getting Started

  • Introduction
  • Quick Start
  • Project Structure
  • License and Permitted Use

Configuration

  • Environment Variables
  • App Configuration

Authentication

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

Database

  • Database
  • Migrations

Teams

  • Teams & Organizations
  • Permissions & RBAC
  • SCIM Provisioning

Payments

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

Api

  • API Layer
  • tRPC
  • GraphQL

Ai

  • AI Features
  • Streaming Chat
  • RAG and Semantic Search
  • Quotas and Memory

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

Security

  • Security

Monitoring

  • Analytics & Monitoring

Modules

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

Plugins

  • Plugin System
  • AI Kit Plugin
  • CRM Plugin
  • Helpdesk Plugin
  • Email Marketing Plugin

Deployment

  • Deployment
  • Troubleshooting

Upgrading

  • Upgrading Codapult

Developer Tools

  • AI Agents & IDEs
  • MCP Server
  • Testing
Content Management

Content Management

Manage your blog and help center documentation with MDX, full-text search, and i18n support.

Codapult includes two content systems — a blog and a help center — both powered by MDX files on disk. No CMS or database required; just write Markdown with optional JSX components.

After purchase, replace the Codapult marketing content with your own product's content before shipping your SaaS. The default files are real Codapult sales material, not neutral placeholder copy.


Replacing the Marketing Content

The public marketing site lives under src/app/[locale]/(marketing)/. Its reusable sections live in src/components/marketing/, and most default copy/data comes from config, messages, and MDX content.

Treat the shipped marketing surface as a reference implementation, not as reusable neutral copy. It describes Codapult, its pricing, its plugin catalog, and its competitors. Keeping it unchanged in your own SaaS will create incorrect SEO pages, product claims, legal copy, and checkout paths.

Use this checklist when turning the template into your own product:

AreaReplace or review
Landing page sectionssrc/app/[locale]/(marketing)/page.tsx, src/components/marketing/*
Landing page copy, stats, testimonials, module cardssrc/config/marketing.ts
Pricing tiers, plugin cards, checkout product keyssrc/config/marketing-pricing.ts
Competitor comparison pagessrc/config/competitor-comparison.ts, src/app/[locale]/(marketing)/compare/
Blog posts and RSS feed contentcontent/blog/
Help center documentationcontent/docs/
Navbar, footer, page UI copy, locale stringsmessages/*.json
Brand name, logo, footer badge, support linkssrc/config/app.ts, public/logo.svg, public/logo-letter.svg
Legal pagessrc/app/[locale]/(marketing)/privacy/page.tsx, src/app/[locale]/(marketing)/terms/page.tsx

If you keep the blog or help center enabled, delete Codapult-specific files and add your own. If you do not need them yet, disable the public routes with ENABLE_BLOG=false or ENABLE_HELP_CENTER=false and remove the links from your navigation copy.

The default docs explain Codapult to developer-buyers. For your own SaaS, rewrite content/docs/ for your product's users, admins, API consumers, or internal support team. The default blog targets developers evaluating SaaS boilerplates; replace it with posts that match your product's audience and search intent.

Recommended replacement order:

  1. Update src/config/app.ts and logo/icon assets first so metadata, emails, and legal pages use your brand.
  2. Rewrite messages/en.json marketing namespaces (Hero, ProductPricing, FAQ, Nav, Footer) and repeat for any enabled locales.
  3. Replace src/config/marketing.ts, src/config/marketing-pricing.ts, and src/config/competitor-comparison.ts with product-specific data.
  4. Rewrite or disable content/blog/ and content/docs/ before indexing the production domain.
  5. Review sitemap.ts, robots.ts, Open Graph images, RSS, privacy, and terms pages for any remaining Codapult-specific claims.

MDX Blog

File Location

Blog posts live in content/blog/ as .mdx files.

Frontmatter

Every post starts with YAML frontmatter:

---
title: Launching Our API v2
description: A faster, more reliable API with breaking change migration guide.
date: 2026-03-15
author: Jane Doe
tags: [api, release]
image: /images/blog/api-v2.png
published: true
---

Your markdown content here...
FieldRequiredDescription
titleYesPost title
descriptionYesShort summary for SEO and listing cards
dateYesPublication date (YYYY-MM-DD)
authorYesAuthor name
tagsNoArray of tags for filtering
imageNoCover image path
publishedNoSet to false to hide from listings
canonical_urlNoAbsolute canonical URL for cross-posting to dev.to or similar platforms
devto_tagsNoOptional dev.to tag list used by publishing workflow docs

Internationalization

Blog posts support per-locale translations using a filename convention:

FileLocale
my-post.mdxDefault (English)
my-post.de.mdxGerman
my-post.fr.mdxFrench
my-post.ja.mdxJapanese
my-post.ru.mdxRussian

If a translation is unavailable for the current locale, the default-locale version is shown.

Utilities

The src/lib/blog/ module provides server-side functions:

FunctionDescription
getAllPosts(locale?)List all published posts (newest first)
getPostBySlug(slug, locale?)Get a single post with full MDX content
getAllTags(locale?)Get all unique tags
getPostsByTag(tag, locale?)Filter posts by tag
getPostsByAuthor(author, locale?)Filter posts by author
getAllAuthors(locale?)List all authors with post counts
getAllSlugs()Get all post slugs (for static generation)

Components

ComponentDescription
BlogSearchClient-side search across post titles and descriptions
TagCloudTag list with post counts, links to filtered views
LocaleSwitchLanguage switcher for translated posts

RSS Feed

An RSS feed is automatically generated at /rss.xml from published blog posts.


Help Center / Documentation

File Location

Documentation articles live in content/docs/<category>/<slug>.mdx, organized into category folders.

Frontmatter

---
title: Getting Started
description: Install and configure the app in under 5 minutes.
category: getting-started
order: 1
published: true
---

Your documentation content here...
FieldRequiredDescription
titleYesArticle title
descriptionYesShort summary for SEO and navigation
categoryYesFolder name (e.g. getting-started, billing)
orderYesSort position within the category
publishedNoSet to false to hide from navigation

Auto-Generated Navigation

The help center builds its sidebar navigation automatically from the file structure:

  • Categories are derived from folder names
  • Articles are sorted by order within each category
  • Category order is determined by the lowest order value among its articles

No configuration file is needed — add a folder and an MDX file, and it appears in the sidebar.

Full-Text Search

The searchDocs(query) function searches across article titles, descriptions, and content:

import { searchDocs } from '@/lib/docs';

const results = searchDocs('authentication');
// [{ title, description, category, slug, order, published }, ...]

The HelpDocSearch component provides a ready-made search UI with instant results.

Utilities

FunctionDescription
getDocCategories()List all categories with their articles
getDocArticle(category, slug)Get a single article with MDX content
getAllDocSlugs()Get all { category, slug } pairs (for static generation)
searchDocs(query)Full-text search across all articles

Adding Content

New Blog Post

Create a file in content/blog/:

touch content/blog/my-new-post.mdx

Add frontmatter and content. The post appears on the blog page after a dev server reload (or production rebuild).

New Documentation Article

Create a file in content/docs/<category>/:

mkdir -p content/docs/integrations
touch content/docs/integrations/webhooks.mdx

Add frontmatter with the category matching the folder name and an order value. The article appears in the help center sidebar automatically.

New Documentation Category

Simply create a new folder under content/docs/ and add at least one .mdx file. The category name in the sidebar is derived from the folder name (e.g. getting-started → "Getting Started").


MDX Components

Both blog and docs content is rendered with MdxContent, which provides standard Markdown elements plus GFM (tables, strikethrough, task lists) via remark-gfm. You can use:

  • Headings (# H1 through #### H4) — auto-generate anchor links for the table of contents
  • Code blocks with syntax highlighting — use triple backticks with a language tag
  • Tables — standard GitHub-flavored Markdown tables
  • Images — reference files from public/images/ (e.g. ![alt](/images/screenshot.png))
  • Links — internal links use relative paths (e.g. [Auth docs](/docs/authentication/overview))

To add custom JSX components to MDX, extend the components prop in the MdxContent usage within src/app/[locale]/(marketing)/docs/[category]/[slug]/page.tsx or the blog page.

InternationalizationAdmin Panel