stephenlake/nova-snowball
Nova Snowball is a Laravel Nova tool for exploring Eloquent relationships. Start at a resource and snowball outward through connected models, expanding related records as you go, so you can navigate complex data relationships directly inside your Nova admin panel.
Check Nova version compatibility first. This package's last release was 2020-12-31, so it targets Nova v2/v3 styling. Confirm your installed Nova version before committing:
composer show laravel/nova
If you're on Nova 4/5, expect to either skip this package or treat it as CSS reference material rather than a drop-in theme.
Install via Composer.
composer require stephenlake/nova-snowball
Register the theme. Depending on your Nova version, this is either:
config/nova.php (or call Nova::theme('snowball') in NovaServiceProvider::boot()), orphp artisan package:discover).Publish Nova assets so the theme's CSS is served:
php artisan vendor:publish --tag=nova-assets
php artisan nova:publish
Clear caches (Nova caches its manifest and views aggressively):
php artisan optimize:clear
First use case: internal admin panels, ops dashboards, or client back-offices where you want Nova to match a dark-blue/white brand palette without building a custom theme from scratch. Load the dashboard, confirm typography, sidebar, buttons, and form controls picked up the theme.
Where to look first: the package's resources/ (or dist/) folder for the compiled CSS, and the README for the exact registration line for your Nova version. If registration is ambiguous, search Nova's config/nova.php for 'theme' and compare against other installed tools.
Baseline swap-in. Install once, register, publish, and leave it. Best for a single Nova app where the theme is global and no per-user toggling is needed.
Environment-scoped theming. Only register the theme in non-production or internal environments to avoid surprising client-facing admin users:
// NovaServiceProvider::boot()
if (! app()->environment('production')) {
Nova::theme('snowball');
}
Brand-override layer. Don't fork the package. Publish the theme CSS and append a small override file that targets Nova's CSS custom properties or class selectors:
/* resources/css/nova-overrides.css */
:root {
--color-primary: #0d1b2a;
--color-primary-dark: #08121c;
}
Then publish/compile through Nova's asset pipeline (php artisan nova:publish) so overrides land after the theme styles.
Theme-as-reference for a custom theme. Clone the repo, use its SCSS/CSS structure as the starting point for php artisan nova:theme, and keep the package installed only if you want the baseline. This is the most realistic long-term pattern given the package's age.
CI/CD integration.
- run: composer install --no-dev --optimize-autoloader
- run: php artisan nova:publish
- run: php artisan optimize:clear
Ensure public/vendor/nova is either committed or built in the deploy pipeline — a missing published asset is the most common "theme not applied" failure.
Pair with custom branding. Themes only handle colors/typography; add your logo, name, and footer via Nova::brand() and Nova::footer() in the same service provider for a cohesive result.
public/vendor/nova/app.css.public/vendor/nova/ exists and contains the theme files. Run php artisan nova:publish and hard-refresh; Nova's asset manifest is cached.php artisan optimize:clear && php artisan view:clear fixes most ghost issues.config/nova.php. If php artisan package:discover doesn't pick it up, add the service provider manually or check the README for the exact Nova::theme() call..nova / #nova.:root and on .nova — if your overrides aren't winning, the theme's declaration order or specificity is the culprit, not the framework.How can I help you explore Laravel packages today?