PHPackages                             opscale-co/nova-package-tools - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. opscale-co/nova-package-tools

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

opscale-co/nova-package-tools
=============================

Tools for creating Nova packages

1.0.1(7mo ago)0521↑33.3%9MITPHPPHP ^8.2CI passing

Since Sep 19Pushed 7mo agoCompare

[ Source](https://github.com/opscale-co/nova-package-tools)[ Packagist](https://packagist.org/packages/opscale-co/nova-package-tools)[ Docs](https://github.com/opscale-co/nova-package-tools)[ RSS](/packages/opscale-co-nova-package-tools/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (12)Versions (3)Used By (9)

Support us
----------

[](#support-us)

At Opscale, we’re passionate about contributing to the open-source community by providing solutions that help businesses scale efficiently. If you’ve found our tools helpful, here are a few ways you can show your support:

⭐ **Star this repository** to help others discover our work and be part of our growing community. Every star makes a difference!

💬 **Share your experience** by leaving a review on [Trustpilot](https://www.trustpilot.com/review/opscale.co) or sharing your thoughts on social media. Your feedback helps us improve and grow!

📧 **Send us feedback** on what we can improve at . We value your input to make our tools even better for everyone.

🙏 **Get involved** by actively contributing to our open-source repositories. Your participation benefits the entire community and helps push the boundaries of what’s possible.

💼 **Hire us** if you need custom dashboards, admin panels, internal tools or MVPs tailored to your business. With our expertise, we can help you systematize operations or enhance your existing product. Contact us at  to discuss your project needs.

Thanks for helping Opscale continue to scale! 🚀

Description
-----------

[](#description)

This package extends [Spatie's Laravel Package Tools](https://github.com/spatie/laravel-package-tools) to provide Nova-specific functionality for package development. It inherits all the features from the base package while adding support for Nova resources.

Installation
------------

[](#installation)

[![Latest Version on Packagist](https://camo.githubusercontent.com/d6ff509161b0c538bc3a2869849d2d58747c0441ca96ccac2da51f8cb1853a4e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6f707363616c652d636f2f6e6f76612d7061636b6167652d746f6f6c732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/opscale-co/nova-package-tools)

You can install the package in to a Laravel app that uses [Nova](https://nova.laravel.com) via composer:

```
composer require opscale-co/nova-package-tools
```

Usage
-----

[](#usage)

### Getting Started

[](#getting-started)

In your Nova package, you should let your service provider extend `Opscale\NovaPackageTools\NovaPackageServiceProvider`:

```
use Opscale\NovaPackageTools\NovaPackageServiceProvider;
use Spatie\LaravelPackageTools\Package;

class YourNovaPackageServiceProvider extends NovaPackageServiceProvider
{
    public function configurePackage(Package $package): void
    {
        $package
            ->name('your-nova-package')
            ->hasConfigFile()
            ->hasViews()
            ->hasMigration('create_your_package_tables')
            ->hasCommand(YourPackageCommand::class)
            // Nova-specific features are now directly available
            ->hasResource(YourResource::class)
            ->hasResources([
                UserResource::class,
                PostResource::class,
            ]);
    }
}
```

### Nova Resources

[](#nova-resources)

The main addition this package provides is the ability to register Nova resources with your package.

#### Registering a Single Resource

[](#registering-a-single-resource)

You can register a single Nova resource using the `hasResource` method:

```
use App\Nova\User;

$package
    ->name('your-nova-package')
    ->hasResource(User::class);
```

#### Registering Multiple Resources

[](#registering-multiple-resources)

If your package provides multiple Nova resources, you can register them all at once using `hasResources`:

```
use App\Nova\User;
use App\Nova\Post;
use App\Nova\Comment;

$package
    ->name('your-nova-package')
    ->hasResources([
        User::class,
        Post::class,
        Comment::class,
    ]);
```

You can also pass multiple resources as separate arguments:

```
$package
    ->name('your-nova-package')
    ->hasResources(User::class, Post::class, Comment::class);
```

Testing
-------

[](#testing)

```
npm run test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](https://github.com/opscale-co/.github/blob/main/CONTRIBUTING.md) for details.

Security
--------

[](#security)

If you discover any security related issues, please email  instead of using the issue tracker.

Credits
-------

[](#credits)

- [Opscale](https://github.com/opscale-co)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance62

Regular maintenance activity

Popularity17

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 83.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~4 days

Total

2

Last Release

237d ago

PHP version history (2 changes)1.0.0PHP ^8.0

1.0.1PHP ^8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/3722594?v=4)[opscale](/maintainers/opscale)[@opscale](https://github.com/opscale)

---

Top Contributors

[![opscale-development](https://avatars.githubusercontent.com/u/181295122?v=4)](https://github.com/opscale-development "opscale-development (10 commits)")[![semantic-release-bot](https://avatars.githubusercontent.com/u/32174276?v=4)](https://github.com/semantic-release-bot "semantic-release-bot (2 commits)")

---

Tags

opscalenova-package-tools

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

### Embed Badge

![Health badge](/badges/opscale-co-nova-package-tools/health.svg)

```
[![Health](https://phpackages.com/badges/opscale-co-nova-package-tools/health.svg)](https://phpackages.com/packages/opscale-co-nova-package-tools)
```

###  Alternatives

[guava/calendar

Adds support for vkurko/calendar to Filament PHP.

298241.0k3](/packages/guava-calendar)[tonysm/rich-text-laravel

Integrates Trix content with Laravel

46577.8k1](/packages/tonysm-rich-text-laravel)[hydrat/filament-table-layout-toggle

Filament plugin adding a toggle button to tables, allowing user to switch between Grid and Table layouts.

6292.3k1](/packages/hydrat-filament-table-layout-toggle)[tonysm/globalid-laravel

Identify app models with a URI. Inspired by the globalid gem.

45101.6k2](/packages/tonysm-globalid-laravel)[ralphjsmit/laravel-helpers

A package containing handy helpers for your Laravel-application.

13704.6k2](/packages/ralphjsmit-laravel-helpers)[spatie/laravel-screenshot

Take screenshots of web pages in Laravel apps

7615.9k2](/packages/spatie-laravel-screenshot)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
