Quickstart
Get CatCMS running in under 60 seconds and create your first content-driven application. [object Object]
Prerequisites
Before you begin, ensure you have the following installed:
- Node.js (version 18 or higher)
- npm or pnpm
- Git
For production deployment, you’ll also need a Cloudflare account with access to Workers, D1, KV, and R2.
Quick Start
Create a new CatCMS application with a single command. The setup is fully automated and takes less than 60 seconds:
# Create a new CatCMS application
npx create-catcms my-app
# Navigate to your project
cd my-app
# Start development server
npm run dev
# Your CMS is now running at http://localhost:8787One-Command Setup
The create-catcms command automatically:
- ✅ Creates a new project directory
- ✅ Installs all dependencies
- ✅ Sets up the database schema
- ✅ Configures Cloudflare Workers
- ✅ Creates the admin user
- ✅ Runs initial migrations
Your CatCMS instance will be available at http://localhost:8787
Access the admin dashboard at http://localhost:8787/admin
First Steps
Access the Admin Dashboard
Navigate to http://localhost:8787/admin and log in with the default credentials.
The admin interface provides:
- System Overview - Real-time health checks and activity feed
- Content Management - Create, edit, and publish content
- Media Library - Upload and manage media files
- Plugin Management - Install and configure plugins
- User Management - Manage users, roles, and permissions
Create Your First Content
Via Admin UI:
- Navigate to Content → New Content
- Select a collection (e.g., “Blog Posts”)
- Fill in the fields and click Save
Via API:
# Get auth token
curl -X POST http://localhost:8787/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@catcms.app","password":"admin123"}'
# Create content
curl -X POST http://localhost:8787/admin/content \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"collection": "blog_posts",
"title": "My First Post",
"data": {
"slug": "my-first-post",
"content": "<p>Hello World!</p>",
"status": "published"
}
}'// Get auth token
const authResponse = await fetch('http://localhost:8787/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: 'admin@catcms.app',
password: 'admin123',
}),
})
const { token } = await authResponse.json()
// Create content
const response = await fetch('http://localhost:8787/admin/content', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
collection: 'blog_posts',
title: 'My First Post',
data: {
slug: 'my-first-post',
content: '<p>Hello World!</p>',
status: 'published',
},
}),
})Create Content
Fetch Content via API
# Get all content
curl http://localhost:8787/api/content
# Get content by collection
curl http://localhost:8787/api/collections/blog_posts/content
# Get single content item
curl http://localhost:8787/api/content/:id// Get all content
const response = await fetch('http://localhost:8787/api/content')
const data = await response.json()
// Get content by collection
const posts = await fetch('http://localhost:8787/api/collections/blog_posts/content')
const blogPosts = await posts.json()Fetch Content
Next Steps
Now that you have CatCMS running, explore these guides: