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 Place Input Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Getting Started

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:

  1. composer require <vendor>/<package> and check the resolved version is ^1.0.
  2. Inspect 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.
  3. Confirm service provider auto-discovery in the package's composer.json (extra.laravel.providers). If absent, register manually in bootstrap/providers.php (Laravel 11+) or config/app.php.
  4. Check for publishable assets:
    php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider"
    
    Look specifically for a config file and migrations.
  5. Read 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.

Implementation Patterns

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.

Gotchas and Tips

  • Sparse docs are the primary risk. With only "basic functionality" to go on, budget time to read src/ and tests/ before committing to an integration. Tests are the de facto spec.
  • Semver expectations. A 1.0 signals API stability, but a "basic functionality" first release often means the API is still small and will grow. Pin to ^1.0 and review changelogs before minor bumps.
  • Config caching. After publishing config, run php artisan config:clear during development; stale cached config is the most common "it works in tinker but not in the app" cause.
  • Provider registration failures. 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.
  • Migration ordering. If the package publishes migrations with timestamps, check they run after your users table. Rename the file if needed rather than editing the published migration.
  • Debugging resolution. Use app()->bound(...), php artisan tinker, and dd(app(\Vendor\Package\Package::class)) to inspect the resolved instance and its config.
  • Extension points. Look for Macroable, extend, custom manager classes, or events before forking. A 1.0 package frequently exposes more extension hooks than the notes suggest.
  • Laravel version matrix. Verify the package supports your Laravel major (10/11/12). A 1.0 release with thin metadata may not have been tested against the newest framework version.
  • No upgrade path yet. There is no prior version to migrate from, so treat adoption as greenfield: isolate it behind an adapter now to make the eventual 1.x-to-2.0 jump cheap.
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.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log