Engineering · Open Source · May 2025

I built an API-first CMS
and it took me years to get it right.

HashtagCMS is not a side project I whipped up over a weekend. It's a decade-long obsession, now in v3.0, built for developers who've suffered enough from bloated, opinionated content management systems.

Marghoob Suleman
10 min read
v3.0.x · Laravel 13+ · Vue 3
View on GitHub ↗
PHP Laravel API-First Vue.js Headless CMS Open Source Java Edition Spring Boot

A CMS that stays
out of your way.

HashtagCMS is an API-first, headless content management system built on Laravel. It gives you a clean, powerful admin interface and a structured content API — and then it gets out of the way so your frontend can be whatever it needs to be: React, Vue, Next.js, a mobile app, a kiosk, a smart TV app. It doesn't care.

Most CMS products assume they know how your content will be displayed. HashtagCMS doesn't. It treats content as structured data, not as pre-rendered HTML blobs tied to a templating engine. Your content, your frontend, your rules.

Version 3.0.x is built on Laravel 13 with a Vue 3 + Vite admin panel. It's cleaner, faster, and more extensible than anything that came before it.


Built for developers.
Not for marketing decks.

01 · Architecture
True API-First Design

Every content operation is exposed as a clean REST endpoint. No workarounds, no hacks — the API is the product, not an afterthought bolted onto a rendering engine.

02 · Content
Dynamic Content Types

Define your own content schemas with custom field types — text, rich text, media, relationships, repeaters. No code changes needed. Build the data model your project actually requires.

03 · Admin
Vue 3 Admin Panel

A fast, reactive admin UI built on Vue 3 and Vite. Editors get a clean, distraction-free interface. Developers get a codebase they can extend without wanting to quit.

04 · Foundation
Laravel 11 Backend

Built on the most developer-friendly PHP framework. Laravel's ecosystem — queues, events, policies, Sanctum auth — all available to extend HashtagCMS however you need.

05 · Media
Media Management

Upload, organise, and reference media assets cleanly through the API. Images, documents, videos — structured and accessible via the same consistent API contract.

06 · Auth
Role-Based Access

Granular permissions so your editorial team, your clients, and your devs all get exactly the access they need and nothing they don't.


"The best CMS is one your frontend developers never have to argue with. Content is data — treat it that way, and every team downstream wins." — Marghoob Suleman, Creator of HashtagCMS


How we got here.

v1.0 · Early Builds
The Spark

HashtagCMS started as an internal tool to escape the tyranny of WordPress and Drupal for API-driven projects. The initial versions were rough, but the philosophy was always clear: content as data, frontend as a separate concern.

v2.0 · Maturity
Finding its Footing

A more structured codebase, better content type management, and the beginning of a real admin panel. This is when HashtagCMS graduated from personal tool to something that could realistically be shared with others.

v3.0 · Current · 2024–2025
The Rebuild That Mattered

Full rebuild on Laravel 11 and Vue 3 + Vite. Cleaner API contracts, improved media handling, granular RBAC, and a UI that editors actually enjoy using. This is the version worth building on.

Java Edition · In Progress
The Enterprise Bet

A near-complete Java/Spring Boot port with the same Vue 3 frontend, targeting the large Indian IT organisations and enterprise teams where Java is non-negotiable. Multi-tenancy, SSO/SAML, audit trails — everything a procurement team needs to sign off on.


Why not just use
Strapi or Contentful?

Fair question. Strapi is good. Contentful is polished. Ghost is excellent for blogs. None of them are HashtagCMS.

Contentful is a SaaS with a pricing model that will eventually hurt you. Strapi is JavaScript all the way down — fine if that's your stack, a liability if it's not. Both make opinionated decisions that you'll eventually fight against.

HashtagCMS is PHP/Laravel — the language that still powers a significant fraction of the web's serious production workloads. It's self-hosted, meaning your data stays where you put it. And the Java edition is the only headless CMS I know of that speaks Spring Boot natively without wrapping a Node.js service behind a Java façade.

Is it perfect? No. The community is smaller. The plugin ecosystem doesn't match Strapi's. Documentation is still catching up to the ambition of the product.

But if you're a PHP developer who wants a headless CMS built on a stack you already understand deeply, or an enterprise Java team that wants a CMS that fits into your Spring Boot world without compromise — there isn't a better option right now.

That's the honest pitch. No hype.


Ready to build something
properly headless?