Introduction to FlowCMS

FlowCMS is a modern, headless Content Management System designed for developers and content teams who need flexibility, speed, and scalability. Built with an API-first approach, FlowCMS lets you manage content in one place and deliver it anywhere — websites, mobile apps, IoT devices, and more.

💡
New to FlowCMS? Start with our Quick Start Guide to get up and running in under 5 minutes.

What is FlowCMS?

FlowCMS separates content from presentation. Instead of being tied to a specific template engine or frontend framework, FlowCMS exposes your content through powerful REST and GraphQL APIs. This means you can build any frontend with any technology stack while FlowCMS handles content creation, organization, and delivery.

Key Features

🔌

Headless Architecture

API-first content delivery with REST and GraphQL. Connect to any platform, device, or framework.

🤖

AI-Powered Workflows

Automated content generation, SEO scoring, intelligent tagging, and smart recommendations.

📝

Visual Builder

Drag-and-drop content creation with a WYSIWYG editor. No code required for content teams.

🔐

Enterprise Security

SOC 2 compliant, RBAC, SSO/SAML, audit logs, and encryption at rest and in transit.

🌍

Multi-Language

Manage content in 50+ languages with full translation workflows and localization support.

Edge CDN Delivery

Global content delivery with 200+ edge locations. Sub-50ms API response times worldwide.

System Architecture

FlowCMS follows a decoupled architecture with three main components:

  1. Content Store — Your content is stored in a distributed, versioned database with real-time sync and rollback capabilities.
  2. API Layer — REST and GraphQL endpoints serve content with caching, rate limiting, and query optimization.
  3. Delivery Network — Edge-optimized CDN ensures your content is delivered globally with minimal latency.
Built for Scale FlowCMS handles millions of API requests per second with 99.99% uptime guarantee.

Quick Start Guide

Get FlowCMS up and running in minutes. This guide walks you through installing FlowCMS, creating your first content model, and making your first API request.

Prerequisites

  • Node.js 18+ installed
  • npm or pnpm package manager
  • A FlowCMS account (sign up free)

Installation

1

Install the FlowCMS CLI

Install the FlowCMS command-line tool globally:

bash
# Using npm
npm install -g @flowcms/cli

# Or using pnpm
pnpm add -g @flowcms/cli

# Verify installation
flowcms --version
2

Initialize Your Project

Create a new FlowCMS project in your working directory:

bash
# Create a new project
flowcms init my-website

# Navigate into the project
cd my-website

# Install dependencies
npm install
3

Start the Local Server

Run the development server with hot-reload:

bash
flowcms dev

# Server running at
# ➜  Local:   http://localhost:3000
# ➜  Admin:   http://localhost:3000/admin
# ➜  API:     http://localhost:3000/api/v1
4

Create Your First Content Model

Define a content type using the FlowCMS schema file:

javascript
// flowcms.schema.js
import { defineType } from '@flowcms/schema';

export const post = defineType({
  name: 'post',
  label: 'Blog Post',
  fields: [
    {
      name: 'title',
      type: 'string',
      required: true,
      validations: [ { max: 200 } ]
    },
    {
      name: 'slug',
      type: 'slug',
      from: 'title',
      required: true
    },
    {
      name: 'body',
      type: 'richText',
      required: true"
    },
    {
      name: 'coverImage',
      type: 'media',
      mediaType: ['image']
    },
    {
      name: 'tags',
      type: 'relation',
      to: 'tag',
      multiple: true
    },
    {
      name: 'publishedAt',
      type: 'datetime',
      isPublishDate: true
    }
  ]
});
5

Fetch Content via API

Retrieve your content using the FlowCMS API:

javascript
import { createClient } from '@flowcms/client';

const cms = createClient({
  spaceId: 'your-space-id',
  apiKey: process.env.FLOWCMS_API_KEY,
  environment: 'preview'  // or 'master'
});

// Fetch all published posts
const posts = await cms.getEntries({
  contentType: 'post',
  status: 'published',
  limit: 10,
  order: '-publishedAt'
});

console.log(`Found ${posts.total} posts`);
💡
Next Steps Now that you have FlowCMS running, explore Content Modeling or jump straight to the API Reference.

Installation

FlowCMS can be installed as a managed cloud service, self-hosted instance, or via Docker. Choose the option that best fits your needs.

Cloud (Managed Service)

The easiest way to get started. No installation required — just create an account and start building.

  1. Go to app.flowcms.io and create your account
  2. Create a new space from the dashboard
  3. Use your space credentials to connect via SDK or API

Self-Hosted (Docker)

Run FlowCMS on your own infrastructure:

bash
# Pull the latest image
docker pull flowcms/core:3.2

# Run with docker-compose
docker compose up -d

# Access at http://localhost:3000

Requirements

Component Minimum Recommended
Node.js 18.0 20.x LTS
Database PostgreSQL 14 PostgreSQL 16
RAM 512 MB 2 GB
Disk 10 GB 50 GB SSD
⚠️
Production Note For production deployments, always use PostgreSQL 14+ and configure persistent storage for the database volume.

Configuration

FlowCMS can be configured via environment variables, a config file, or the admin dashboard.

Environment Variables

Variable Type Default Required Description
FLOWCMS_SPACE_ID string Required Your unique space identifier
FLOWCMS_API_KEY string Required API key for authentication
FLOWCMS_ENV string development Optional Environment: development | staging | production
FLOWCMS_PORT number 3000 Optional Port for the development server
FLOWCMS_DB_URL string sqlite::memory: Optional Database connection string
FLOWCMS_RATE_LIMIT number 1000 Optional API requests per minute per IP

Config File

Create a flowcms.config.js file in your project root:

javascript
export default {
  spaceId: process.env.FLOWCMS_SPACE_ID,
  apiKey: process.env.FLOWCMS_API_KEY,
  env: process.env.FLOWCMS_ENV || 'development',

  server: {
    port: 3000,
    cors: true,
    rateLimit: 1000
  },

  preview: {
    enabled: true,
    webhookSecret: process.env.WEBHOOK_SECRET
  },

  seo: {
    autoGenerate: true,
    sitemaps: true,
    robots: true
  }
};
🚨
Security Warning Never commit your FLOWCMS_API_KEY to version control. Always use environment variables or a secrets manager.

API Reference Overview

FlowCMS exposes a comprehensive REST API and a GraphQL API for content management and delivery. All API responses are in JSON format and support pagination, filtering, sorting, and field expansion.

Authentication

FlowCMS uses API keys for authentication. Include your key in the Authorization header:

http
GET /api/v1/spaces/:spaceId/entries
Host: api.flowcms.io
Authorization: Bearer fc_live_xxxxxxxxxxxxxxxx
Content-Type: application/json

FlowCMS provides two types of API keys:

Key Type Prefix Access Level Use Case
Publishable fc_live_ / fc_test_ Read-only Frontend content delivery
Secret fc_secret_ Full CRUD Admin operations, CI/CD
Preview Mode Add ?environment=preview to query the preview environment and access draft content.

Response Format

All API responses follow a consistent envelope structure:

json
{