PHPackages                             mlsolutions/nova-dashboard - 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. [Admin Panels](/categories/admin)
4. /
5. mlsolutions/nova-dashboard

ActiveLibrary[Admin Panels](/categories/admin)

mlsolutions/nova-dashboard
==========================

The missing dashboard for nova.

v1.0.5(11mo ago)13.1k—10%MITVuePHP &gt;=8.1

Since Jun 17Pushed 11mo agoCompare

[ Source](https://github.com/ml-solutions-ltda/nova-dashboard)[ Packagist](https://packagist.org/packages/mlsolutions/nova-dashboard)[ GitHub Sponsors](https://github.com/milewski)[ RSS](/packages/mlsolutions-nova-dashboard/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (6)Dependencies (1)Versions (7)Used By (0)

Nova Dashboard
==============

[](#nova-dashboard)

[![Latest Version on Packagist](https://camo.githubusercontent.com/f3c8112ad79609fa6a3a45f9fdabb774cb38d37702bc46da3e3296e7ad432c86/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6c736f6c7574696f6e732f6e6f76612d64617368626f617264)](https://packagist.org/packages/mlsolutions/nova-dashboard)[![Total Downloads](https://camo.githubusercontent.com/d264bf691f2e6bccbdc5c288cc2537904ee5eab888d9527be49129076512e4cb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d6c736f6c7574696f6e732f6e6f76612d64617368626f617264)](https://packagist.org/packages/mlsolutions/nova-dashboard)[![License](https://camo.githubusercontent.com/a0cd8a5755c7e47e097fef3e8ce82177fb0d18e16d350dc5dec63d41738651db/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6d6c736f6c7574696f6e732f6e6f76612d64617368626f617264)](https://github.com/ml-solutions-ltda/nova-dashboard/blob/main/LICENSE)

  ![Laravel Nova Dashboard In Action](https://raw.githubusercontent.com/ml-solutions-ltda/nova-dashboard/main/screenshots/light.png)The missing dashboard for Laravel Nova!

Installation
============

[](#installation)

You can install the package via composer:

```
composer require mlsolutions/nova-dashboard

```

List of current available widgets:
----------------------------------

[](#list-of-current-available-widgets)

- Value Widget:
- Table Widget:
- ChartJs Widget:
- [Add your widget here.](https://github.com/ml-solutions-ltda/nova-dashboard/edit/main/README.md)

Usage
-----

[](#usage)

The dashboard itself is simply a standard Laravel Nova card, so you can use it either as a card on any resource or within the default Nova dashboard functionality.

```
use MlSolutions\NovaDashboard\Card\NovaDashboard;
use MlSolutions\NovaDashboard\Card\View;
use Laravel\Nova\Dashboards\Main as Dashboard;

class Main extends Dashboard
{
    public function cards(): array
    {
        return [
            NovaDashboard::make()
                ->addView('Website Performance', function (View $view) {
                    return $view
                        ->icon('window')
                        ->addWidgets([
                            BounceRate::make(),
                            ConversionRate::make(),
                            WebsiteTraffic::make(),
                            SessionDuration::make(),
                        ])
                        ->addFilters([
                            LocationFilter::make(),
                            UserTypeFilter::make(),
                            DateRangeFilter::make(),
                        ]);
                }),
        ];
    }
}
```

#### Static

[](#static)

By default, each widget is draggable, and the user is able to rearrange it to their liking. This behavior can be disabled by calling `$view->static()`.

Widgets
-------

[](#widgets)

The widgets are responsible for displaying your data on your views; they are essentially standard Nova cards. However, they respond to dashboard events and reload their data whenever the filters change.

Once you have a widget, they are usually configured like this:

```
class MyCustomWidget extends ValueWidget
{
    /**
     * Here you can configure your widget by calling whatever options are available for each widget
     */
    public function configure(NovaRequest $request): void
    {
        $this->icon('...');
        $this->title('Session Duration');
        $this->textColor('#f95738');
        $this->backgroundColor('#f957384f');
    }

    /**
     * This function is responsible for returning the actual data that will be shown on the widget,
     * each widget expects its own format, so please refer to the widget documentation
     */
    public function value(Filters $filters): mixed
    {
        /**
         * $filters contain all the set values from the filters that were shown on the frontend.
         * You can retrieve them and implement any custom logic you may have.
         */
        $filterValue = $filters->getFilterValue(LikesFilter::class);

        return 'example';
    }
}
```

All widgets have common methods to configure their size and position. The value is not in pixels but in grid units, ranging from `1` to `12` (corresponding to 12 columns).

```
$widget->layout(width: 2, height: 1, x: 0, y: 1);
$widget->minWidth(2);
$widget->minHeight(1);
```

Filters
-------

[](#filters)

  ![Filters Preview](https://raw.githubusercontent.com/ml-solutions-ltda/nova-dashboard/main/screenshots/filter-light.png)These are standard nova filter classes with 1 simple difference, the method `->apply()` does not get called by default. Why?

```
use Illuminate\Http\Request;
use Laravel\Nova\Filters\BooleanFilter;

class ExampleFilter extends BooleanFilter
{
    public function apply(Request $request, $query, $value)
    {
        // this function is required however it is not used by the nova-dashboard
    }
}
```

Usually your widget `->value()` function will receive an instance of `MlSolutions\NovaDashboard\Filters` this class contains a method for retrieving the value of any given filter, for example:

```
class SessionDuration extends ValueWidget
{
    public function value(Filters $filters): mixed
    {
        $filterA = $filters->getFilterValue(YourFilterClass::class);
        $filterB = $filters->getFilterValue(YourSecondFilterClass::class);
    }
}
```

However, if you want to reuse the logic that you have previously set on your filters or share existing filters with the dashboard you can call the method `->applyToQueryBuilder()` to get the same behavior:

```
class SessionDuration extends ValueWidget
{
    public function value(Filters $filters): mixed
    {
        $result = $filters->applyToQueryBuilder(User::query())->get();
    }
}
```

`->applyToQueryBuilder()` will run every filter through the default filter logic of nova.

⭐️ Show Your Support
--------------------

[](#️-show-your-support)

Please give a ⭐️ if this project helped you!

### Other Packages You Might Like

[](#other-packages-you-might-like)

- [Nova Dashboard](https://github.com/ml-solutions-ltda/nova-dashboard) - The missing dashboard for Laravel Nova!
- [Nova Welcome Card](https://github.com/ml-solutions-ltda/nova-welcome-card) - A configurable version of the `Help card` that comes with Nova.
- [Icon Action Toolbar](https://github.com/ml-solutions-ltda/icon-action-toolbar) - Replaces the default boring action menu with an inline row of icon-based actions.
- [Expandable Table Row](https://github.com/ml-solutions-ltda/expandable-table-row) - Provides an easy way to append extra data to each row of your resource tables.
- [Collapsible Resource Manager](https://github.com/ml-solutions-ltda/collapsible-resource-manager) - Provides an easy way to order and group your resources on the sidebar.
- [Resource Navigation Tab](https://github.com/ml-solutions-ltda/resource-navigation-tab) - Organize your resource fields into tabs.
- [Resource Navigation Link](https://github.com/ml-solutions-ltda/resource-navigation-link) - Create links to internal or external resources.
- [Nova Mega Filter](https://github.com/ml-solutions-ltda/nova-mega-filter) - Display all your filters in a card instead of a tiny dropdown!
- [Nova Pill Filter](https://github.com/ml-solutions-ltda/nova-pill-filter) - A Laravel Nova filter that renders into clickable pills.
- [Nova Slider Filter](https://github.com/ml-solutions-ltda/nova-slider-filter) - A Laravel Nova filter for picking range between a min/max value.
- [Nova Range Input Filter](https://github.com/ml-solutions-ltda/nova-range-input-filter) - A Laravel Nova range input filter.
- [Nova FilePond](https://github.com/ml-solutions-ltda/nova-filepond) - A Nova field for uploading File, Image and Video using Filepond.
- [Custom Relationship Field](https://github.com/ml-solutions-ltda/custom-relationship-field) - Emulate HasMany relationship without having a real relationship set between resources.
- [Column Toggler](https://github.com/ml-solutions-ltda/column-toggler) - A Laravel Nova package that allows you to hide/show columns in the index view.
- [Batch Edit Toolbar](https://github.com/ml-solutions-ltda/batch-edit-toolbar) - Allows you to update a single column of a resource all at once directly from the index page.

License
-------

[](#license)

The MIT License (MIT). Please see [License File](https://raw.githubusercontent.com/ml-solutions-ltda/nova-dashboard/main/LICENSE) for more information.

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance52

Moderate activity, may be stable

Popularity24

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~0 days

Total

6

Last Release

333d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b895f8c44bd74d8ad19241803acb2f5763db593c608314de8ec07700e79796eb?d=identicon)[luissobrinho](/maintainers/luissobrinho)

---

Top Contributors

[![milewski](https://avatars.githubusercontent.com/u/2874967?v=4)](https://github.com/milewski "milewski (51 commits)")[![marispro](https://avatars.githubusercontent.com/u/5610414?v=4)](https://github.com/marispro "marispro (31 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (10 commits)")[![luissobrinho](https://avatars.githubusercontent.com/u/17295212?v=4)](https://github.com/luissobrinho "luissobrinho (7 commits)")[![cord](https://avatars.githubusercontent.com/u/158588?v=4)](https://github.com/cord "cord (3 commits)")[![gbespyatykh](https://avatars.githubusercontent.com/u/5813183?v=4)](https://github.com/gbespyatykh "gbespyatykh (1 commits)")[![xoco70](https://avatars.githubusercontent.com/u/5855577?v=4)](https://github.com/xoco70 "xoco70 (1 commits)")

---

Tags

laraveldashboardwidgetsFlexiblenova

### Embed Badge

![Health badge](/badges/mlsolutions-nova-dashboard/health.svg)

```
[![Health](https://phpackages.com/badges/mlsolutions-nova-dashboard/health.svg)](https://phpackages.com/packages/mlsolutions-nova-dashboard)
```

###  Alternatives

[digital-creative/nova-dashboard

The missing dashboard for nova.

7169.3k1](/packages/digital-creative-nova-dashboard)[jubeki/nova-card-linkable

A Linkeable Card for the Laravel Nova Dashboard.

19246.1k](/packages/jubeki-nova-card-linkable)[khalin/nova-link-field

A Laravel Nova Link field.

31562.2k2](/packages/khalin-nova-link-field)

PHPackages © 2026

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