Skip to content

Introduction

ACMS (Any Content Management System) is a framework-agnostic, schema-less CMS. Replace a string with acms.something in your code and it becomes instantly editable — no schema definitions, no boilerplate, no lock-in.

Traditional CMS platforms make you define content models before you can use them. ACMS works in reverse: you write code, and the schema materializes automatically.

// You write this:
<h1>{acms.hero.title}</h1>
<p>{acms.hero.subtitle}</p>
// ACMS detects the fields, registers them, and makes them editable.
// That's it.

ACMS is composed of three pieces you can mix and match:

  1. Client Library (@useacms/client) — The proxy system that detects field access. Works with any JavaScript framework: React, Vue, Svelte, Astro, SvelteKit, Next.js, Nuxt, vanilla JS, and more.

  2. Storage Adapters — Pluggable backends where your content lives. Choose local files, GitHub, Vercel Edge Config, Cloudflare KV, Convex, or build your own.

  3. Editing Environment — How content gets edited. Use the self-hosted dashboard, build a custom UI with the REST API, edit acms.json directly, or use the hosted SaaS platform.

None of these components are coupled. You can swap any one without touching the others.

┌─────────────────────────────────────────┐
│ Your App (any JS framework) │
│ import { acms } from '@useacms/client' │
└───────────────┬─────────────────────────┘
┌──────▼───────┐
│ @useacms/client │ ← Proxy detects field access
└──────┬───────┘
┌───────────┼───────────┐
▼ ▼ ▼
Local GitHub Vercel / CF ← Storage (you choose)
File Gist/Repo / Convex
│ │ │
▼ ▼ ▼
Dashboard Custom UI SaaS ← Editing (you choose)
Traditional CMSHeadless CMSACMS
SchemaDefine up frontDefine up frontAuto-detected from code
Lock-inHighMediumNone
FrameworkSpecificAPI-basedAny JS framework
Setup timeHoursMinutesSeconds
Type safetyManualManual/GeneratedAuto-generated

Ready to try it? Head to the Getting Started guide to set up ACMS in under 5 minutes.