HTMLess

HTMLess is an open source headless CMS for developers, designers, editors, and agencies who want structured content, clean APIs, and Docker-first self-hosting without getting trapped in a bloated platform.
It is designed around a simple idea: content teams should have an interface they can actually use, and frontend teams should get predictable APIs that fit modern websites, apps, and multi-site setups.
Status: active development. The monorepo, Docker workflow, core API surfaces, admin app, and worker architecture are in place today, with the roadmap tracking the remaining hardening and advanced CMS features.
Why HTMLess
- Structured content instead of page-builder lock-in
- Clean separation between management, delivery, and preview APIs
- Self-hosting with Docker and an MIT-licensed core
- A foundation for multi-site, agency, and team workflows
- A simpler mental model for both developers and less technical collaborators
Who It Is For
- Developers who want predictable content APIs, versioned workflows, and a CMS that does not fight their frontend stack
- Designers and editors who want a more visual content workflow, reusable media, and preview before publishing
- Agencies that need one content platform for multiple clients, brands, or websites
What You Get In This Repo
@htmless/corefor the API layer built on Express, Prisma, PostgreSQL, and Redis@htmless/adminfor the Next.js admin experience@htmless/workerfor background jobs and event-driven processing- Dockerfiles and Compose files for local development and self-hosted deployment
- Project docs covering architecture, security, roadmap, and product direction
Quick Start With Docker
The fastest way to evaluate HTMLess is to run the full stack locally with Docker.
git clone https://github.com/HTMLess-CMS/HTMLess.git htmless
cd htmless
cp .env.example .env
docker compose up -d --build
docker compose exec api pnpm --filter @htmless/core prisma db push
docker compose exec api pnpm --filter @htmless/core prisma db seed
After boot:
- API:
http://localhost:3000 - Admin:
http://localhost:3001 - Default login:
admin@htmless.com/admin123
Before using HTMLess outside local evaluation, update the secrets in .env.
Local Development
For day-to-day development, use Docker for infrastructure and run the apps from the workspace.
git clone https://github.com/HTMLess-CMS/HTMLess.git htmless
cd htmless
pnpm install
docker compose -f docker-compose.dev.yml up -d
pnpm db:push
pnpm db:seed
pnpm dev
Then start the admin app in a second terminal:
pnpm dev:admin
Useful commands:
pnpm devstarts the core API and ensures Docker services are uppnpm dev:adminstarts the admin UI onhttp://localhost:3101pnpm dev:allruns API, admin, and worker togetherpnpm buildbuilds every package in the workspacepnpm lintruns package linters
Product Shape
HTMLess is built around three API surfaces with clear responsibilities:
- CMA at
/cma/v1for content management, editorial actions, and automation - CDA at
/cda/v1for read-only content delivery to websites and apps - Preview at
/preview/v1for draft-aware rendering and review flows
This separation keeps editorial operations safer while giving frontend teams a delivery-oriented API they can cache and integrate cleanly.