Overview
What NebulaCMS is and how the stack is organized.
New to NebulaCMS? Read Start here first — it points you to installation, everyday admin help, or developer topics depending on your role.
NebulaCMS is an open-source content management system built with Laravel 12, a React + TypeScript admin (via Inertia.js), and a Blade-based public site driven by themes.
Major components
- Admin panel (
/admin/*) — SPA-style UI with Inertia, Radix/Shadcn, Tailwind. Authenticated users manage posts, pages, media, users, roles, themes, plugins, menus, and settings. - Public frontend — Rendered with the active theme under
themes/{folder}/views. Views use thetheme::namespace registered inApp\Providers\ThemeServiceProvider. - Hooks — Actions and filters via
HookService(a conventional hook pattern) so themes and plugins extend behavior without editing core files. - Plugins — PHP packages under
plugins/{slug}/with aplugin.jsonmanifest and an entry file (e.g.index.php).
High-level request flow
flowchart LR
subgraph public [Public site]
Browser --> LaravelRouter
LaravelRouter --> FrontendController
FrontendController --> ThemeViews
end
subgraph admin [Admin]
BrowserAdmin --> LaravelRouter
LaravelRouter --> InertiaControllers
InertiaControllers --> ReactPages
end
- Guest requests hit
routes/web.php→FrontendController(or feed/sitemap) → Blade views from the active theme. - Staff requests to
/adminuseroutes/admin.phpwithauth+verifiedmiddleware → Inertia responses → React pages.
Tech stack (summary)
| Layer | Technology |
|---|---|
| Backend | PHP 8.3+, Laravel 12 |
| Admin UI | React 19, TypeScript, Inertia, Tailwind |
| Public UI | Blade, theme CSS/JS |
| Database | MySQL / PostgreSQL (Eloquent) |
| Auth | Laravel auth, email verification, optional 2FA (TOTP) |
| Permissions | Spatie Laravel Permission (roles & permissions) |