clarkewing/legacy-sync
Sync data between legacy systems and modern Laravel applications. Provides configurable mappings, queued imports, and incremental updates so you can migrate or mirror old databases without downtime or custom scripts.
deleteRecord() closes the last obvious gap in CRUD parity (create/update were already implicit; reads come from the app DB). This shifts the decision from "do we build a bespoke sync layer?" toward "do we adopt a thin package and spend our engineering budget on product surface?" — the remaining custom work is policy, not plumbing.deleteRecord() is a milestone that unblocks retiring legacy admin screens that currently own deletion — a concrete roadmap checkpoint.Consider adoption when:
Look elsewhere when:
deleteRecord() is a liability rather than a feature.Recommended adoption pattern for v0.3.0: adopt, pin the version, enable create/update first, and hold deleteRecord() behind a feature flag until soft-delete plus an audit log are in place. Add a reconciliation report to the definition of done for the migration epic.
For executives (one paragraph): We're evaluating a small open-source Laravel package that lets our new application and the legacy system stay in sync while we migrate. The newest release adds the ability to delete records from the other database, which means the package now covers the full create/update/delete lifecycle. Practically, that lets us start retiring legacy admin screens and running erasure requests across both systems, shortening the migration and reducing the period where we pay to run two systems in parallel. The cost is low and the lock-in is minimal — it's a thin layer we can replace with our own code or a replication tool later. The trade-off is that deletion is destructive, so we'd introduce it behind a flag with audit logging rather than switching it on. Recommendation: pilot on one low-risk entity next quarter, with a go/no-go based on reconciliation accuracy.
For engineering (short brief): clarkewing/legacy-sync v0.3.0 adds deleteRecord() (PR #2), completing CRUD for the secondary/legacy connection. It's a 0.x package with a single maintainer — pin the exact version and read the source before relying on it. Integration plan: wire create/update first, verify against a reconciliation query, then gate deleteRecord() behind a config flag, require soft deletes on the app side, log every propagated deletion with actor and timestamp, and provide a manual replay/restore path. Do not treat dual-write as a consistency guarantee — assume it can fail and design idempotent consumers accordingly. Estimate: small integration effort, most of the work is in the safety and reconciliation layer around it.
How can I help you explore Laravel packages today?