Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nova Logo Url Laravel Package

formfeed-uk/nova-logo-url

A small Laravel Nova package that lets you customize where the Nova logo links, replacing the default destination with your own route, URL, or dashboard path via simple configuration.

View on GitHub
Deep Wiki
Context7

Getting Started

This is a small, single-purpose package: it lets you override the logo shown in the Nova sidebar (URL/source) and control where clicking that logo takes the user. Before anything else, read the repo README and the published config file — the entire package is likely just a service provider plus a config file, so five minutes of source reading tells you everything.

  1. Install:
    composer require formfeed-uk/nova-logo-url
    
  2. Publish and inspect the config (tag name may differ — check README / the service provider's publishes() call):
    php artisan vendor:publish --provider="FormfeedUK\NovaLogoUrl\NovaLogoUrlServiceProvider"
    
  3. Open config/nova-logo-url.php. This is where the actual behavior lives — logo image URL, the click-through target, and likely flags for opening in a new tab or disabling the link.
  4. Set values (typically env-backed, e.g. NOVA_LOGO_URL, NOVA_LOGO_LINK), then:
    php artisan config:clear
    

First use case: white-labeling Nova for a client — replacing the default Laravel Nova logo with the client's brand mark, and making that mark link back to the client's public marketing site (or their own dashboard) instead of Nova's default home route.

Implementation Patterns

Environment-driven branding. The main win over hand-editing NovaServiceProvider is that the logo/link become config, so they can vary per environment. Keep the values in .env (NOVA_LOGO_URL=/images/brand/logo.svg, NOVA_LOGO_LINK=https://client.example.com) and commit only the config defaults. Staging gets a distinct logo/badge, production gets the real one.

Use the asset() helper for local files. If the config accepts a URL string, pass asset('images/logo.svg') rather than a hard-coded /images/logo.svg, so subdirectory deployments (e.g., hosted under /admin) resolve correctly. For CDN-hosted marks, pass the absolute URL.

Pair with Nova::brand(). This package handles the logo image and link; you'll still want a brand name via Nova::brand('Client Name') in NovaServiceProvider::boot() for the browser title and login page. Use them together — one doesn't replace the other.

Runtime/dynamic logos. If you need a logo that changes per tenant or per user, don't fight the config layer — resolve the logo in a middleware or in Nova::booted() and only fall back to this package's config as the default. Config values are read early, so per-request overrides generally need to happen before Nova renders, not in a controller.

Link target semantics. Decide deliberately:

  • Internal (/nova/dashboards/main) — users stay in Nova; good for "click logo to go home."
  • External (https://client.example.com) — pair with a _blank/noopener option if the config exposes one; if not, expect the logo to replace the current tab, which some users find jarring.

Deployment checklist pattern. Because this is config-only, treat it as an env-driven deployment concern: add the env vars to your deployment templates (Forge/Envoyer/Vapor), and include config:cache in the deploy script after the vars are in place.

Gotchas and Tips

Config caching bites first. The number-one "it's not working" cause is a stale config cache. After changing env vars or the config file, run php artisan config:clear && php artisan config:cache, and hard-refresh the browser — Nova caches its compiled assets and the logo may be a cached public/ path.

Version compatibility is the real risk. Last release was January 2023 with essentially no dependents and low stars. Nova 4/5 changed how branding and the logo component are injected, so this package may predate the changes on your Nova version. Check the composer.json constraint against your installed laravel/nova version, and test on a staging instance before committing. If it conflicts, the native fallback is one line in NovaServiceProvider::boot():

Nova::logo(asset('images/logo.svg'));

That won't give you the link, but it gets you most of the way.

Absolute vs. relative link normalization. Small packages often concatenate or assume a leading /. If your click-through goes somewhere unexpected, inspect src/ — it's tiny — and check whether the link string is prefixed, passed through url(), or used raw. Add or strip the leading slash accordingly.

Logo sizing is not the package's job. A logo that renders too large/small isn't a bug in the logo URL — it's CSS. Nova's sidebar logo has a fixed container; unusual aspect ratios (wide banners, tall marks) will distort or overflow. Plan for a square-ish SVG and, if needed, add a small CSS override via Nova::style() or a custom branding view.

Component swap conflicts. If the package overrides Nova's logo component/view, it can collide with other branding packages or a custom resources/views/vendor/nova/branding view. Pick one mechanism per project — don't stack two logo customizers.

Extension points. With no tests and low maintenance, treat the package as a starting point, not a black box: the service provider and config are short enough to copy into your own app under app/Nova/ and vendor it yourself if you need to survive an unmaintained upstream. Fork-and-inline is a legitimate strategy for a package this small.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route