michaeldrennen/geonames
Laravel wrapper for the GeoNames geographical database API, offering clean, fluent access to countries, states, cities, postal codes, timezones, and elevation data with built-in caching and simple configuration.
Consider it when:
Look elsewhere when:
To executives: This is a small, MIT-licensed Laravel integration to GeoNames, a free global geographic database. It lets us ship location-aware features — country/city selection, place autocomplete, timezone detection, distance and "nearby" logic — in days rather than building and maintaining our own geo dataset. Cost is near zero, and because it is an open-source wrapper behind our own service interface, we are not locked in. The trade-offs are that GeoNames is a free external service without an SLA, and the package is maintained by a single author, so we should cache aggressively, add a fallback provider for anything customer-facing at scale, and avoid using it for street-address geocoding.
To engineering: Treat it as a thin HTTP client, not a platform. Wrap it in an internal GeoService contract, add caching and rate limiting, make the GeoNames username and base URL configurable, pin the package version, and write contract tests so we can swap in Mapbox/Google or a self-hosted GeoNames import without changing call sites. Keep an eye on the upstream repo's release cadence and be ready to vendor the small amount of code if maintenance stalls.
How can I help you explore Laravel packages today?