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

hesto/core

Hesto Core is the shared foundation for Hesto’s Laravel packages, providing common service providers, configuration, helpers, and base classes. It simplifies building modular Laravel applications and keeps the Hesto ecosystem consistent.

View on GitHub
Deep Wiki
Context7

Getting Started

With only ~30 stars and an unknown upstream repository, treat hesto/core as unvetted code. Start by confirming what you actually installed.

  1. Verify the package identity before writing any code.

    composer show hesto/core --all
    

    Check the source/dist URL, the tagged version, the PHP and illuminate/* constraints, and the autoload PSR-4 namespace. If Composer reports no source URL, or the version is a dev-* branch, pin it explicitly in composer.json rather than letting it float.

  2. Read the source manifest first, not the README. Open vendor/hesto/core/composer.json, then locate the service provider (usually declared under extra.laravel.providers or discoverable via package discovery). The provider's register()/boot() methods tell you almost everything: what it binds into the container, what config it merges, what routes/migrations/commands it publishes.

  3. Look for the "surface area" in this order:

    • src/Providers/*ServiceProvider.php — bindings, singletons, aliases
    • config/*.php — the knobs you will actually touch
    • src/Facades/* — the ergonomic entry point, if one exists
    • tests/ — if present, these are the only reliable usage docs you have
    • README.md — read after the above, and cross-check its claims against the code
  4. First real use case. The lowest-risk first integration is a single, isolated call path: register the provider, publish the config, and exercise one public entry point (a facade method, a helper, or a bound contract) inside a test or php artisan tinker. Confirm it resolves, then inspect what it touched (DB, cache, HTTP) before wiring it into application flow.

  5. Baseline the install. Run composer validate, php artisan about (or config:show), and your test suite immediately after install so you can attribute any later breakage to the package rather than to your own changes.

Implementation Patterns

Given the low signal on this package, the dominant pattern should be wrap, don't sprinkle.

Adapter/facade boundary. Do not call hesto/core classes directly from controllers or models. Introduce one thin application-level class (e.g. App\Support\CoreClient or a repository) that owns every call into the package. When the package is abandoned or replaced, you edit one file. This is the single highest-value pattern for a low-star dependency.

// app/Support/CoreGateway.php
final class CoreGateway
{
    public function __construct(private readonly \Hesto\Core\... $core) {}

    public function doTheThing(array $payload): mixed
    {
        return $this->core->...($payload);
    }
}

Bind it as a singleton in a dedicated AppServiceProvider method, and resolve via the interface so tests can swap a fake.

Config-first integration. Publish the config and treat the package config as defaults you override from your own config/ or .env. Never edit files under vendor/. If the provider uses mergeConfigFrom, your app-level config wins only for keys you actually define — enumerate the keys you care about explicitly rather than assuming a deep merge of nested arrays.

Feature-flag the adoption. Because the package is unproven, gate its use behind a config flag or a dedicated feature toggle. This lets you dark-launch, A/B the behavior, and kill-switch in production without a deploy cycle.

Contract-based testing. If the package ships interfaces, type-hint against them in your code and bind the package's implementation in the container. If it ships only concrete classes, define your own interface in App\Contracts and adapt. Then write one integration test that hits the real package and many unit tests against a fake — you get regression coverage on your side of the boundary even if upstream never changes.

Composer hygiene. Pin to an exact version ("hesto/core": "1.2.3"), commit composer.lock, and add a replace/fork plan to your runbook. Consider a private fork under your org's VCS with a vcs repository entry so you can patch upstream bugs yourself — with 30 stars, the odds of a timely upstream fix are low.

Gotchas and Tips

  • Unknown provenance is the headline risk. No discoverable repository means no issue tracker, no security advisories, no audit trail. Before production use, composer audit and a manual pass over the source for eval, unserialize, dynamic call_user_func, raw DB::statement, and outbound HTTP calls is mandatory, not optional.

  • Package discovery vs. manual registration. If the package provides extra.laravel.providers, Laravel auto-registers it. If you also add it to config/app.php, you get double registration and occasional "already bound" or duplicate-listener symptoms. Pick one; prefer discovery and remove any manual entry.

  • Config merge semantics. mergeConfigFrom is shallow per top-level key in some Laravel versions and deep in others depending on how it is called. If a nested key you set is ignored, the package is likely calling config()->set() in register() after the merge, or reading config in a constructor that runs before your override. Move your overrides earlier or use $app->booted().

  • Publish tags are guesswork. Run php artisan vendor:publish without --tag first and read the prompt — it lists every available tag. Publishing all tags often dumps migrations and assets you did not want into your repo.

  • Migrations are forever. If the package publishes migrations, inspect them before running. Copy them into your app's migrations with a timestamp you control; do not depend on vendor:publish re-running cleanly in CI.

  • Debugging resolved bindings. When behavior is mysterious, app()->bound(SomeClass::class), get_class(app(SomeClass::class)), and php artisan about confirm what was actually bound. Log::debug inside the package provider is acceptable temporarily — but never commit edits to vendor/; use a vcs fork instead.

  • Extension points to look for, in priority order: interfaces you can rebind, events the package dispatches (listen rather than subclass), macros if it registers a macroable class, and published config. Subclassing package concretes is the last resort — it couples you to internals that a patch release will break.

  • PHP/Laravel version drift. Confirm the illuminate/support constraint against your app. A package that supports ^9.0|^10.0 but not ^11.0 will either fail to install or, worse, install under a lenient constraint and fail at runtime on a removed helper. Run composer why-not if resolution misbehaves.

  • Exit criteria. Define now what would make you drop the package: no release in 12 months, a CVE, a required Laravel upgrade it blocks, or two production incidents traced to it. Having that written down prevents quiet dependency creep on a 30-star, 0.47-score library.

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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package