Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Cms Nova Laravel Package

yeswedev/laravel-cms-nova

A Laravel CMS package built for Laravel Nova, giving you ready-made content management for pages and site content inside the Nova admin panel. Manage, edit, and publish content with familiar Nova resources and fields, so you can ship a customizable CMS-backed site faster.

View on GitHub
Deep Wiki
Context7

Getting Started

This package carries almost no public footprint (no stars, no listed dependents, hosted on Framagit rather than GitHub), so treat the first hour as reconnaissance rather than a normal composer require. Start by confirming the install resolves against your Laravel/Nova versions:

composer require yeswedev/laravel-cms-nova
composer show yeswedev/laravel-cms-nova   # inspect requires: laravel/framework, laravel/nova, php

Before going further, read the package's composer.json constraints. Nova packages are tightly coupled to Nova majors (v4 vs v5 have different asset pipelines, Nova::script/style vs Vite), and a mismatch here is the single most likely reason nothing registers.

Where to look first, in order:

  1. vendor/yeswedev/laravel-cms-nova/src/ — find the service provider (likely CmsNovaServiceProvider or similar) and read register() / boot() / booted() line by line. This tells you exactly what it wires up: Nova::tools(), Nova::cards(), Nova::resources(), menu entries, routes, migrations, policies.
  2. vendor/yeswedev/laravel-cms-nova/config/ — any publishable config, and the key names it expects.
  3. vendor/yeswedev/laravel-cms-nova/database/migrations/ — what tables it assumes or creates (pages, blocks, menus, translations).
  4. vendor/yeswedev/laravel-cms-nova/routes/ — front-end vs Nova routes, and any middleware groups.
  5. vendor/yeswedev/laravel-cms-nova/resources/ — views and JS/CSS that need publishing.

Then publish whatever is offered:

php artisan vendor:publish --provider="YesWeDev\\CmsNova\\CmsNovaServiceProvider"
php artisan migrate
php artisan config:clear && php artisan route:clear && php artisan view:clear

First use case: log into /nova, confirm the package's tool or menu group appears in the sidebar, create a single content/page record through its UI, and verify the corresponding front-end URL renders. That end-to-end loop exercises routes, authorization, model bindings, and view resolution in one shot — if any of those are broken, you'll find out immediately.

Implementation Patterns

Treat the package as a Nova tool shell, not an application framework. The realistic pattern is: the package gives you a Nova tool/dashboard and possibly base resources, and you extend it inside your app rather than editing vendor code. Concretely:

  • Register and gate the tool. Nova tools need both registration and authorization. If the provider registers via Nova::tools([...]), check whether the tool implements authorizedToSee() or relies on a gate. Define the gate in AuthServiceProvider if it doesn't ship one, otherwise you'll get a silent 403 or a missing menu item.
  • Subclass resources. If the package ships Nova resources (e.g. Page, Block, Menu), don't modify them. Create App\Nova\Page extends YesWeDev\...\Page and override fields(), cards(), actions(). Swap the registration in NovaServiceProvider::resources() to your subclass. This survives composer update.
  • Content modeling workflow. Typical CMS shape: a content root (page/post) with ordered child blocks, a publish state, and optional translations. Manage the root in Nova, manage ordering via a HasMany + sortable/nova-sortable field or the package's own field if provided. Keep publish state as an explicit enum column so both Nova and front-end queries agree.
  • Front-end integration. Check whether the package registers its own front-end routes. If it does, prefer mounting them under a prefix (config('cms.prefix', 'cms')) so they don't collide with your app's catch-all. If it doesn't, resolve content yourself in a controller/route-model-binding and use the package only for the admin surface.
  • Localization. If translations exist, decide early whether you're using per-locale rows or JSON columns. Nova handles per-locale rows more cleanly (filterable, separate resources); JSON columns are cheaper but awkward to search. Don't mix.
  • Caching. CMS content is read-heavy. Wrap front-end resolution in Cache::remember() keyed by slug + locale, and flush on the model's saved/deleted events. Nova edits are rare; don't let a query-per-request pattern reach production.
  • Testing pattern. Use Nova's testing helpers (Nova::actingAs($user)) for feature tests over the tool, and plain RefreshDatabase for the content models. If the package ships factories, use them; otherwise write your own — you'll need them for any regression work given the package's low maintenance signal.

Gotchas and Tips

  • Nova major-version mismatch is the top failure mode. Nova 4 uses Mix-era Nova::script/Nova::style; Nova 5 moved to Vite. If the tool's assets 404 or the JS console throws on Nova.booting, you're on the wrong Nova major. Pin the package version and verify with composer why laravel/nova.

  • This package is effectively unmaintained by signal. Zero stars and zero dependents means no community buffer: no issue reports to learn from, no fork to inherit fixes. Pin to an exact version in composer.json, commit your composer.lock, and plan to fork or vendor-copy the src/ directory into app/ if you need to patch. Budget for that from day one rather than discovering it during an upgrade.

  • Publishable config vs config:cache. Anything published before a config cache is baked in silently wins over new defaults. Run php artisan config:clear after every vendor:publish and after any package update.

  • Asset publishing is two-step. vendor:publish handles PHP config/views/migrations; Nova assets may need php artisan nova:publish. Missing a step is the usual cause of "the tool shows up but is blank."

  • Migration ordering collisions. CMS packages often ship create_pages_table-style migrations that collide with app tables of similar names. Check the migration names in vendor/ before running migrate on a database that already has content tables.

  • Route catch-all shadowing. If your front-end has Route::get('{slug}', ...), it will happily swallow the package's routes (or vice versa). Verify with:

    php artisan route:list --path=nova
    php artisan route:list -v | grep -i cms
    
  • Authorization silent failures. Nova filters menu items by policy/gate rather than erroring. If the tool "disappears," it's usually authorization, not a broken install — log in as a super-admin to isolate.

  • Extension points to prefer over edits: publishable config and views, resource subclassing, Nova custom fields, model events for cache invalidation, and middleware added via config/nova.php middleware/api_middleware arrays. Avoid touching vendor/ — a composer install on another machine will silently revert it.

  • Debugging toolkit: php artisan about to confirm the provider loaded, dd(Nova::availableResources(request())), Laravel Telescope for the queries the tool issues, and the browser network tab for 404s on JS/CSS chunks. Most "it's broken" reports resolve to one of: provider not autoloaded (composer dump-autoload), assets unpublished, or Nova version mismatch.

  • Read the source before the README. Given the package's size and hosting, the README is likely thin or French-language. src/ is the authoritative spec — 200 lines of provider code tells you more than any docs you'll find.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource