khsing/world
khsing/world gives Laravel apps a ready-made database of countries, states, cities, currencies, timezones and languages, with migrations, seeders, Eloquent models and lookup helpers so you can add reliable geographic and locale data without building it yourself.
Architecture fit
Country → State → City Eloquent models with conventions-consistent relationships, migrations, and seeders. That maps cleanly onto an address/locale domain in a typical Laravel monolith.addresses/regions table. Introducing it alongside an existing free-text country field creates two competing truth sources on day one.Khsing\World\Models\City in controllers or Blade ties the app to the package's schema. A thin internal GeoRepository/DTO boundary keeps the vendor swappable.Integration feasibility
composer require, package auto-discovery, vendor:publish for migrations/config/seeders, then a one-off seed. A developer can have it running in an afternoon.db:seed step into a deployment job with batching, timeouts, and rollback strategy.int or bigint so foreign keys match existing conventions.Technical risk
Key questions
Stack fit
Migration path
GeoRepository interface with the package as one implementation plus an in-memory fake for tests. This makes the vendor reversible and gives a seam if you later switch to nnjeim/world, symfony/intl, or an in-house dataset.Compatibility
utf8mb4 and an appropriate collation — accented and non-Latin city names are the norm, and collation mismatches surface as duplicate-detection failures.iso2/iso_code and on the child foreign keys before seeding, not after; post-seed index builds on large tables are slow and lock-prone.Sequencing
db:seed path. Ship it as a separate, idempotent, batched command invoked by a dedicated deployment step.composer update churn.Maintenance
composer audit note; unattended minor bumps to a data package are silent data changes.Support
Scaling
SELECT *, never unbounded typeahead against the table without a prefix index or a dedicated search index. A single unindexed autocomplete endpoint will be the first thing to fall over.Failure modes
Ramp-up
How can I help you explore Laravel packages today?