swooinc/nova-countdown
A Laravel Nova countdown component for showing live time remaining to a date or event, with customizable labels, formatting, and expiry behavior—ideal for dashboards, promotions, and deadlines.
composer require vendor/package:^1.0.4. Anything below 1.0.4 will resolve against illuminate/* ^6|^7 and quietly downgrade on a Laravel 8 app.composer.json (require + extra.laravel.providers), the CHANGELOG for the 1.0.x line, the service provider (what it binds/singletons), then the config file it ships.php artisan about or inspect bootstrap/cache/packages.php for the provider entry. If it's missing, you'll be registering it manually in config/app.php.php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider"), set the env keys it documents, then exercise the package from php artisan tinker through its facade or contract before wiring it into a controller/job. That isolates "package isn't configured" from "my integration is wrong."new. Inject the package's contract (or use its facade alias) so you can swap it later. If the package only ships a concrete class, add your own binding in a PackageServiceProvider of your own and depend on that.app/Services that owns every call into the package. When the next major ships (or Laravel 9 changes something), you edit one file instead of grepping the codebase..env under the package's documented key prefix. Never edit vendor/.RefreshDatabase + model factories. Note that Laravel 8 moved factories to Database\Factories with the HasFactory trait — older README examples using factory(App\User::class) still work but look dated. For the package itself, use orchestra/testbench pinned to the matching Laravel 8 major.Queue::fake() and check retry/backoff config, not just "a job was pushed." Laravel 8's job middleware and retryUntil behaviour is worth an explicit test.8.* plus the oldest major in the constraint (6 or 7) in your matrix, and prefer-lowest on one job. That's how you catch the package silently requiring a newer illuminate sub-dependency.composer update vendor/package --with-dependencies, re-publish config if the release notes mention new keys, then php artisan config:clear and re-run the package's own test suite before your app's.illuminate/support at ^7, Composer resolves the older package version without complaint. Always verify with composer show vendor/package after upgrading and check composer why-not vendor/package 1.0.4.Illuminate\Support\Str / Arr, and app/Models is now the convention. Any copy-pasted snippet from pre-1.0.4 docs may use str_*/array_* or App\User — update them or you'll get confusing "class not found" errors that look like package bugs.php artisan config:cache will happily serve a stale file with missing keys. Clear it as part of deploy, and prefer config('package.key') reads at runtime over caching values into properties in your own constructors.extra.laravel.dont-discover in your app's composer.json, or a stale bootstrap/cache/packages.php). Symptom: "Target class [package] does not exist" on the facade. php artisan package:discover then composer dump-autoload fixes the cache case.app()->make(Vendor\Package\Contract::class) in tinker tells you instantly whether the provider bound the right concrete class; dd(app()->getBindings()) is heavier but definitive.Macroable) → package events/listeners → forking. Forking should be a last resort; if you must, use a VCS repository entry in composer.json so the patch is visible in review.^1.0.4 is right; ^1.0 may resolve to 1.0.3 on a fresh install depending on lock state, and * is asking for trouble. Commit composer.lock for apps, omit it for libraries.How can I help you explore Laravel packages today?