astrotomic/laravel-dashboard-citybikes-tile
A Laravel Dashboard tile that displays live CityBikes bike-sharing data, showing nearby station availability and free bikes/slots. Install via Composer, register the tile in your dashboard config, and get a ready-made Blade view with optional caching for quick, at-a-glance station status.
The 1.1.0 release is a compatibility release: it adds Laravel 8 support. There are no new features or API surface described, so treat 1.1.0 as "the version you can safely install on a Laravel 8 app" rather than a version that changes how you use the package.
Minimal steps:
composer require vendor/package:^1.1
README.md install/usage section — the canonical entry point.composer.json → require / require-dev — confirms the exact illuminate/* and php ranges this release widened.src/ for the service provider and any facade — tells you what is auto-registered and what is bindable.php artisan vendor:publish --provider="Vendor\\Package\\PackageServiceProvider"
laravel new Laravel 8 skeleton and exercise the README's example end to end. Because Laravel 8 support is brand new in this release, a five-minute smoke test on the actual framework version you deploy is worth more than reading the changelog.Note: this assessment is derived from the 1.1.0 release notes and standard Laravel package conventions. Confirm the package-specific API against its README before relying on any detail below.
Prefer container resolution over facades. Most Laravel packages register a singleton or binding in their service provider. Inject the contract/class into constructors and let the container resolve it — this keeps you testable and avoids the static-call coupling that makes facade-based code hard to swap in tests.
Keep configuration in config/. Publish the package config, then drive behaviour from env vars in your .env rather than editing the published file directly, so the config survives re-publishing. Commit the published config; do not commit secrets into it.
Verify auto-discovery before manual registration. Check composer.json for an extra.laravel.providers block. If present, the provider is registered automatically and adding it to config/app.php will register it twice — usually harmless, occasionally not (duplicate listeners, duplicate migrations). If absent, register manually.
Isolate the integration behind your own wrapper. For anything beyond trivial use, wrap the package in a small application-level service or repository class. When the next major release lands, you change one file instead of grepping call sites.
Test against the version matrix you actually ship. Package maintainers use orchestra/testbench to run their suite against several Laravel versions. Mirror that in your app's CI against the Laravel version you deploy on — 1.1.0's Laravel 8 support is new, and the package's own CI may not cover the exact combination you run.
Use the package's own tests as documentation. If tests/ ships in the repository, the test cases are usually the most accurate description of intended usage — more so than the README, which tends to lag behind.
App\Models and made RouteServiceProvider::$namespace null. Packages that resolve controllers or models from class-name strings written for Laravel 5/6/7 conventions can break here. If you get "class not found" or "target class does not exist" errors on routes, this is the first thing to check.php constraint in composer.json; a package that only just added Laravel 8 may still pin an older PHP range that conflicts with your platform.illuminate/support to include ^8.0, composer update must re-resolve the whole graph. A sibling package still pinned to ^7.0 will block the upgrade — read the composer why-not vendor/package 1.1.0 output before assuming the package is at fault.php artisan config:clear (and config:cache in production). A cached config is the most common cause of "my change did nothing."composer.json lists the package under extra.laravel.dont-discover, auto-registration is silently skipped and the provider must be added by hand.config/app.php. If the README refers to a facade by short name and it is not aliased, use the fully-qualified class instead of editing the aliases array.php artisan package:discover -v shows what actually got registered; php artisan about (available in Laravel 8) gives a quick environment summary; php artisan tinker is the fastest way to confirm a binding resolves to what you expect.bind() over, and macroable classes are the usual, supported way to customise behaviour. Prefer these over subclassing internals, which will not survive the next release.^1.1 rather than an exact 1.1.0.How can I help you explore Laravel packages today?