Skip to main content
← Back to Projects

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/core for the API layer built on Express, Prisma, PostgreSQL, and Redis
  • @htmless/admin for the Next.js admin experience
  • @htmless/worker for 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 dev starts the core API and ensures Docker services are up
  • pnpm dev:admin starts the admin UI on http://localhost:3101
  • pnpm dev:all runs API, admin, and worker together
  • pnpm build builds every package in the workspace
  • pnpm lint runs package linters

Product Shape

HTMLess is built around three API surfaces with clear responsibilities:

  • CMA at /cma/v1 for content management, editorial actions, and automation
  • CDA at /cda/v1 for read-only content delivery to websites and apps
  • Preview at /preview/v1 for 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.