enmaboya/nova-place-input
A Laravel Nova field that adds an address or place autocomplete input to your resources, letting users search and select locations with suggestions as they type.
The 1.0 release notes only state "basic functionality", so treat the source and tests as the authoritative documentation until a README lands. Start by confirming what "basic" actually covers before designing around it.
Minimal adoption steps:
composer require <vendor>/<package> and check the resolved version is ^1.0.composer.json for illuminate/support and PHP version constraints — a 1.0 with thin notes often has loose constraints that matter on older Laravel versions.composer.json (extra.laravel.providers). If absent, register manually in bootstrap/providers.php (Laravel 11+) or config/app.php.php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider"
Look specifically for a config file and migrations.src/ for the public surface: contracts, facades, and any Macroable traits. Read tests/ for executable examples of intended usage.First use case: resolve the package's primary service from the container in php artisan tinker and exercise the simplest operation end-to-end. If it requires config or a database table, publish and migrate first, then re-run. This gives you a working baseline before wiring it into application code.
Resolve through the container, never new. Bind the package contract (or concrete class) in a small application-level service provider and inject it. This keeps you insulated if the 1.x line reshapes its API.
// App\Providers\AppServiceProvider::register()
$this->app->bind(
\Vendor\Package\Contracts\Client::class,
fn ($app) => $app->make(\Vendor\Package\Package::class)
);
Wrap it in an adapter. Create a thin App\Services\... class that owns the package calls. Your domain code depends on your adapter, not the vendor namespace. When 1.1 or 2.0 changes signatures, you edit one file.
Config over code. Publish the config file and drive behavior from config/<package>.php plus .env. Never hardcode endpoints, credentials, or feature flags in call sites — a 1.0 "basic" release is exactly where hardcoded assumptions creep in.
Test with bindings, not network. In feature tests, swap the container binding for a fake or stub:
$this->swap(\Vendor\Package\Contracts\Client::class, $fake);
If the package ships its own fake/factory, prefer it; otherwise your adapter is the seam to mock.
Queue and event integration. If the package exposes jobs or events, dispatch through your adapter and assert with Bus::fake() / Event::fake(). Do not let package internals leak into controllers.
Feature-flag adoption. Because the surface is minimal, gate usage behind a config flag so you can disable it without a deploy if a 1.0.x patch regresses.
src/ and tests/ before committing to an integration. Tests are the de facto spec.^1.0 and review changelogs before minor bumps.php artisan config:clear during development; stale cached config is the most common "it works in tinker but not in the app" cause.Target [X] is not instantiable almost always means the provider is not registered or auto-discovery failed (e.g., cached packages.php). Run php artisan package:discover and php artisan about to confirm.users table. Rename the file if needed rather than editing the published migration.app()->bound(...), php artisan tinker, and dd(app(\Vendor\Package\Package::class)) to inspect the resolved instance and its config.Macroable, extend, custom manager classes, or events before forking. A 1.0 package frequently exposes more extension hooks than the notes suggest.How can I help you explore Laravel packages today?