Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Core Laravel Package

devanoxltd/core

Core package for Laravel projects by Devanox, providing module support, helpers, and multi-tenancy features. It includes publishable config, migrations, views, translations, and assets, plus tenancy setup commands. Built for Devanox Private Limited projects on Laravel 13 and PHP 8.5+.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. devanoxltd/core is not a point solution — it is a foundational bundle that wants to sit under an entire Laravel application. In one dependency it supplies: a module system (module:list|enable|disable|migrate), global helper functions (isAppInstalled(), modules(), tenancy(), tenant()), multi-tenancy with database-per-tenant switching, auto-registered HTTP middleware, Blade/Livewire component namespaces, a Core facade alias, publishable config/migrations/views/lang/assets, and a license-verification subsystem. That is four or five products wearing one Composer name. For a Devanox-owned codebase this is a reasonable internal accelerator; for any other organisation it means adopting a framework-within-a-framework whose boundaries are not documented. Treat the module system and the tenancy layer as the only two genuinely valuable capabilities and evaluate the rest as convenience surface you may not want.

Integration feasibility. Mechanically, installation is standard Laravel package work: composer require, vendor:publish --tag="core", php artisan migrate, plus a separate tenancy flow (tenancy-config, tenancy-migrations, tenancy:install). The blockers are environmental rather than procedural:

  • Hard toolchain floor. PHP 8.5+ and Laravel 13.x are mandated. This is a bleeding-edge constraint that will fail composer require outright on any application not already on that stack, and it forces your runtime images, CI matrix, and possibly your managed hosting onto versions your platform team may not yet support. A single package dictating your platform version is a governance problem, not just a technical one.
  • License is NOASSERTION with a Proprietary License file. Nothing ships until legal confirms whether internal use, modification, forking, and redistribution inside your organisation are permitted — and whether the bundled license-verification code constitutes a phone-home obligation.
  • Documentation credibility. The README says composer require devanox/core while the repository and Packagist name are devanoxltd/core. Translations ship under an eng locale requiring APP_FALLBACK_LOCALE=eng, a workaround that leaks a package quirk into your application's global config. Both are early indicators that documentation is written for the author, not for an adopter.

Technical risk. Ranked by blast radius:

Risk Severity Why
Global helper collisions High tenancy() and tenant() are the exact function names registered by stancl/tenancy, the dominant Laravel tenancy package. The two cannot coexist; adopting this package is a one-way door on tenancy architecture.
Auto-registered InstallApp middleware High It is prepended to the HTTP kernel by the service provider, not opt-in per route. Any request to an environment where storage/installed is missing or storage is not writable can be intercepted before your own middleware runs.
License verification at runtime High A devanox:license-check command implies a remote dependency. Behaviour on expiry, DNS failure, or an unreachable vendor endpoint is undocumented — a latent outage vector and an availability coupling to a third party you have no SLA with.
Bus factor / ecosystem void High 0 stars, 0 dependents, single named maintainer. No external bug reports, no Stack Overflow corpus, no third-party tutorials. Every defect becomes a support ticket to one person.
Pre-1.0 API churn Medium Three releases through v0.2.1 with auto-generated, content-free changelogs. Breaking changes between minors are likely and unannounced.
Generated-code drift Medium tenancy:install scaffolds base models into your app; extending Tenant/Domain means your subclasses inherit an unpublished internal contract that can shift under you on upgrade.
Schema ownership Medium Publishable migrations put package tables into your application's migration history, so package upgrades and your own schema changes interleave.

Key questions to put to the vendor (or to the internal maintainer, if you are Devanox):

  1. Is use outside Devanox Private Limited projects licensed at all, and on what commercial terms?
  2. What exactly does license verification transmit, to where, how often, and what is the documented behaviour on failure, offline, or expiry?
  3. Does the package work on Laravel 12 / PHP 8.3–8.4, or is the floor genuinely hard? If hard, what is the supported-version policy going forward?
  4. Can InstallApp middleware registration be disabled via config for environments where it is inappropriate?
  5. How do tenancy()/tenant() behave if stancl/tenancy is also installed — hard failure, silent override, or coexistence?
  6. What is the support commitment: response time, security-patch turnaround, and notice period for breaking changes?
  7. Is the tenancy layer battle-tested in production at scale, and at what tenant count and database size?

Integration Approach

Stack fit. Assume this only fits a greenfield Laravel 13 / PHP 8.5 application. If your fleet is on Laravel 10–12, the honest answer is that this package is not adoptable today and the evaluation should be deferred rather than forced — downgrading the constraint is not something you control. Do not attempt to install it into a mature application with an existing tenancy implementation; the global-helper and middleware collisions make remediation more expensive than the integration.

Migration path. There is no migration path, only a greenfield path. The package is additive — it does not replace your auth, queue, or cache layer — but the tenancy capability is a foundational choice that must be made before the first tenant-scoped table exists. If you already run stancl/tenancy, spatie/laravel-multitenancy, or a hand-rolled equivalent, treat this package as incompatible until the helper-collision question is answered in writing.

Compatibility. Establish the following before writing application code:

  • Confirm the real install name (devanoxltd/core, not the README's devanox/core); if pulling from a private VCS, add the repositories entry first and verify with composer show.
  • Pin the version exactly in composer.json ("devanoxltd/core": "0.2.1") rather than accepting caret ranges — pre-1.0 packages will break you on a minor bump.
  • Diff the service provider's registrations against your own AppServiceProvider for helper-name and middleware-priority conflicts. Grep for function tenancy(, function tenant(, function modules( in vendor/ before and after install.
  • Decide up front whether tenancy is in scope. It roughly doubles the integration surface (config, migrations, install command, route registration in bootstrap/app.php, model extension) and is the least reversible part.

Sequencing. Run this as a timeboxed spike with a kill gate, not as a committed project:

  1. Week 1 — legal and toolchain gate. Licence opinion and PHP 8.5 / Laravel 13 availability on your runtime. If either fails, stop; the remaining steps are wasted effort.
  2. Week 2 — module system only. In a throwaway Laravel 13 app, create one trivial module (a route and a console command), confirm discovery, run module:list|enable|disable|migrate, and verify that composer dump-autoload in the deploy script picks up new module PSR-4 roots. This validates the headline capability.
  3. Week 3 — helpers and middleware. Enumerate every global function and alias the package registers; wrap each in a thin App\Support\* adapter so application code never calls package helpers directly. Deploy to a staging environment with storage/installed deliberately absent and deliberately unwritable to learn what InstallApp actually does.
  4. Week 4 — tenancy, isolated. Only if tenancy is a real near-term requirement: publish tenancy config/migrations, run tenancy:install, stand up two tenants, and exercise tenancy()->run() including forced-failure cases (a callback that throws mid-switch) to confirm connection and state restoration.
  5. Week 5 — licence subsystem offline test. Point devanox:license-check at a test key; record behaviour on success, rejection, no network, and expired key. Block production until failure modes are documented.
  6. Decision gate. Productionise only if the spike cleared licence, toolchain, and collision checks and the module system behaved predictably. Otherwise keep the package in the spike repo and note it as "revisit at v1.0."

If you proceed, adopt the module system first and the tenancy layer last, and keep both behind application-owned interfaces so an exit remains affordable.

Operational Impact

Maintenance. You are inheriting a dependency with one named maintainer (Mr Chetan), zero external consumers, and a changelog that is auto-generated boilerplate across three releases. There is no signal that anyone outside Devanox exercises this code, which means your production traffic will be the test suite. Budget for the possibility that your team becomes the de facto maintainer: read access to the repository, a pinned fork, or a written support agreement are all reasonable asks before this reaches production. Additionally, package-published migrations live in your application's migration history, so every upgrade requires a schema-diff review rather than a routine composer update.

Support. No public issue engagement, no documented SLA, no version-support policy. If you are not Devanox, escalate to a commercial agreement that names response times and a breaking-change notice period. If you are Devanox, the gap is internal: the package needs a named owner, a documented upgrade guide per minor version, and a rule that no release ships without a human-written changelog.

Scaling. Two distinct concerns:

  • Application scaling is governed by the module system's autoload and discovery cost at boot — negligible at ten modules, worth measuring at fifty. Module enable/disable is config-driven, so a horizontal fleet can run heterogeneous module sets per environment, which is useful but also means your staging and production module inventories can silently diverge.
  • Tenancy scaling is governed by the database-per-tenant model: each tenant creation runs tenant:create-database, so tenant provisioning cost, connection-pool sizing under PHP-FPM, and migration fan-out (tenant {artisanCommand}) all grow linearly with tenant count. This model is a good fit up to hundreds of tenants and needs deliberate engineering beyond that. The package's documentation does not discuss any of this.

Failure modes to monitor explicitly:

  • InstallApp intercepting production traffic if storage/installed is missing or the storage volume is remounted/read-only after a deploy — highest-severity, lowest-visibility failure.
  • License verification failing closed on network partition, taking the application down for a reason unrelated to your own systems.
  • Tenant context leaking across a request boundary if tenancy()->run() is interrupted by an uncaught exception or a fatal error — audit for cross-tenant data exposure, and add a defensive assertion that no tenant-scoped query executes without a resolved tenant.
  • Global helper names shadowing Laravel or third-party functions after a dependency bump — a silent behaviour change with no error until something returns the wrong shape.
  • Package migrations colliding with application-owned tables during an upgrade.

Alert on: application responses returning install/redirect states unexpectedly; failed devanox:license-check executions; migration drift between package and app; tenant provisioning errors (Tenant\DatabaseCreated / Tenant\Created events are the hook for this).

Ramp-up. Expect roughly two to three days for a Laravel-fluent engineer to reach productive use of the module system, and one to two weeks to be genuinely confident with the tenancy layer including failure-mode behaviour. The constraint is not conceptual difficulty — it is that the README is the entire documentation set, so onboarding means reading src/ directly. That cost is paid by every new engineer, forever, and it does not amortise. Mitigate by having your first adopter write an internal one-pager covering: the real install name, the helper inventory, the middleware behaviour, the tenancy lifecycle, and the licence-check failure modes. Without that artefact, this package's undocumented surface becomes tribal knowledge concentrated in one or two people — which is precisely the failure mode the package's own bus factor already exposes you to.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings