titustum/kenyan-faker-provider

Kenyan-specific Faker provider for Laravel and PHP Faker

Maintainers

Package info

github.com/titustum/kenyan-faker-provider

pkg:composer/titustum/kenyan-faker-provider

Statistics

Installs: 31

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.3 2025-09-14 14:00 UTC

This package is auto-updated.

Last update: 2026-02-25 13:29:39 UTC


README

Kenyan-specific locale data for Faker, designed for use with PHP applications and Laravel projects.

This package adds support for realistic Kenyan:

  • Person names (including Christian & Islamic names)
  • Phone numbers (Safaricom, Airtel, etc.)
  • Addresses
  • Counties, Towns & Cities
  • Companies, Payments, and more

📦 Package: titustum/kenyan-faker-provider
🇰🇪 Locale: en_KE

📦 Installation

A. Using Composer

composer require titustum/kenyan-faker-provider --dev

Make sure fakerphp/faker is also installed (Laravel includes it by default).

🚀 Usage

A. In a Laravel Seeder (Recommended)

You can load the Kenyan Faker providers manually or rely on locale auto-loading.

1. Manual Registration of Providers

use Faker\Factory as Faker;

class UsersTableSeeder extends Seeder
{
    public function run()
    {
        $faker = Faker::create();

        // Register Kenyan providers
        $faker->addProvider(new \KenyaFaker\Provider\en_KE\Person($faker));
        $faker->addProvider(new \KenyaFaker\Provider\en_KE\PhoneNumber($faker));
        $faker->addProvider(new \KenyaFaker\Provider\en_KE\Address($faker));
        $faker->addProvider(new \KenyaFaker\Provider\en_KE\Company($faker));
        $faker->addProvider(new \KenyaFaker\Provider\en_KE\Payment($faker));
        $faker->addProvider(new \KenyaFaker\Provider\en_KE\Internet($faker));

        DB::table('users')->insert([
          'name'       => $faker->name('male'),      // e.g. "James Kiprotich"
          'email'      => $faker->email(),           // e.g. "j.kiprotich@example.co.ke"
          'phone'      => $faker->phoneNumber(),     // e.g. "0722 456 789"
          'county'     => $faker->county(),          // e.g. "Uasin Gishu"
          'town'     => $faker->town(),          // e.g. "Kakamega"
          'city'     => $faker->city(),          // e.g. "Garissa"
          'address'    => $faker->address(),         // e.g. "Eldoret, Uasin Gishu 30100"
          'company'    => $faker->company(),         // e.g. "Kilimanjaro Supplies Ltd"
          'mpesa_till' => $faker->mpesaTill(),       // e.g. "923456"
      ]);

    }
}

B. Using the Kenyan Locale (en_KE)

If you follow standard Faker locale conventions, you can load all providers automatically:

$faker = Faker::create('en_KE');

echo $faker->name();            // e.g., "Brian Kiptoo"
echo $faker->phoneNumber();     // e.g., "0722 123 456"
echo $faker->county();          // e.g., "Nairobi"
echo $faker->town();          // e.g., "Nakuru"
echo $faker->city();          // e.g., "Nyeri"
echo $faker->company();         // e.g., "Kilimanjaro Logistics Ltd"
echo $faker->mpesaPaybill();    // e.g., "123456"
echo $faker->email();           // e.g., "mary.wanjiru@example.co.ke"

No manual provider registration required — Laravel auto-discovers the package.

C. Quick Examples (All Providers)

Person

$faker->name();          // "Mary Wanjiku"
$faker->firstName();     // "Amina"
$faker->lastName();      // "Mutua"

Phone Number

$faker->phoneNumber();   // "0722 654 321"
$faker->mobileNumber();  // "0798 123 456"

Address

$faker->county();        // "Kiambu"
$faker->town();          // "Thika"
$faker->postalCode();    // "01000"
$faker->address();       // "Thika, Kiambu 01000"

Company

$faker->company();       // "Rift Valley Traders Ltd"
$faker->companySuffix(); // "Enterprises"

Payment (MPESA)

$faker->mpesaPaybill();  // "345678"
$faker->mpesaTill();     // "923456"

Internet

$faker->email();         // "kevin.kiprotich@kenya.co.ke"
$faker->domainName();    // "nairobitech.co.ke"
$faker->userName();      // "wanjiku.m"

This will automatically use the Faker\Provider\en_KE providers if they're properly autoloaded.

🧩 Features

Provider Status Description
Person.php ✅ Ready Kenyan male/female first & last names
PhoneNumber.php ✅ Ready Kenyan mobile phone numbers (Safaricom, Airtel)
Address.php ✅ Ready Kenyan counties, towns, postal codes
Company.php ✅ Ready Local business suffixes and names
Payment.php ✅ Ready Mock MPESA Paybill, Till numbers

⚙️ Laravel Auto-Discovery

This package supports Laravel auto-discovery via KenyaFaker\Laravel\KenyanFakerServiceProvider.

🛠 Local Development Setup

To test locally in another Laravel app:

  1. Clone this repo:

    git clone https://github.com/titustum/kenyan-faker-provider.git
  2. In your Laravel app composer.json:

"repositories": [
  {
    "type": "path",
    "url": "../path-to/kenyan-faker-provider"
  }
]
  1. Require the package:
composer require titustum/kenyan-faker-provider --dev

✍️ Author

Titus Tum 📧 tituskiptanuitum@gmail.com 🔗 GitHub: @titustum

📄 License

This package is open-sourced software licensed under the MIT license.

🙌 Contributing

Pull requests are welcome! Feel free to submit bug fixes, new providers, or improved datasets.

🌍 Roadmap

  • Person names (Christian, Muslim, regional)
  • Phone numbers (Safaricom, Airtel, Telkom)
  • Address data (Counties, Sub-counties, P.O. Boxes)
  • Company data
  • Payment providers (MPESA, Airtel Money, etc.)
  • Add reginal/tribal based names

⭐️ Why Use This?

Laravel projects targeting Kenya often lack realistic seed data. This package brings localized names, phone numbers, and business data so your app looks and behaves closer to real-world usage in Kenya.