γ€γRoot VoidGate
User / IP
:
216.73.217.162
Host / Server
:
15.235.182.215 / pollibazaar.com
System
:
Linux asia.cbnex.com 5.14.0-611.49.2.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Apr 30 09:05:08 EDT 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
pollibazaar
/
public_html
/
vendor
/
devrabiul
/
laravel-geo-genius
/
Viewing: README.md
# π¦ Laravel GeoGenius β Timezone, Geolocation, Multilingual Toolkit & Country Picker for Laravel **Laravel GeoGenius** is a lightweight, flexible package for Laravel applications that handles: * π **Geolocation** β Detect user location via IP * π **Timezone Management** β Detect and convert user timezones automatically * π·οΈ **Multilingual & Translation Support** β Auto-detect locale, translate messages, and even convert numbers * π± **Country Picker & Phone Validation** β Auto-detect default country, show a dropdown of all countries, format and validate numbers automatically It automatically retrieves detailed IP-based location data, detects the userβs timezone, sets the correct locale, and even initialises a fully-functional phone input field with country picker and validation β all seamlessly integrated into your app. β Fully compatible with **Livewire**, works via **cookies or headers**, and enables a truly **global-ready Laravel application**. [](https://packagist.org/packages/devrabiul/laravel-geo-genius) [](https://packagist.org/packages/devrabiul/laravel-geo-genius) [](https://packagist.org/packages/devrabiul/laravel-geo-genius)  [](https://plant.treeware.earth/devrabiul/laravel-geo-genius)  ## Featured On Iβm proud to share that **GeoGenius** was featured on **Laravel News** in their article: *βGeoGenius Package for Laravelβ*. Read it here: [GeoGenius Package for Laravel β Laravel News](https://laravel-news.com/geogenius-package-for-laravel) --- ## π Live Demo π [Try the Live Demo](https://packages.rixetbd.com/devrabiul/laravel-geo-genius)  --- ## β¨ Key Features * π **Automatic Timezone Detection** β via cookies, headers, or fallback strategies * π§ **Timezone Conversion Helpers** β convert timestamps automatically * π± **Country Picker & Phone Validation** β detect visitorβs country, show dropdown, format & validate numbers * β‘ **Lightweight & Dependency-Free** β no jQuery or frontend frameworks required * π **Livewire Compatible** β works seamlessly with Livewire apps * π§ **Configurable Detection Strategy** β customise detection method per app requirements * π¦ **Migration & Artisan Support** β add `timezone` column effortlessly * π **Caching & Offline Support** β reduces API calls and handles offline gracefully * π **Multilingual Ready** β built-in translation and auto-translation support Under the hood, it leverages reliable **IP geolocation APIs** like [`ipwho.is`](https://ipwho.is) and [`ip-api.com`](http://ip-api.com) with caching for optimal performance. --- ## π¦ Installation ```bash composer require devrabiul/laravel-geo-genius ``` Publish the configuration and migration stub: ```bash php artisan vendor:publish --provider="Devrabiul\\LaravelGeoGenius\\LaravelGeoGeniusServiceProvider" ``` --- ## β‘ Quick Start Use Laravel GeoGenius in two ways: 1. β **Global Helper** β `laravelGeoGenius()` *(recommended)* 2. π§° **Service Class** β manually instantiate `GeoLocationService` ### Global Helper ```php laravelGeoGenius()->geo()->locateVisitor(); laravelGeoGenius()->geo()->getCountry(); laravelGeoGenius()->geo()->getTimezone(); laravelGeoGenius()->geo()->getLatitude(); ``` ### Service Class ```php use Devrabiul\LaravelGeoGenius\Services\GeoLocationService; $geo = new GeoLocationService(); $ip = $geo->getClientIp(); $locationData = $geo->locateVisitor(); ``` --- ## π Multilingual & Translation Built-in auto translation and number conversion: ```php use function Devrabiul\LaravelGeoGenius\geniusTrans; use function Devrabiul\LaravelGeoGenius\geniusTranslateNumber; echo geniusTrans('welcome_message'); echo geniusTranslateNumber(12345); // Bengali digits if locale is 'bn' ``` Configure in `config/laravel-geo-genius.php`: ```php 'translate' => [ 'auto_translate' => true, ], ``` ## π Translation Artisan Commands Laravel GeoGenius provides a set of helpful artisan commands to manage languages and translations easily: | Command | Description | | --------------------------------------------------------------- | ---------------------------------------------------------------------------- | | `php artisan geo:add-language {locale}` | Create a new language directory with starter files (e.g. `en`, `bn`). | | `php artisan geo:translations-generate --locale={locale}` | Scan your app for `translate('...')` calls and auto-generate `messages.php`. | | `php artisan geo:translate-language {locale} --count={n}` | Translate up to `n` messages from `new-messages.php` into `messages.php`. | | `php artisan geo:translate-language-all {locale} --count={n}` | Keep running batch translations until all strings are translated. | | `php artisan geo:translate-language-batch {locale} --count={n}` | Translate a fixed batch of `n` messages at a time. | ### Examples ```bash # 1. Add English language support php artisan geo:add-language en # 2. Generate messages.php file from all translate() calls php artisan geo:translations-generate --locale=en # 3. Translate up to 100 strings for English php artisan geo:translate-language en --count=100 # 4. Keep translating until all English strings are done (300 at a time) php artisan geo:translate-language-all en --count=300 # 5. Translate 50 strings in a batch (useful for automation) php artisan geo:translate-language-batch en --count=50 ``` --- ## π Change Current User Language You can programmatically change the current user's language using the `changeUserLanguage` method: ```php use Illuminate\Support\Facades\Route; Route::get('/change-lang', function () { // Change current user language to Bengali laravelGeoGenius()->language()->changeUserLanguage('bn'); // Continue your logic return redirect()->back(); }); ```` > Supported locale codes depend on your configuration (`config/laravel-geo-genius.php`) and the languages you have added via `geo:add-language`. ## π Timezone Artisan Commands Laravel GeoGenius ships with helpful artisan commands: | Command | Description | |----------------------------------------|-------------------------------------------------------| | `php artisan geo:add-language {locale}` | Add a new language (e.g. `en`, `bn`) to your app. | ### Examples ```bash # Add Bengali language php artisan geo:add-language bn ```` --- ## π Timezone Detection & Conversion ```php use Devrabiul\LaravelGeoGenius\Services\TimezoneService; $tz = new TimezoneService(); // Detect user's timezone $timezone = $tz->getUserTimezone(); // Convert UTC datetime to user timezone echo $tz->convertToUserTimezone('2025-09-13 15:00:00'); ``` ## π Timezone Artisan Commands Laravel GeoGenius ships with helpful artisan commands: | Command | Description | |----------------------------------------|-------------------------------------------------------| | `php artisan geo:add-timezone-column {table}` | Add a nullable `timezone` column to the specified table if it does not exist. | ### Examples ```bash # Add a timezone column to the 'users' table php artisan geo:add-timezone-column users ```` --- ## π± Country Picker & Phone Input Laravel GeoGenius makes it trivial to initialise a **country-aware phone input field**: * Auto-detects visitorβs **default country** * Displays **country dropdown** (or restrict to one country) * Formats phone numbers as the user types * Provides **built-in validation** for numbers ### Quick Blade Example ```html <!DOCTYPE html> <html lang="{{ app()->getLocale() }}"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> {!! laravelGeoGenius()->initIntlPhoneInput() !!} <input id="phone" type="tel" name="phone"> </body> </html> ``` GeoGenius injects the detected country code into a hidden span: ```html <span class="system-default-country-code" data-value="us"></span> ``` Then you can use intl-tel-inputβs API to validate on submit: ```js const input = document.querySelector("#phone"); const iti = window.intlTelInput(input, { initialCountry: document.querySelector('.system-default-country-code').dataset.value, utilsScript: "https://cdn.jsdelivr.net/npm/intl-tel-input@19.2.15/build/js/utils.js", }); form.addEventListener('submit', e => { if (!iti.isValidNumber()) { e.preventDefault(); alert('Please enter a valid phone number'); } }); ``` > All scripts/styles are included automatically by `initIntlPhoneInput()` β you only need to add the `<input>` and optionally the validation snippet. --- ## π Restrict to Specific Countries Laravel GeoGenius gives you full control over which countries appear in the **phone input dropdown**. You can either show **all countries** (default) or restrict it to **a specific set** such as only the U.S. and Canada. This behavior is configured in your `config/laravel-geo-genius.php` file under the `phone_input` section. ### Example Configuration ```php 'phone_input' => [ 'initial_country' => env('GEO_PHONE_DEFAULT_COUNTRY', 'us'), 'only_countries_mode' => true, // enable restriction mode 'only_countries_array' => ['us', 'ca'], // allowed countries only 'auto_insert_dial_code' => false, 'national_mode' => false, 'separate_dial_code' => false, 'show_selected_dial_code' => true, 'auto_placeholder' => 'off', ], ``` When `only_countries_mode` is `true`, GeoGenius will: β Restrict the dropdown list to countries in `only_countries_array` β Set the `initial_country` to the visitorβs detected country (if allowed) β Fallback to the default country if the detected one isnβt in the list If the mode is disabled (`false`), all countries are shown automatically. --- ## π§ Additional Notes * π **APIs Used:** [ipify.org](https://api.ipify.org), [ipwho.is](https://ipwho.is) * π **Caching:** Geo data cached 7 days per IP (`ttl_minutes` = cache lifetime in minutes) * βοΈ **Fallback:** Returns default structure if offline * π§ͺ **Localhost Handling:** Fetches external IP for `127.0.0.1` or `::1` --- ## π€ Contributing We welcome contributions! Please: 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests if applicable 5. Submit a pull request Report bugs through [GitHub Issues](https://github.com/devrabiul/laravel-geo-genius/issues). --- ## π± Treeware This package is [Treeware](https://treeware.earth). If you use it in production, please [**buy the world a tree**](https://plant.treeware.earth/devrabiul/laravel-geo-genius) to thank us for our work. Your support helps create employment for local families and restores wildlife habitats. --- ## π License MIT License. See [LICENSE](https://github.com/devrabiul/laravel-geo-genius/blob/main/LICENSE) for details. --- ## π¬ Support - π§ Email: [devrabiul@gmail.com](mailto:devrabiul@gmail.com) - π GitHub: [devrabiul/laravel-geo-genius](https://github.com/devrabiul/laravel-geo-genius) - π¦ Packagist: [packagist.org/packages/devrabiul/laravel-geo-genius](https://packagist.org/packages/devrabiul/laravel-geo-genius) --- ## π Changelog See [CHANGELOG.md](https://github.com/devrabiul/laravel-geo-genius/blob/main/CHANGELOG.md) for recent changes and updates.
Coded With 💗 by
0x6ick