sonicjs is a free, open source content management systems (cms) project written in TypeScript and released under MIT. It has 1,724 GitHub stars, 216 forks and 117 open issues, and was last pushed 5 days ago. On this registry it ranks #29 of 47 tracked projects in Content Management Systems (CMS), with 5 head-to-head comparisons available. It gained 3 stars over the last 3 tracked days.

What is sonicjs?

What it is

SonicJS is an edge-native headless CMS for the Cloudflare Workers ecosystem. It is written in TypeScript, uses the MIT license, and builds on D1, R2, and Hono. The project targets content APIs that run in the Workers runtime instead of a single regional server.

The concrete problem is latency and startup in content APIs. The README contrasts zero cold starts with 500-2000 ms cold starts on Node.js CMSs, and it contrasts 15-50 ms API responses with 1-4 s responses with relations elsewhere. It also describes schema-as-code, generated REST APIs, generated admin UI, GraphQL, search, and content fields for editors.

Key capabilities

  • SonicJS lets developers define content models in TypeScript, and it generates the REST API and admin UI.
  • The CMS runs on Cloudflare Workers with D1 for database storage, R2 for object storage, and Hono for routing.
  • SonicJS adds a GraphQL endpoint with a GraphiQL playground through an opt-in plugin.
  • The project provides semantic search with RAG-powered natural-language queries without extra infrastructure.
  • SonicJS exposes an MCP server so Claude Code, Cursor, and VS Code can read, create, and publish content.
  • The admin UI manages content with TinyMCE rich text editing and dynamic fields such as text, number, date, boolean, select, media, and slug.
  • Developers scaffold projects with create-sonicjs and use Wrangler hot reload for local development.

Who uses it and how

  • Teams build headless content APIs for websites and applications that need Cloudflare Workers deployment.
  • Developers define content models in TypeScript and let the CMS generate the REST API and admin UI.
  • Editors publish content through the admin UI with TinyMCE fields, media fields, and dynamic field types.
  • Self-hosters run SonicJS on a server with Docker and SQLite when they do not want a Cloudflare account.
  • Integrators use GraphQL, HTMX, Hono, and MCP tools in a TypeScript edge stack.

Getting started

Typical setup uses npx create-sonicjs@latest my-app, and the README also shows a Cloudflare deploy button. Self-hosting uses docker build -t sonicjs . and docker run -d --name sonicjs -p 3000:3000 -v $(pwd)/data:/app/data with JWT_SECRET and BETTER_AUTH_SECRET set, then docker exec sonicjs npm run reset creates the first admin user.

When to use it — and when not to

Use SonicJS when the team already works with Cloudflare Workers, D1, R2, Hono, and TypeScript, and when content APIs should run at the edge. Avoid it when the team needs a traditional Node.js CMS repository that is also the application itself, because this repository is for developing the core package and new applications are created with create-sonicjs. Self-hosters must operate Docker, SQLite data volumes, JWT_SECRET, BETTER_AUTH_SECRET, backups, and production hardening, and the Docker path does not use the Cloudflare edge network described for Workers deployment.

project readme (upstream, from github) — read inline

SonicJS

GitHub stars npm downloads GitHub commit activity Discord TypeScript License: MIT

PR Tests codecov Tests npm version

The only headless CMS born on the edge. Zero cold starts. 15–50ms API responses. 300+ global locations. TypeScript-first. 100% MIT open source — every feature free, no Enterprise gate, ever.

sonicjs.com

📦 Get Started

npx create-sonicjs@latest my-app

$0 to start · No signup required · Runs anywhere SQLite runs

Sponsor Open Collective

Deploy to Cloudflare

⚠️ Note: This repository is for developing the SonicJS core package. To build an application with SonicJS, use the command above to create a new project.

🐳 Self-Hosting with Docker

No Cloudflare account? Run SonicJS on any server with Docker and SQLite:

docker build -t sonicjs .
docker run -d --name sonicjs -p 3000:3000 \
  -v $(pwd)/data:/app/data \
  -e JWT_SECRET=$(openssl rand -base64 32) \
  -e BETTER_AUTH_SECRET=$(openssl rand -base64 32) \
  sonicjs

# Create the first admin user
docker exec sonicjs npm run reset
# → [email protected] / sonicjs! (change after first login)

See the Self-Hosting guide for Docker Compose, Node.js, backup strategy, and production hardening.

🚀 Features

Edge Performance

  • ⚡ Zero Cold Starts: 0–5ms cold start vs 500–2000ms on Node.js CMSs
  • 🌍 Global by Default: 300+ edge locations — not one region, one continent
  • 🚀 Sub-50ms APIs: 15–50ms API responses vs 1–4s with relations elsewhere
  • 📈 Auto-Scaling: Cloudflare handles traffic spikes — no ops required

Developer Experience

  • 🔧 Schema-as-Code: Define your content model in TypeScript; SonicJS generates the REST API and admin UI
  • 📦 create-sonicjs CLI: From schema to global API in minutes
  • 🔥 Hot Reload: Fast local development with Wrangler
  • 📱 Modern Stack: Hono.js, TypeScript, D1, R2, HTMX

AI-Native Content Layer

  • 🤖 Native MCP Server: Auto-generated tools let Claude Code, Cursor, and VS Code read, create, and publish content
  • ⚡ GraphQL API: Full GraphQL endpoint with GraphiQL playground — opt-in plugin, zero config
  • 🔍 RAG-Powered Search: Semantic search with natural-language queries — zero extra infra
  • 🛠 12 Specialized Claude Code Agents: Purpose-built agents for development (View all agents)

Content Management

  • 📝 Rich Text Editor: TinyMCE integration with customizable toolbars
  • 🎛️ Dynamic Fields: Text, number, date, boolean, select, media, slug, and more
  • 📚 Content Versioning: Complete revision history with restore — free, no paywall
  • ⏰ Content Scheduling: Publish/unpublish automation with date controls
  • 🔄 Draft → Published Workflow: Role-based permissions throughout
  • 💾 Auto-Save: Automatic content saving every 30 seconds
  • 🛡️ XSS Protection: Comprehensive input validation and HTML escaping

No Lock-In, No Paywalls

  • 100% MIT: Every feature in the core. No Growth tier. No Enterprise gate. Ever.
  • No VC Clock: No license rug-pull. No infra lock-in.
  • Runs Anywhere: Edge-native on Cloudflare Workers, or self-host on Docker/VPS — anywhere SQLite runs.

📊 How SonicJS Compares

SonicJS Strapi Payload
Edge-native ✅ Yes ❌ No ❌ No
Cold start 0–5ms 500–2000ms 500–2000ms
API response 15–50ms 1–4s 1–4s
Global locations 300+ 1 region 1 region
Version history Free Paywalled Paywalled
SSO / Audit logs Free $99+/mo $99+/mo
AI / MCP / GraphQL Included Upsold Upsold
License MIT (all features) MIT (limited) MIT (limited)

SonicJS is the only production-ready CMS built specifically for edge computing.

🛠 Technology Stack

Core Framework

  • Hono.js - Ultrafast web framework for Cloudflare Workers
  • TypeScript - Strict type safety throughout
  • HTMX - Enhanced HTML for dynamic interfaces

Cloudflare Services

  • D1 - SQLite database at the edge
  • R2 - Object storage for media
  • Workers - Serverless compute runtime
  • KV - Key-value storage for caching
  • Images API - Image optimization and transformation

Development Tools

  • Vitest - Fast unit testing
  • Playwright - End-to-end testing
  • Wrangler - Local development and deployment
  • Drizzle ORM - Type-safe database queries

🏁 Quick Start

For Application Developers (Using SonicJS)

# Create a new SonicJS application
npx create-sonicjs@latest my-app

cd my-app
npm run dev

# Visit http://localhost:8787

Your app includes:

  • ✅ SonicJS CMS pre-configured
  • ✅ Database migrations ready
  • ✅ Example content collections
  • ✅ Admin interface at /admin
  • ✅ Ready to deploy to Cloudflare

For Package Developers (Contributing to SonicJS)

# Clone this repository
git clone https://github.com/lane711/sonicjs.git
cd sonicjs

# Install dependencies
npm install

# Build the core package
npm run build:core

# Create a test app to validate changes
npx create-sonicjs@latest my-sonicjs-app

# Run tests
npm test
Setting Up a Fresh Database
# Create a fresh D1 database for your branch (run from project root)
npm run db:reset

This creates a new D1 database named sonicjs-worktree-, applies all migrations, and updates wrangler.toml.

Working with Database Migrations

Migrations live in packages/core/migrations/. Test apps reference them via npm workspace symlink.

From your test app directory (e.g., my-sonicjs-app/):

# Check migration status
wrangler d1 migrations list DB --local

# Apply pending migrations
wrangler d1 migrations apply DB --local

# Apply to production
wrangler d1 migrations apply DB --remote

Creating New Migrations:

SonicJS bundles migrations at build time (Workers can't access the filesystem at runtime).

  1. Create packages/core/migrations/NNN_description.sql (use CREATE TABLE IF NOT EXISTS and INSERT OR IGNORE for idempotency)
  2. Regenerate bundle: cd packages/core && npm run generate:migrations
  3. Rebuild: npm run build:core
  4. Apply locally: cd my-sonicjs-app && wrangler d1 migrations apply DB --local

Common Commands

npm run dev          # Start dev server
npm run deploy       # Deploy to Cloudflare
npm run db:migrate   # Apply migrations
npm run db:studio    # Open database studio
npm test             # Run tests

📁 Project Structure

sonicjs/
├── packages/
│   ├── core/              # 📦 Main CMS package (@sonicjs-cms/core)
│   │   ├── src/
│   │   │   ├── routes/    # Route handlers (admin, API, auth)
│   │   │   ├── templates/ # HTML templates & components
│   │   │   ├── middleware/# Authentication & middleware
│   │   │   ├── utils/     # Utility functions
│   │   │   └── db/        # Database schemas & migrations
│   │   └── package.json
│   ├── templates/         # Template system package
│   └── scripts/           # Build scripts & generators
│
├── my-sonicjs-app/        # 🧪 Test application (gitignored)
│                          # Created with: npx create-sonicjs@latest
│
├── www/                   # 🌐 Marketing website
└── tests/e2e/             # End-to-end test suites

⚠️ **This is NOT an

readme truncated — read the full docs on github

Frequently asked questions

Is sonicjs free to use?

sonicjs is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does sonicjs do?

SonicJS - The edge-native headless CMS for Cloudflare Workers. Sub-100ms response times, zero cold starts, TypeScript-first. Built on D1, R2, and Hono.

What is sonicjs written in?

sonicjs is primarily written in TypeScript. Its source is publicly available at https://github.com/SonicJs-Org/sonicjs, and it has 1,724 GitHub stars.