liberu-genealogy/laravel-gedcom
Laravel GEDCOM provides a Laravel-friendly toolkit for working with GEDCOM genealogy files, including parsing, importing, exporting, and managing family tree records such as individuals, families, events, and sources through an Eloquent-based workflow.
Architecture fit
liberu-genealogy/laravel-gedcom is a domain-specific package (GEDCOM import/export) that slots into the Laravel ecosystem as a service-provider-registered library. It is the kind of package that is peripheral to core product architecture but load-bearing for any genealogy ingestion or export workflow.GedcomGenerator now resolves Source through the container rather than instantiating it directly). That is architecturally correct for a Laravel package and is a prerequisite for consumer-side customization via bindings.Integration feasibility
Source container-resolution change is the only item with consumer-visible semantics. It is likely additive (enabling a custom Source binding), but any consumer that subclasses GedcomGenerator, constructs it manually, or asserts on collaborator instantiation in tests should verify behavior.Technical risk
resolve()/app()->make() changes object identity and lifetime semantics. If Source is bound as a singleton anywhere in a consumer app, generator output could become stateful across calls. This is the classic containerization footgun and is worth a targeted test.Source via the container will see different behavior than consumers mocking it via constructor injection. Existing unit tests around generation may need adjustment.Key questions
GedcomGenerator's constructor, if any, and is it backward compatible for subclasses?Source now bound in the package's service provider? As a singleton or transient? Does that introduce cross-request or cross-call state?Stack fit
Migration path
composer update. No data migration, no config republish anticipated. Pin to ^8.6 and let the minor float only within the 8.x line.GedcomGenerator end-to-end twice in the same process, asserting identical output — this catches singleton/state regressions from the container change.Compatibility
composer.json, not inferred.Sequencing
app()->bound(Source::class), and inspect lifetime).Maintenance
Source implementation without forking.Support
Scaling
Source is resolved as a singleton, long-running queue workers (Horizon, Octane) could accumulate state across jobs. This is the single most important thing to test under your actual worker configuration.Failure modes
memory_limit and chunked processing.Ramp-up
INDI/FAM/SOUR relationships) is the actual ramp-up cost, not the package API. Budget for one person to become the internal subject-matter owner; do not treat this as a generalist drop-in.How can I help you explore Laravel packages today?