The modern Laravel CMS built on shadcn/ui — self-hosted, source-available, one-time license.
UnfoldCMS is a self-hosted content management system for developers and agencies who want WordPress-class ease of use without WordPress's tradeoffs. Laravel 11 + React 19 + Inertia 2 + Tailwind v4. The entire admin is built on shadcn/ui — 50+ components, 183 pages, three themes.
🎯 One-time license per site. No subscriptions, no usage caps, no SaaS lock-in. 💰 Runs on a $5/month VPS. ~80 MB RAM idle. Shared hosting works too. 🔓 You own your data. Full SQL + files export at any time.
| Owned, not rented | Source code, database, and content live on your server. Full SQL + files export at any time. |
| Modern stack | Laravel 11 + React 19 + TypeScript + Tailwind v4 + shadcn/ui. The admin is your code, not a vendor widget. |
| One-time pricing | $99 Solo, $199 Pro, $499 Agency. No monthly bill that scales with your traffic. |
| Built for developers | Schema-as-code via PHP migrations. Service-provider extension model. No vendor framework to learn. |
| Cheap to host | ~80 MB RAM idle on a $5/month Hetzner VPS. Shared hosting works too. |
| Multi-language ready | Translatable fields, hreflang tags, locale-prefix routing built in. |
| Module | Description |
|---|---|
| Posts and Pages | Block editor (Tiptap-based), structured fields, scheduled publishing |
| Media Library | Spatie Media Library, polymorphic associations, on-demand conversions |
| Menus | Tree-based builder, drag-and-drop reorder, internal/external/content links |
| Forms | JSON-schema builder, submissions table, CSV export, webhooks |
| Settings | Config-driven schema, admin UI auto-generated, frontend reads via Setting::get() |
| Theming | CSS variables + Tailwind v4 @theme directive, runtime swap, no build step |
| Templates | Full frontend designs (Aurora ships by default), seedable demo content |
| SEO | Meta tags, Open Graph, JSON-LD schema (Article, BreadcrumbList, Organization), hreflang |
| RBAC | Spatie Permission, granular per-model + per-action |
| Multi-language | spatie/laravel-translatable, JSON locale maps, URL-prefix routing |
| Activity log | Spatie ActivityLog, audit trail for all admin actions |
| Subscribers | Newsletter capture, double opt-in, segmentation, export |
Backend Laravel 11 + PHP 8.3 + Inertia 2
Frontend React 19 + TypeScript + Vite
UI shadcn/ui (50+ components) + Tailwind v4
Database MySQL 8 / MariaDB 10.6+ (SQLite for dev)
Editor Custom block editor on Tiptap foundation
Auth Laravel Fortify + 2FA
Media Spatie Media Library
Forms Spatie Honeypot + custom schema engine
SEO ralphjsmit/laravel-seo + custom JSON-LD layer
Hosting Any LAMP host or $5/mo VPS (Hetzner, DigitalOcean, Linode)
| Metric | Value |
|---|---|
| Lines of code | ~80K PHP + ~45K TS/TSX |
| Admin pages | 183 |
| shadcn components | 50+ |
| Themes shipped | 3 |
| Memory footprint (idle) | ~80 MB |
| Cold start | ~250 ms first request, ~40 ms warm |
| Build time (Vite + Inertia) | ~12 seconds |
| Test coverage | ~80% on critical paths (~600 PHPUnit tests) |
Note: This public repository is a read-only mirror of the core CMS. The full source ships under a source-available license to license holders. See the License section below.
No install needed — admin login is on the demo page:
# 1. Buy a license at https://unfoldcms.com/pricing
# 2. Download the release zip from your account dashboard
# 3. Extract and configure
unzip unfoldcms-{version}.zip
cd unfoldcms
cp .env.example .env
composer install --no-dev
php artisan key:generate
php artisan migrate
# 4. Set your license key in .env
echo "UNFOLD_LICENSE_KEY=your-key-here" >> .env
# 5. Visit your domain — admin is at /adminFull installation docs: unfoldcms.com/docs
UnfoldCMS isn't the right answer for every team. We're explicit about who it fits and who it doesn't:
| Comparison | Best for |
|---|---|
| vs WordPress | Laravel teams tired of WP plugin sprawl |
| vs Contentful | SMBs priced out of Contentful Lite |
| vs Sanity | Teams who want owned data |
| vs Payload CMS | Laravel vs Node tradeoff |
| vs Strapi | Laravel vs Node, paid vs free |
| vs Storyblok | Visual editing vs structured content |
| vs Ghost | Multi-page sites vs single-purpose blogs |
| vs Webflow | Code-first vs visual builder |
| vs Directus | CMS-first vs database-first |
| vs Hygraph | Self-hosted vs SaaS GraphQL |
| Full comparison hub | Browse all comparisons |
- Q3 2026 — Public headless API (REST + GraphQL), signed content webhooks
- Q4 2026 — Official
@unfoldcms/{nextjs,astro,sveltekit,nuxt}SDK packages - 2027 — Multi-tenant edition, plugin manifest system, AI-assisted content workflows
- Installation guide
- Theming guide
- Migration guides — WordPress, Contentful, Sanity, Strapi
- Why UnfoldCMS exists
- The complete guide to headless CMS in 2026
This is a one-way mirror — the core CMS source is developed in a private repository and published here on each release. We don't accept pull requests directly, but we read every issue and discussion.
| Want to | Do this |
|---|---|
| Report a bug | Open an Issue |
| Suggest a feature | Start a Discussion |
| Submit a patch | Paste your diff into an Issue or Discussion |
| Report a security issue | Email support@unfoldcms.com |
See CONTRIBUTING.md for the full process.
UnfoldCMS is source-available under the UnfoldCMS Source-Available License.
✅ You can:
- Read the source code in this repository
- Run UnfoldCMS for your own sites with a valid license
- Modify the code for your own use
- Submit patches via Issues or Discussions
❌ You can't:
- Run UnfoldCMS in production without a paid license
- Redistribute the code or sublicense it
- Use the UnfoldCMS name or logo in derivative products
See LICENSE for the full terms.
Hamed Pakdaman — a Laravel developer who got tired of fighting WordPress for client work and built a CMS that doesn't fight back.
If UnfoldCMS solved a problem for you, tell me — honest critique always welcome.