digitalcloud/nova-blog-tool
DigitalCloud Nova Blog Tool brings blog management into Laravel Nova, letting you create, edit, publish, and organize posts with categories and tags from a familiar admin interface. It simplifies everyday content workflows for Nova-powered applications.
Install it into an existing Nova app (it assumes laravel/nova is already installed and licensed):
composer require digitalcloud/nova-blog-tool
Register the tool in app/Providers/NovaServiceProvider.php. Nova tools are not auto-discovered, so look for the tool class in the package namespace (typically DigitalCloud\BlogTool\BlogTool or similar — open vendor/digitalcloud/nova-blog-tool/src and check the ToolServiceProvider first, since this repo is small and likely unmaintained and the exact namespace may differ from the README):
public function tools()
{
return [
new \DigitalCloud\BlogTool\BlogTool,
];
}
Publish and run migrations. This is the step to check first — open the package's src folder and confirm whether migrations/models ship inside the package or are expected to be published. Typical:
php artisan vendor:publish --provider="DigitalCloud\BlogTool\BlogToolServiceProvider" --tag=migrations
php artisan migrate
Also check for a --tag=config publish; if a config file exists, skim it before touching anything else.
Locate the resource in Nova's sidebar. After registration you should see a Blog/Posts entry. That resource is the package's UI — the underlying Eloquent models are what you'll build the frontend against.
First use case: create one post through the Nova UI end-to-end (title → slug → body → publish), then query it from tinker to confirm the table/column names and model class before writing any frontend code. The column naming is the real contract you'll depend on.
Given the low star count and stale score, treat step 3 as a go/no-go gate: if migrations don't match your Laravel version or the models aren't discoverable, stop and evaluate alternatives before building on it.
Post that extends the vendor one) if you need scopes, accessors, or relationships to your own entities. Overriding behavior in your app layer survives composer update; editing vendor/ does not.{post:slug} and add a getRouteKeyName() override in your wrapper class rather than relying on whatever the package chose.published()) and use it consistently in controllers, sitemaps, and feeds. Do not scatter where('status', ...) across the codebase — the enum value names are the package's to change.public/your CDN disk explicitly; uploads tied to a hardcoded disk are a common source of broken production images.dist/), run php artisan vendor:publish --tag=nova-blog-tool-assets or nova:publish as the README dictates, and commit published assets if your deploy doesn't rebuild them.composer.json, and read the repo's composer.json constraints for laravel/nova before installing.app/ or a private path repository) if you ship it to production — that removes the "install breaks" failure mode entirely.vendor:publish lists no tags, inspect ToolServiceProvider::$publishes directly. Some small packages expect you to create tables yourself — check for a database/ folder.php artisan config:clear; Nova tools silently mis-register under a stale config cache.tools(), the provider is registered (Nova auto-discovers service providers via extra.laravel.providers — verify it's there), then php artisan optimize:clear. A 500 on the Nova dashboard usually means a missing asset publish or a mismatched Nova version.booted() hook (creating/updating), otherwise the first duplicate insert throws and you'll be debugging Nova's error toast instead of your code.$fillable on the package model; if the editor field isn't fillable, saving from a custom form silently drops content with no error.dd() on the Nova resource's fields() method is faster than searching GitHub issues. The resource class is the spec.How can I help you explore Laravel packages today?