devanoxltd / core
Core package for Laravel projects providing module support, helpers, and license verification. This package is developed for use in Devanox Private Limited projects.
Package info
Type:laravel-package
pkg:composer/devanoxltd/core
Fund package maintenance!
Requires
- php: ^8.5
- devanoxltd/php-html-parser: ^1.2
- illuminate/support: ^13.24
- livewire/livewire: ^4.3
Requires (Dev)
- devanoxltd/tailwind-class-merge-laravel: ^v1.4
- driftingly/rector-laravel: ^2.5
- fakerphp/faker: ^1.24
- larastan/larastan: ^3.10
- laravel/pao: ^1.1
- laravel/pint: ^1.30
- mockery/mockery: ^1.6
- mrchetan/php_standard: ^5.3
- nunomaduro/collision: ^8.9
- orchestra/testbench: ^11.1
- pestphp/pest: ^5.0
- pestphp/pest-plugin-faker: ^5.0
- pestphp/pest-plugin-laravel: ^5.0
- pestphp/pest-plugin-type-coverage: ^5.0
- phpstan/extension-installer: ^1.4
- rector/rector: ^2.6
This package is auto-updated.
Last update: 2026-08-12 12:59:02 UTC
README
Core
Core package for Laravel projects providing module support, helpers, and multi-tenancy capabilities. This package is developed for use in Devanox Private Limited projects.
Requirements
- PHP 8.5 or higher
- Laravel 13.x
Installation
You can install the package via Composer:
composer require devanoxltd/core
You may publish all of the package's resources at once:
php artisan vendor:publish --tag="core"
Or, you may publish each resource individually:
Publishing the Configuration File
php artisan vendor:publish --tag="core-config"
Publishing and Running the Migrations
php artisan vendor:publish --tag="core-migrations"
php artisan migrate
Publishing the Views
php artisan vendor:publish --tag="core-views"
Publishing the Translations
php artisan vendor:publish --tag="core-lang"
Note on translations: This package ships its translations under the
englocale. To use them in a Laravel project whose default locale isen, setAPP_FALLBACK_LOCALE=engin your application's.envfile. You can still publish the language files and create anenversion underlang/vendor/core/to override individual strings.
Publishing the Public Assets
php artisan vendor:publish --tag="core-assets"
Tenancy Setup
If you are using the multi-tenancy features of this package, you need to publish the tenancy configuration and migrations, and then run the installation command:
php artisan vendor:publish --tag="tenancy-config" php artisan vendor:publish --tag="tenancy-migrations" php artisan tenancy:install php artisan migrate
Next, register the tenant routes in your Laravel application's bootstrap/app.php file using the withRouting method's then callback:
use Devanox\Core\Http\Middleware\PreventAccessFromCentralDomains; use Illuminate\Support\Facades\Route; // ... ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', then: function () { if (file_exists(base_path('routes/tenant.php'))) { Route::middleware([ 'web', PreventAccessFromCentralDomains::class, ]) ->name('tenant.') ->group(base_path('routes/tenant.php')); } } )
Extending Tenancy Models
If your host application needs to add custom relationships or logic to the Tenant or Domain models, you can create your own models extending the package's base models.
First, create your custom model extending the base model:
namespace App\Models; use Devanox\Core\Models\Tenant as BaseTenant; class Tenant extends BaseTenant { // Add custom relationships or logic here public function users() { return $this->hasMany(User::class); } }
Then, update the config/tenancy.php configuration file to use your new model:
'models' => [ 'tenant' => App\Models\Tenant::class, 'domain' => Devanox\Core\Models\Domain::class, ],
Usage
The devanoxltd/core package provides a rich set of tools to manage modules and multi-tenancy in your Laravel application.
Artisan Commands
Module Management
php artisan module:list: List all installed modules and their status.php artisan module:enable {module?}: Enable a specific module. Use the--alloption to enable all modules.php artisan module:disable {module?}: Disable a specific module. Use the--alloption to disable all modules.php artisan module:migrate {module?}: Run migrations for a specific module or all modules.
Core Utilities
php artisan app:clean-up: Clean up system data, caches, or logs.php artisan migrate:check: Check for any pending database migrations.php artisan devanox:license-check: Check licenses for the package.
Tenancy Management (when enabled)
php artisan tenancy:install: Generate tenancy base models and prepare configuration.php artisan tenant:create-database {id}: Create a database for a specific tenant.php artisan tenant {artisanCommand}: Run a specific Artisan command for a specific tenant or all tenants.
Running Code in a Tenant's Context
You can safely execute code under a specific tenant's context using the tenancy()->run() method. This will temporarily set the tenant, switch the database connections and other configured services, run your callback, and then completely restore the original configuration and tenant state.
use App\Models\Tenant; $tenant = Tenant::find(1); tenancy()->run($tenant, function ($tenant) { // This code will run within the context of the tenant // e.g., using the tenant's database connection });
Helper Functions
The package registers several global helper functions for convenience:
isAppInstalled(): bool- Checks if the application has been installed (verifies the existence of thestorage/installedfile).modules(?bool $status = true): Collection- Retrieve a collection of modules. Passtruefor enabled,falsefor disabled, andnullfor all modules.tenancy(): \Devanox\Core\Support\Tenancy- Resolves the mainTenancymanager instance.tenant(): ?\Devanox\Core\Contracts\Models\Tenant- Returns the currently identifiedTenantmodel, ornullif tenancy is disabled or no tenant is resolved.
Middleware
The service provider automatically registers the following middleware to the HTTP kernel:
Devanox\Core\Http\Middleware\InstallApp: Ensures the application is installed before handling requests.
If tenancy is enabled, it also prepends PreventAccessFromCentralDomains to protect tenant-specific routes from being accessed via central application domains.
Blade & Livewire Components
The package registers its Blade components under the core:: namespace and its Livewire components natively.
You can use them in your views using the core:: prefix for blade views, or standard Livewire syntax for any bundled Livewire components.
Facades
The package provides the \Devanox\Core\Facades\Core facade, which is automatically aliased as Core via composer.json for easy access to core package functionality.
Testing
Run the package test suites with Composer:
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Thank you for considering contributing to Core! Please review our contributing guide to get started.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
Core is proprietary software licensed under the Proprietary License.