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(5y 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 4w ago

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

32

—

LowBetter than 69% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity69

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

1863d 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://avatars.githubusercontent.com/u/31890130?v=4)[Oxygen](/maintainers/oxygencms)[@oxygencms](https://github.com/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

[statikbe/laravel-filament-flexible-content-blocks

The Laravel Filament Flexible Content Blocks package helps you to easily create content in Filament for any model, with predefined or custom blocks, and foreach block an extendable Blade view component.

17927.9k6](/packages/statikbe-laravel-filament-flexible-content-blocks)[whitecube/nova-page

Static pages content management for Laravel Nova

23997.6k1](/packages/whitecube-nova-page)[nasirkhan/laravel-starter

A CMS like modular Laravel starter project.

1.4k2.7k](/packages/nasirkhan-laravel-starter)[lara-zeus/sky

Lara-zeus sky is simple CMS for your website. It includes posts, pages, tags, and categories.

21330.6k4](/packages/lara-zeus-sky)[markwalet/nova-modal-response

A Laravel Nova asset for Modal responses on an action.

17930.8k](/packages/markwalet-nova-modal-response)[optimistdigital/nova-table-field

Table field for Laravel Nova

40133.8k](/packages/optimistdigital-nova-table-field)

PHPackages © 2026

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