PHPackages                             oxygencms/oxy-nova - 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. oxygencms/oxy-nova

ActiveLibrary[Admin Panels](/categories/admin)

oxygencms/oxy-nova
==================

Set of tools and boilerplate to use with Laravel Nova.

v2.0(4y ago)12861[2 PRs](https://github.com/oxygencms/oxy-nova/pulls)MITPHPPHP &gt;=7.3.0

Since Nov 3Pushed 3y ago2 watchersCompare

[ Source](https://github.com/oxygencms/oxy-nova)[ Packagist](https://packagist.org/packages/oxygencms/oxy-nova)[ RSS](/packages/oxygencms-oxy-nova/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (6)Versions (35)Used By (0)

Oxygen CMS package for use with Laravel Nova.
=============================================

[](#oxygen-cms-package-for-use-with-laravel-nova)

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

[](#installation)

Require `"oxygencms/oxy-nova": "@dev"` in your own `composer.json` to get the package.

```
composer require oxygencms/oxy-nova

```

Since this package requires [spatie/laravel-medialibrary](https://docs.spatie.be/laravel-medialibrary/) to deal with uploads and media make sure you have it's migration published and run.

```
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"

```

By default file conversions will be queued. It is recommended to set the `QUEUE_CONNECTION=redis` in your `.env` file. If you do so also make sure to create the `failed_jobs` table. Then just run the queue worker as usual.

```
php artisan queue:failed-table

```

### Config

[](#config)

Publish the `oxygen.php` config file.

```
php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=config

```

Define the 'media' disk for the media library in the `config/filesystem.php` file.

```
    'media_disk' => [
        'driver' => 'local',
        'root' => storage_path('app/public/media'),
        'url' => env('APP_URL').'/media',
        'visibility' => 'public',
    ]

```

Publish the config for the media library it self.

```
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag=config

```

In `config/medialibrary.php` set the default `disk_name` and *optionally* the `image_driver`

```
'disk_name' => 'media',

'image_driver' => 'imagick'

```

### Translation Files

[](#translation-files)

Use the `translations` tag to publish the language files for each locale in the config. (BG &amp; NL available atm).

```
php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=translations

```

### Views

[](#views)

The views can be published with the `views` tag.

```
php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=views

```

### Migrations, Seeds and Factories

[](#migrations-seeds-and-factories)

To publish the factories for this package you can use the `factories` tag:

```
php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=factories

```

To publish the migrations for this package you can use the `migrations` tag:

```
php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=migrations

```

To publish the seeders for this package you can use the `seeds` tag:

```
php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=seeds

```

To publish all of the above at once you can use the `database` tag:

```
php artisan vendor:publish --provider='Oxygencms\OxyNova\ServiceProvider' --tag=database

```

To include some dummy data for the packages entities add the `SEED_TEST_DATA=true` to the `.env` file and seed your database with `php artisan migrate:fresh --seed` command.

### Console

[](#console)

There is an artisan command for quick setup using the default config.

```
php artisan oxy-nova:setup

```

### Tests

[](#tests)

To run the tests include a `` tag in your project's `phpunit.php` file and point it to the tests dir.

```

    ./vendor/oxygencms/oxy-nova/tests

```

Functionality
-------------

[](#functionality)

### Phrases

[](#phrases)

The phrases are neat way to store translations in the database so they can be edited. To utilize them we need to swap the default `TranslationServiceProvider` with the `PhraseServiceProvider` in `config/app.php`.

```
//        Illuminate\Translation\TranslationServiceProvider::class,
        Oxygencms\OxyNova\Providers\PhraseServiceProvider::class,

```

The phrase's caching requires cache driver that does support tagging! `predis/predis` is already required in the package's composer file so we also need to configure laravel to use it. Set it in the `.env` file.

```
CACHE_DRIVER=redis

```

Then phrases and translations are both accessed with the standard Laravel helpers `@lang()`, `__()`, `trans()` &amp; `trans_choice()`. If a phrase exists in the database with the given group/key it will be returned and cached. If not the one from the translation files will be returned instead. If both are present the one from DB will take precedence.

### Pages

[](#pages)

Using pages allows for easier management of the applications content and SEO. If a page has different slug for a given locale, visiting that slug will change the application locale. While on a page changing the application locale by hitting the `setLocale` route will redirect to the the slug of the page in the selected locale. Pages can have many sections via the `$page->sections(): HasMany` relationship. On `$page->delete()` all sections that belong to the page will be soft deleted and on `$page->resotre()` they will be restored automatically.

### Page Sections

[](#page-sections)

Page sections provide a simple way for adding additional content to a page. The owning page can be accessed via the `$pageSection->page(): BelongsTo` relationship. When updating a page section if `APP_ENV=production` the name will no longer be editable field because it may be in use in a view or controller to access a given section for a page.

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 54.5% 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 ~31 days

Recently: every ~63 days

Total

32

Last Release

1768d ago

Major Versions

v0.5.1 → v1.02020-10-27

v1.0.4 → v2.02021-07-08

PHP version history (2 changes)v0.1.0PHP &gt;=7.1.0

v0.4.0PHP &gt;=7.3.0

### Community

Maintainers

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

---

Top Contributors

[![reppair](https://avatars.githubusercontent.com/u/10784954?v=4)](https://github.com/reppair "reppair (18 commits)")[![oxygencms](https://avatars.githubusercontent.com/u/31890130?v=4)](https://github.com/oxygencms "oxygencms (9 commits)")[![pavlovpa4o](https://avatars.githubusercontent.com/u/7713916?v=4)](https://github.com/pavlovpa4o "pavlovpa4o (6 commits)")

---

Tags

laravelcmsnovaOxygen

### Embed Badge

![Health badge](/badges/oxygencms-oxy-nova/health.svg)

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

###  Alternatives

[whitecube/nova-page

Static pages content management for Laravel Nova

23995.2k1](/packages/whitecube-nova-page)[khalin/nova-link-field

A Laravel Nova Link field.

31562.2k2](/packages/khalin-nova-link-field)[digital-creative/nova-dashboard

The missing dashboard for nova.

7169.3k1](/packages/digital-creative-nova-dashboard)

PHPackages © 2026

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