DEV Community

hamed pakdaman
hamed pakdaman

Posted on • Originally published at unfoldcms.com

Is There a CMS Built with shadcn/ui? Yes — UnfoldCMS

📝 Originally published on unfoldcms.com — reposted here for the DEV community. (I work on UnfoldCMS.)

Search "is there a CMS built with shadcn/ui" and you'll find admin templates, GitHub stars, and Reddit threads asking the same question. No actual CMS in the top 10. We built one — 51 shadcn/ui components, 205 admin pages, three themes from one codebase. This post is the direct answer to that query and a tour of what "shadcn-native CMS" actually means in production.

TL;DR: Yes — UnfoldCMS is a CMS built entirely on shadcn/ui (Laravel 12 + React 19 + Inertia 2 + Tailwind v4). The admin uses 51 real shadcn components — not a wrapped abstraction, not a vendor-skinned widget set. You can fork any component the same way you'd fork shadcn anywhere else. Below: why no one else shipped this first, what the admin looks like, and the honest tradeoffs.


Is There a CMS Built with shadcn/ui?

Yes. UnfoldCMS is the first production CMS where the entire admin is built on shadcn/ui. Not a template, not an admin starter — a full CMS with content modeling, an editor, a media library, a REST + GraphQL API, role-based access, and a marketing site, all sharing the same 51-component shadcn design system.

Most "shadcn CMS" results in Google are one of three things:

  • A dashboard template (no content model, no API, no editor)
  • A demo repo showing a few admin screens (no real product behind it)
  • A tutorial on building one from scratch (you finish it and realize you've shipped half a CMS)

A real CMS needs all of: a content schema, a stable API, a media pipeline, a search index, scheduling, drafts, redirects, sitemaps, RBAC, and an editor that doesn't fight you. Wiring all of that to shadcn — and keeping it forkable — is the part nobody had finished.


What "shadcn-Native" Actually Means

When we say UnfoldCMS is built on shadcn/ui, we mean the literal shadcn philosophy: you own the component code. There's no @unfoldcms/ui package gating you behind a vendor abstraction. The admin's Button, DataTable, Sidebar, Dialog, Command, Toast — they all live in resources/js/components/ui/ as standard shadcn files. Fork one and rebuild your admin in an afternoon.

That sounds obvious until you compare it to what other CMS admins look like:

CMS Admin built on Customize the admin?
WordPress jQuery + PHP templates Override CSS, fight the rest
Strapi React + custom design system Plugin API only
Payload React + custom design system Override via component swap config
Directus Vue + Vuetify Theming hooks
Sanity React + custom Studio Studio Schema only
UnfoldCMS shadcn/ui + Tailwind v4 Edit the .tsx file directly

Every admin in the table above ships with its own proprietary component vocabulary. UnfoldCMS ships with a vocabulary you already know if you've ever pasted from shadcn-ui.com.


What 51 Components Look Like in Production

We didn't import 51 shadcn components for a screenshot — we used them. Here's where they ended up:

  • DataTable + ColumnHeader + Pagination → the Posts, Media, Users, and Settings lists
  • Sidebar + NavigationMenu → the persistent left rail across 205 admin pages
  • Command + Popover → the global ⌘K search jumping across posts, pages, settings, plugins
  • Dialog + AlertDialog + Drawer → confirmation flows, media picker, slide-in editors
  • Form + Input + Textarea + Select + Combobox + Calendar + DatePicker → every CMS form you'd expect, plus the publish-date Tehran-time scheduler
  • Tabs + Accordion + Card → the post editor's SEO / Media / Schedule panels
  • Toast + Sonner → save confirmations, upload progress, error reporting
  • Avatar + Badge + Tooltip + ContextMenu + DropdownMenu + Sheet → every dense list item interaction you can think of

This is the part most "shadcn admin template" repos skip. Wiring all the components in one product, against real data, in 205 pages — that's where the gaps in the design system show up. Filling those gaps is the year-long engineering work that separates "we use shadcn" from "we shipped a CMS on shadcn".


How Do You Theme a shadcn CMS?

You theme it the way you theme anything in Tailwind v4: change the CSS variables. UnfoldCMS ships with three themes from one codebase — Default Blue (#2563EB), Purple, and Unfold soft-purple (#938DE5) — switched via a single data-theme attribute on the root.

[data-theme="default"]   { --primary: oklch(0.546 0.245 262.881); }
[data-theme="purple"]    { --primary: oklch(0.488 0.243 264.376); }
[data-theme="soft"]      { --primary: oklch(0.611 0.137 297.4);   }
Enter fullscreen mode Exit fullscreen mode

That's it. Every shadcn component reads --primary (and the rest of the token set), so adding a fourth theme is one CSS block. Customers who want their admin to match their brand don't have to fork the whole admin — they edit four CSS variables.

For the full token system + how Tailwind v4's new @theme directive ties it together, see Tailwind v4 + shadcn/ui: Building a Themeable CMS.


Why Did No One Ship This First?

Three reasons.

1. shadcn/ui is new enough that the "production at scale" stories are still being written. It went 1.0 in late 2023. By the time anyone could realistically ship a year-long CMS build on it, we were already in 2026. The window was small.

2. Most React-CMS work in 2024–2025 happened in the Payload / Strapi / Sanity orbit. Those teams had already committed to their own component systems. Restarting on shadcn would have meant throwing away a year of UI work.

3. The shadcn ecosystem rewards templates, not products. Every shadcn dashboard on a starter-kit marketplace is a template. Going from template → real CMS is a completely different scope — content modeling, scheduling, RBAC, media, API, sitemaps, drafts, redirects. Most teams stop at "looks like an admin" because finishing the rest is a year of work.

We started UnfoldCMS specifically because we wanted to use shadcn in a real CMS and nobody had shipped one. Twelve months later it's live. The full breakdown of why a CMS admin built on shadcn matters is in The CMS Built on shadcn/ui: Why It Matters.


The Honest Tradeoffs

UnfoldCMS being shadcn-native is the headline. Here are the parts we wouldn't put on the homepage:

  • The component count keeps growing. shadcn adds ~1 new component per month. Keeping the CMS aligned with upstream is work — we track it in a public roadmap.
  • You need to know React. WordPress lets a non-developer fix a typo by clicking Edit. UnfoldCMS does too — but extending the admin means editing .tsx files. If your team is PHP-only, that's friction.
  • Mature plugin ecosystems still beat us on breadth. WordPress has 60,000 plugins. We have a few dozen first-party integrations and a clean extension API. Most teams don't need 60,000 plugins — but if you do, we're not the right fit yet.
  • shadcn is opinionated. If you wanted Material Design or Ant Design, the admin is going to feel sparse. That's the shadcn aesthetic. We think it's the right call, but it's a call.

For the longer comparison of shadcn vs other admin libraries, see shadcn/ui vs Ant Design vs Material UI.


What's in the Stack

For anyone evaluating shadcn-native CMSes, here's the full stack — every claim verified against the source repo:

Layer Tool Why
Backend framework Laravel 12 Mature, batteries-included, fastest path to production for a CMS
API REST + GraphQL /api/v1/* public read, Sanctum-auth admin write, /graphql endpoint
Frontend framework React 19 shadcn's home base, server components ready
SSR bridge Inertia 2 Laravel + React without a separate Next.js layer
Type system TypeScript Required for shadcn — every component ships typed
UI library shadcn/ui (51 components) The whole reason this post exists
Styling Tailwind v4 Token-based theming, CSS variables, faster than v3
Icons Lucide React shadcn's default icon pair
Editor Block-based with markdown export Saves drafts, autosave, schedule, SEO panel
Media Spatie Media Library First-class image variants, WebP conversion

This is a stack a modern React developer can read on the homepage and understand on the first try. That's the point.

The full architecture deep-dive lives at Laravel + React + shadcn/ui: The Modern CMS Stack.


Who Is a shadcn-Native CMS For?

A few audiences. If you fit any of these, UnfoldCMS is the answer to the title question:

  1. You already use shadcn/ui in your app and want a CMS whose admin matches your frontend's visual language without a Frankenstein iframe embed.
  2. You're a developer-first agency that hands a CMS to clients but also needs to extend it for every new project. A shadcn admin is one stack you already know.
  3. You want admin source code that doesn't lock you in. If our company disappears tomorrow, you still have a working React + Laravel app you can run, fork, and extend.
  4. You're tired of fighting WordPress block editor / Gutenberg. shadcn's editor isn't trying to be a page builder — it's trying to be a fast content editor.

For agencies specifically, the handover story is the killer feature — see CMS for Agency Client Sites for how that plays out in delivery.


FAQ

Q: Is UnfoldCMS the only CMS built with shadcn/ui?
A: As of June 2026, yes — based on a search of GitHub topics, awesome-shadcn-ui, and the top SERP results for "CMS built with shadcn". There are several shadcn admin templates and dashboard starters, but no other full CMS (with content modeling, API, editor, RBAC, scheduling, and media) built on shadcn. If that changes, this post will update.

Q: Does the admin work without a build step?
A: No — UnfoldCMS uses Inertia 2 + React 19, which requires a Vite build for the admin assets. Public site rendering is server-side Blade and works without a JS build.

Q: Can I use my existing shadcn components in the admin?
A: Yes. Drop your component into resources/js/components/ui/ and import it the same way the built-ins are imported. If it follows shadcn's standard prop pattern, it just works.

Q: How is this different from Payload or Strapi with a shadcn-styled admin?
A: Payload and Strapi ship their own admin components and let you wrap or override them. UnfoldCMS ships the shadcn components as the admin — there's no wrapper layer between you and the shadcn primitives.

Q: What version of shadcn/ui does UnfoldCMS use?
A: Latest as of release. We track upstream changes and update the admin's components when shadcn ships meaningful diffs. The component count today is 51 (verified by find cms/resources/js/components/ui -name "*.tsx" | wc -l).

Q: Is the source available?
A: Yes — UnfoldCMS is source-available (the Core build). You can self-host the full admin + API on your own server. See the pricing page for the licensing details.


Try It

If you're searching for a shadcn-native CMS, the easiest next step is the live shadcn-CMS landing page — it shows the full component tour, the admin screenshots, and the side-by-side with Payload, Strapi, Directus, and Sanity.

We're not claiming UnfoldCMS is perfect. WordPress has more plugins. Payload has a more mature schema-as-code story. Sanity's Studio is a beautiful piece of engineering. UnfoldCMS bets on a different thing — the admin you build is the admin you own, with no proprietary component layer between you and the framework.

If that bet matches yours, start with the demo or self-host the Core build.


Methodology / Sources

  • Component count (51): find cms/resources/js/components/ui -name "*.tsx" | wc -l against the live UnfoldCMS source as of 2026-06-07.
  • Admin page count (205): find cms/resources/js/pages/admin -name "*.tsx" | wc -l same date.
  • Theme system: verified against cms/resources/css/theme.css and cms/CLAUDE.md.
  • SERP analysis for "is there a cms built with shadcn": Google.com top 10 reviewed June 7, 2026. Zero results were real CMS products; the SERP was admin templates (Tremor Dashboard, Shadcnblocks, kiranism/next-shadcn-dashboard-starter), GitHub demos, and Reddit/X threads.
  • shadcn/ui release timeline: shadcn-ui GitHub releases, 1.0 milestone October 2023.
  • Competitor stack details: verified from each vendor's official documentation as of June 2026 (Strapi v5, Payload v3, Directus v11, Sanity v3 Studio).

Related: The CMS Built on shadcn/ui: Why It Matters · Laravel + React + shadcn/ui: The Modern CMS Stack · 50 shadcn/ui Components in a Real Production Admin


💬 First published on my own site: https://unfoldcms.com/blog/is-there-a-cms-built-with-shadcn/

UnfoldCMS is a self-hosted, developer-first CMS. If any of this was useful — or you disagree — I'm in the comments.

Top comments (0)