Back
gh

Cockpit-HQ/Cockpit: Cockpit Core - Content Platform

Cockpit Core - Content Platform. Contribute to Cockpit-HQ/Cockpit development by creating an account on GitHub.

by Cockpit-HQ github.com 645 words
View original

Cockpit CMS - Headless Content Management

cockpit banner

Modern, flexible CMS that adapts to your workflow

Cockpit is a headless CMS that gives you the flexibility to build content-driven applications your way. Whether you’re creating websites, mobile apps, or IoT applications, Cockpit provides the content infrastructure you need.

✨ Why Developers Choose Cockpit

πŸš€ Quick Start

Get Cockpit running in under 5 minutes:

Option 1: Traditional Setup

# Download and extract
wget https://github.com/cockpit-hq/cockpit/releases/latest/download/cockpit.zip
unzip cockpit.zip && cd cockpit

# Make storage writable  
chmod -R 755 storage/

# Open in browser and complete setup
open http://localhost/cockpit/install
# Run Cockpit with persistent storage
docker run -d \
  --name cockpit \
  -p 8080:80 \
  -v cockpit_storage:/var/www/html/storage \
  cockpithq/cockpit:core-latest

# Access at http://localhost:8080/install

Start Building

Once installed, create content models through the admin UI or via API:

// Fetch your content anywhere
fetch('/api/content/items/blog')
  .then(res => res.json())
  .then(posts => {
    // Use in React, Vue, mobile apps, etc.
    console.log('My content:', posts);
  });

πŸ› οΈ Key Features

FeatureDescription
Content ModelingCollections, Singletons, Trees with 20+ field types
Asset ManagementImage processing, video thumbnails, CDN integration
User ManagementRoles, permissions, 2FA, API tokens
Multi-languageLocalized content with fallback support
Developer ToolsGraphQL playground, REST docs, CLI commands
ExtensibilityCustom fields, addons, hooks, events
Multi-tenancySpaces for multiple sites and clients

πŸ“‹ System Requirements

Ensure $_SERVER['DOCUMENT_ROOT'] is properly configured.

🌐 API Examples

REST API

# Get all published blog posts
curl "https://yoursite.com/api/content/items/blog?filter={tags:'cms'}"

# Get single post by ID
curl "https://yoursite.com/api/content/item/blog/60f1b2b3c4d5e6f7a8b9c0d1"

# Create new post
curl -X POST "https://yoursite.com/api/content/item/blog" \
  -H "Cockpit-Token: your-token" \
  -H "Content-Type: application/json" \
  -d '{"title":"New Post","content":"Content here","tags":["cms"]}'

GraphQL

# Query blog posts with pagination
query GetBlogPosts($limit: Int, $skip: Int) {
  blog(limit: $limit, skip: $skip, filter: {tags: "cms"}) {
    _id
    title
    content
    _created
    _modified
  }
}

# Create new blog post  
mutation CreatePost($data: JSON!) {
  saveContentItem(model: "blog", data: $data) {
    _id
    title
  }
}

πŸ”— Resources

πŸ“± Use Cases

🐳 Docker

Run Cockpit in containers for consistent, scalable deployments across any environment.

Quick Start with Docker

# Run with SQLite (development)
docker run -d \
  --name cockpit \
  -p 8080:80 \
  -v cockpit_storage:/var/www/html/storage \
  cockpithq/cockpit:core-latest

# Access at http://localhost:8080/install

Production Setup with MongoDB

# docker-compose.yml
version: '3.8'
services:
  cockpit:
    image: cockpithq/cockpit:core-latest
    ports:
      - "80:80"
    environment:
      - COCKPIT_DATABASE_SERVER=mongodb://mongo:27017
      - COCKPIT_DATABASE_NAME=cockpit
    volumes:
      - ./storage:/var/www/html/storage
      - ./config:/var/www/html/config
    depends_on:
      - mongo
      
  mongo:
    image: mongo:8
    volumes:
      - mongo_data:/data/db
    environment:
      - MONGO_INITDB_DATABASE=cockpit

volumes:
  mongo_data:

Configuration

Create a config/config.php file and mount it to connect to MongoDB:

<?php
// config/config.php
return [
    'database' => [
        'server' => $_ENV['COCKPIT_DATABASE_SERVER'] ?? 'mongodb://mongo:27017',
        'database' => $_ENV['COCKPIT_DATABASE_NAME'] ?? 'cockpit'
    ],
    'sec-key' => $_ENV['COCKPIT_SEC_KEY'] ?? 'your-random-security-key'
];

Mount config via Docker Compose:

volumes:
  - ./config:/var/www/html/config

Or create custom Docker image:

FROM cockpithq/cockpit:core-latest
COPY ./config/config.php /var/www/html/config/config.php

Available Tags

Visit Docker Hub for all available tags.

πŸ’ Partners

BrowserStack
Live, Web-Based Browser Testing

πŸ’ Sponsors

Backers on Open Collective Sponsors on Open Collective

Become a backer or sponsor through:

Thank you to all our backers! πŸ™

Copyright since 2015 πŸ…°πŸ…ΆπŸ…΄πŸ…½πŸ†ƒπŸ…΄πŸ…ΉπŸ…Ύ under the MIT license.

See LICENSE for more information.