trinity/core-entities
trinity/core-entities is a Laravel/PHP package that provides reusable core entity building blocks for domain modeling. It offers a clean, extensible foundation for consistent entity behavior across applications, helping teams structure shared domain models with less boilerplate.
Architecture fit. trinity/core-entities is published as a Composer package under the vendor namespace trinity, which is not the namespace of the Laravel framework or any established PHP entity/domain library. The description "Trinity Framework" suggests this is either (a) a domain/entity primitive layer extracted from a proprietary application framework, or (b) the kernel of a bespoke framework that happens to be installable via Composer. Neither is the same thing as a Laravel package. There is no evidence of a ServiceProvider, facade, config publishing, or contract bindings that would let it slot into Laravel's container lifecycle. The architecture fit is therefore unverified at best and probably orthogonal — a TPM should treat this as a third-party library that Laravel could autoload, not as a Laravel integration.
Integration feasibility. Low. A 2017 release date places it in the PHP 7.0/7.1 and Laravel 5.3–5.4 window. Any illuminate/* or symfony/* constraints it carries will almost certainly fail Composer resolution against Laravel 9/10/11 and PHP 8.1+. Even under --ignore-platform-reqs, the package's own code is likely to hit PHP 8 hard errors (dynamic property deprecation, removed each(), curly-brace string offsets, create_function). There is no README content of substance, no documented public API, no test suite referenced, and zero dependents — meaning no one has validated it against a real application. Integration would be a from-scratch compatibility project, not an install.
Technical risk: Critical.
modpreneur), likely unreachable.composer audit will almost certainly fail.Key questions to resolve before any commitment:
composer.json and the src/ tree first.illuminate/* requires? If yes, which major version?Provisional verdict: do not adopt as a runtime dependency. Evaluate strictly as reference source code.
Stack fit. Effectively zero for a current Laravel estate. It fits only a hypothetical stack pinned to PHP 7.0–7.1 and Laravel 5.3–5.4. If the organisation has a legacy application frozen on that window, this package might be a candidate — but even then, its zero-adoption status means you would be the first production user, absorbing all discovery cost.
Migration path. Three options, in descending order of preference:
Illuminate\Contracts\Support\Arrayable, validation rules). You get PHP 8.3/8.4 support, static analysis, tests, and ownership. The licence permits copying patterns directly, so there is no legal barrier to lifting the design and discarding the implementation.internal/core-entities), drop the Packagist dependency, upgrade the PHP constraint, add PHPStan/Psalm at level 6+, add PHPUnit coverage, and pin transitive dependencies to current versions. Only worth it if the audit reveals non-trivial, hard-to-reproduce business logic inside — which is unlikely for an "entities" package.Compatibility. Any bridge to modern Laravel must be an anti-corruption layer: a thin internal interface (EntityContract, ValueObjectContract) that our application code depends on, with the Trinity types confined behind it. That way the third-party surface is swappable and never leaks into controllers, jobs, or Eloquent models. Do not let vendor types appear in public method signatures.
Sequencing (if the fork path is chosen):
composer outdated, composer audit, php -l across src/, attempt install under PHP 8.3 with --ignore-platform-reqs and catalogue every fatal."php": ">=8.2", add CI (PHPUnit, PHPStan, composer audit).Do not sequence this ahead of higher-value work without an explicit opportunity-cost conversation; there is no deadline pressure that justifies shortcutting the audit.
Maintenance. Total cost transfer. Upstream is dormant; every bug, security advisory, and PHP-version break becomes ours. Realistically that is 2–4 engineer-days per year of background maintenance for a small fork, plus unbudgeted spikes whenever PHP or Laravel ships a major. The MIT licence means we can maintain it indefinitely without permission — but also that nobody else will.
Support. None. No issue triage, no security contact, no changelog, no upgrade guide. Any incident begins with "read the source", which is the most expensive possible first step during an outage. For a package that sits in the domain layer of the application, that is a poor place to have no escalation path.
Scaling. Entirely unknown and unbenchmarked. "Entities" packages are usually CPU-cheap and allocation-heavy rather than throughput-bound, so raw scaling is probably not the concern — but the absence of any performance evidence means we would be the ones discovering pathological cases (e.g. deep hydration, unguarded reflection in constructors) under production load.
Failure modes to plan for:
Ramp-up. High relative to package size. Onboarding requires reading source rather than docs, and there is no community corpus (no Stack Overflow answers, no tutorial articles, no blog posts) to fall back on. Estimate 2–3 days for a senior engineer to reach productive confidence on the fork; that cost recurs for every new team member who touches it, which is the real argument against adoption for a package that saves maybe a week once.
Bottom line for the roadmap: treat trinity/core-entities as reference material, not a dependency. The dominant signal is not the zero stars — it is the combination of a 2017 release date, zero dependents, and a Laravel ecosystem that has since moved four major versions. Re-implement behind internal contracts, retain the MIT licence notice if any code is copied, and do not let this appear on a dependency manifest.
How can I help you explore Laravel packages today?