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

Kaer Morhen Laravel Package

terminalsio/kaer-morhen

terminalsio/kaer-morhen is a Laravel/PHP package that provides a fortified foundation for your application. It aims to keep core code organized and easy to integrate, offering a simple, package-first starting point for PHP projects that need a reliable base.

View on GitHub
Deep Wiki
Context7

Getting Started

Because this is a tiny, single-maintainer package (1 star, 0 dependents), treat the source repo as the source of truth before wiring it into anything important. That said, it follows the standard Laravel Nova theme contract.

  1. Confirm the Nova version you're on. Nova themes are tightly coupled to the Nova major version they were built for. Check the package's composer.json require block (e.g. laravel/nova: ^4.0 or ^5.0) against your nova version before installing — a mismatch is the single most common failure mode.
  2. Install via Composer:
    composer require terminalsio/kaer-morhen
    
  3. Register the theme. For Nova 4/5, set the theme key in config/nova.php:
    'theme' => 'terminalsio/kaer-morhen',
    
    For older Nova (3.x and below), the equivalent is in NovaServiceProvider:
    Nova::theme('terminalsio/kaer-morhen');
    
  4. Publish assets if the package ships them. Many Nova themes expect you to run:
    php artisan vendor:publish --tag=kaer-morhen-assets
    
    Check the package's service provider for the exact tag; if none exists, the theme is likely loaded directly from the package's resources/dist folder.
  5. Clear compiled views and caches:
    php artisan nova:publish && php artisan optimize:clear
    

First use case: the theme is purely cosmetic — a custom skin over the Nova admin UI. Reach for it if you want your Nova panel to match a product brand out of the box without hand-writing CSS. If you only need a logo tweak, Nova's built-in branding config is lighter than pulling in a whole theme package.

Implementation Patterns

  • Environment-scoped theming. Only activate the theme where you actually want it — often staging/production but not local dev. Guard in NovaServiceProvider:
    public function boot()
    {
        parent::boot();
        if (app()->environment(['staging', 'production'])) {
            Nova::theme('terminalsio/kaer-morhen');
        }
    }
    
  • Layer your own overrides rather than forking. Keep the package untouched and drop custom CSS/branding via Nova::brand() or a Nova::script()/Nova::style() call that loads after the theme, so upgrade risk stays low. Nova 4+ supports publishing a nova.css you can append to.
  • Treat it as a boot-time asset, not runtime logic. The theme is resolved when the Nova service provider boots; there's no runtime switching without a full page reload or a config change. If you need multiple panels with different skins, use Nova's multi-panel support (config/nova.php panels array) and override per-panel, or maintain separate builds.
  • Pair with a custom login/branding flow. Themes control the authenticated shell; login page styling and logo usually live in Nova's branding options, so set those alongside the theme for a consistent look.
  • Version-lock it. With no dependents and a solo maintainer, pin the exact version in composer.json ("terminalsio/kaer-morhen": "1.0.*" or a commit hash) so a surprise push can't break your admin panel on composer update.

Gotchas and Tips

  • Nova version drift is the big one. Nova themes break silently — the panel loads but styles don't apply — when the theme targets a different Nova major version. Verify the require constraint first; this alone explains most "it doesn't work" reports for small themes.
  • Assets may not be published. If styling doesn't change after registering, check whether the package expects vendor:publish and whether the service provider's boot() registers a publishes() call. Running vendor:publish blindly can scatter files; inspect the provider first.
  • Clear caches aggressively when debugging. Nova caches compiled assets and the manifest. Run php artisan optimize:clear, then hard-refresh the browser (the compiled CSS is often fingerprinted; a stale manifest serves old styles).
  • License is MIT — safe to vendor/fork. Given the low maintenance signal, forking into resources/ of your own app and maintaining it yourself is a legitimate strategy. You lose composer update convenience but gain stability.
  • No dependents = no community safety net. Expect to debug against the repo source. Read the service provider and resources/ directly; there is unlikely to be extensive docs or issue history to lean on.
  • Extension points to look for in the provider: Nova::theme(), Nova::style()/Nova::script() registrations, and any publishes() tags. Those three are where a Nova theme is wired in — if you understand the provider, you understand the package.
  • Test in a real Nova panel, not just unit tests. Theming is visual; there's no meaningful automated test here. Screenshot the login, dashboard, resource index, and forms after installing to catch regressions from Nova upgrades.
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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager