doublethreedigital/duplicator
Duplicator is a Laravel package for duplicating Eloquent models in a single line. Clone records along with their relationships, customise which attributes and relations get copied, and keep data consistent when recreating entries, templates, or drafts without repetitive code.
Architecture fit. Duplicator is not a general-purpose Laravel package; it is a Statamic addon. Its architectural fit therefore reduces to one question: does the target estate run Statamic, and on which major version? If it does not, the package is out of scope. If it does, the addon sits at the Control Panel UX layer — it adds a "Duplicate" action to supported content types and copies field data. It does not own routing, schema, storage, or business logic beyond that copy. That is a small footprint and a narrow blast radius, which is the strongest thing one can say about it. Confirm whether current Statamic already offers native duplication for the relevant collections; if so, this package is a redundant convenience.
Integration feasibility. Installation follows the standard Statamic addon pattern: Composer require, service provider auto-discovery or registration, optional config publishing. Real feasibility is governed by three version axes — Statamic major, Laravel major, and PHP minor — and the addon has been archived since May 2023. It is unlikely to declare or be tested against Statamic 4/5 or PHP 8.2/8.3. composer why-not against a current project will answer installability faster than any release-note reading. Do not assume installability; verify it.
Technical risk.
Key questions.
composer.json admit them?Stack fit. The relevant matrix is Statamic major × Laravel major × PHP minor per environment, not PHP alone. The addon is viable only where that triple intersects its declared constraints. Environments outside the window are not candidates; do not stretch the window with --ignore-platform-reqs.
Migration path.
composer.json, config, service provider, and action classes; flag Statamic APIs that may have moved since 2023.Compatibility. Test against the addon's stated supported versions and against our actual ceiling versions. Archived addons commonly pass their historical CI and fail our matrix. Treat the Control Panel as the test surface: an addon that loads but throws on action click is a production surprise, not a dev-time one. Validate asset and relation copying explicitly, since those are the most likely silent failures.
Sequencing.
Maintenance. Archival shifts all maintenance onto us. Any defect, compatibility break, or security finding requires a fork, a patch, and a release process — disproportionate for a convenience button. Unless the capability demonstrably saves editor time at scale, the maintenance cost likely exceeds the benefit, and the right answer is to replace or retire it.
Support. First-line support is near zero in the happy path; the burden concentrates at upgrade time. Every Statamic, Laravel, or PHP upgrade is a potential break with no vendor response. Record a standing exception naming the archived status, the pinned version, the owning team, and the trigger for retire-or-fork. Without that record, the exception becomes invisible debt.
Scaling. Per-request overhead is negligible — the action fires on click, not on render. The scaling concern is content-side: bulk duplication can silently inflate entries, asset references, and search indexes. Set a convention for when duplication is appropriate, and confirm the addon does not auto-duplicate on publish or schedule without explicit user action.
Failure modes.
Ramp-up. Effectively zero for editors — it is a one-click action. Developer ramp-up is one to two hours to read the manifest, provider, config, and action classes, and to verify field-type coverage. The real cost is governance: version inventory, build-vs-adopt analysis, exception logging, and the eventual fork-or-retire call. Budget one engineer-day for assessment and pilot; treat fork-or-retire as a separately estimated effort if Phase 0 finds compatibility gaps.
How can I help you explore Laravel packages today?