imumz/leaflet-map
Laravel package for adding interactive Leaflet maps to your views. Render maps with markers, polygons, and GeoJSON, configure tiles and controls, and pass data from PHP without writing JavaScript. Lightweight integration for location-aware apps.
Architecture fit. imumz/leaflet-map is a Laravel Nova field package that wraps Leaflet.js in a Vue component and exposes a PHP field class for use inside Nova resources. Architecturally it is admin-plane only — it does not touch domain models, APIs, or public-facing rendering, so it is low-invasiveness if the host application already runs Nova. It assumes the standard Nova field contract (PHP field class + compiled Vue asset + service provider auto-discovery) and stores whatever the developer chooses (typically lat/lng columns or a JSON blob). There is no server-side geocoding, projection handling, or spatial querying — it is a picker, not a GIS layer.
Integration feasibility. Composer installation is trivial if constraints resolve. The last release is January 2021, which predates Nova 4 (the Vue 2 → Vue 3 migration) and the Laravel 9/10/11 era. Expect composer constraint conflicts, a compiled asset bundle built against an older toolchain, and likely a required fork to loosen laravel/nova and illuminate/* version ranges. Because Nova is a paid, closed-source product, the compatibility matrix cannot be validated without a licensed environment, which raises the cost of the initial spike.
Technical risk. High relative to surface area. Signals: 8 stars, 0 dependents, single maintainer, no release in 2+ years, no evidence of CI or a test suite, and a bundled/minified asset pipeline that may not ship rebuildable sources. Additional risks include an unpinned third-party tile provider (OSM/Google/Mapbox) with its own ToS, rate limits, API-key handling, and privacy exposure; a stale Leaflet version carrying known CVEs; and silent breakage on the next Nova major. The 0.1 maturity score against a 9.79 opportunity score reads as genuine unmet demand (geo-picking in Nova) served by an unmaintained supply — a classic build-vs-adopt fork in the road.
Key questions.
composer.json, and does the Vue component target Vue 2 or Vue 3?Stack fit. Narrow. This is a fit only for teams already committed to Laravel + Nova 3.x for internal back-office tooling. It is a poor fit for public-facing maps (wrong layer of the stack), for multi-tenant SaaS with strict data-residency requirements (third-party tile calls), or for teams on Nova 4/5 without appetite for a fork.
Migration path. Treat the package as a starting reference, not a dependency. Recommended path: vendor the source into an internal repository, pin to a specific commit, loosen version constraints, rebuild assets against the current Nova/Vue toolchain, and add a smoke test around field rendering and value round-tripping. Given the small surface area (a map canvas plus a coordinate binding), a 1–2 day in-house implementation on Leaflet may be cheaper and safer than sustaining a fork — a decision that should be made explicitly before adoption, not after.
Compatibility. Verify in a licensed Nova environment: composer resolution, asset publishing (nova:publish), Vue runtime compatibility, and behavior on Nova's create/update/detail/index views. Assume breakage on Nova 4+ until proven otherwise; budget a spike branch for validation.
Sequencing.
Maintenance. Effectively unmaintained upstream; plan for internal ownership. Budget roughly 1–2 engineer-days per quarter plus a defined effort at each Nova major upgrade. Ongoing watch items: Leaflet CVEs, tile-provider ToS and rate limits, and Vue/Nova asset pipeline changes.
Support. No vendor SLA. Support is community issues on a low-traffic repo, escalating to an internal Laravel/Vue engineer. This is acceptable for an internal admin convenience feature and unacceptable if geo-picking becomes business-critical (e.g., dispatch, field ops).
Scaling. Operationally light: admin-plane traffic only, no server-side compute, no database hotspots beyond the coordinate columns. The real scaling surface is external — tile requests to a third-party CDN, governed by provider quotas, cost tiers, and caching behavior. For low-concurrency internal use this is negligible; for large admin teams or automated tooling, rate limits and per-request costs must be modeled.
Failure modes.
Ramp-up. Low for a Nova-fluent developer to use the field (hours). Moderate to sustain it: requires familiarity with Nova's field asset pipeline (Vue + Mix/Webpack/Vite), composer constraint management, and Leaflet basics — realistically 2–4 days for a mid-level engineer to own the fork confidently. Teams without in-house Vue capability should default to building a minimal custom field or selecting a maintained Nova map field rather than inheriting this one.
How can I help you explore Laravel packages today?