SonicJS
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.
📦 Get Started
npx create-sonicjs@latest my-app
$0 to start · No signup required · Runs anywhere SQLite runs
⚠️ 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-sonicjsCLI: 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).
- Create
packages/core/migrations/NNN_description.sql(useCREATE TABLE IF NOT EXISTSandINSERT OR IGNOREfor idempotency) - Regenerate bundle:
cd packages/core && npm run generate:migrations - Rebuild:
npm run build:core - 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