modularsoftware/laravel-gedcom
Laravel package for reading and parsing GEDCOM genealogy files. It loads GEDCOM data into an object-oriented model of individuals, families, events, and sources, making it easy to work with family-history records inside your Laravel application.
Architecture fit: modularsoftware/laravel-gedcom is best treated as an infrastructure adapter for GEDCOM 5.5.1 ingestion and export, not as the application’s canonical genealogy domain model. It fits a Laravel application that needs to import/export family-history data alongside its own entities, validation rules, privacy controls, and provenance tracking. The package should sit behind an internal interface so the app is not coupled directly to the package’s parser/writer API.
Integration feasibility: As a Laravel package, it is likely installable via Composer with service-provider auto-discovery and a small configuration surface. Feasibility is moderate: the main work is not installation but mapping GEDCOM structures into the product’s schema, validating relationship integrity, handling encodings and malformed files, and building a reliable import/export workflow. The package description indicates both directions are supported, which is useful for migration and interoperability use cases.
Technical risk: The largest risks are dependency maturity and data correctness. With 22 stars and a last release in January 2023, the package has a small community and limited evidence of ongoing maintenance. GEDCOM files vary by exporter and dialect; malformed tags, non-UTF-8 encodings, custom tags, media links, source citations, and date/place conventions can break naive imports. Export must be validated against GEDCOM 5.5.1 consumers, not just the package’s own parser. Privacy is also a product risk: living-person data, adoption/relationship semantics, and source citations may require redaction or access controls. Security risk is low if the package only parses files, but file uploads and parser resource consumption still need controls.
Key questions:
Stack fit: Good fit for a Laravel monolith or modular Laravel service using queues, object storage, and MySQL/PostgreSQL. Keep the package inside an import/export bounded context with a clear adapter: GedcomImporter, GedcomExporter, and domain-specific mapping services. Use queued jobs for parsing and persistence, store original files immutably, and write normalized records through application services rather than letting the package define the domain model.
Migration path: Start with a time-boxed spike using representative GEDCOM files from target users or legacy systems. Install the package on a branch, verify Composer constraints, and build a fixture suite covering UTF-8/ANSEL, large files, malformed records, custom tags, and relationship-heavy datasets. Then implement staging tables or DTOs, map to production entities, validate referential integrity, and only after that enable a feature-flagged pilot import. For export, generate files from the application’s canonical model and validate them against at least one external GEDCOM consumer.
Compatibility: Treat Laravel/PHP compatibility as an explicit gate. Run composer why-not against the target framework version, check PHP extension requirements, and execute the fixture suite in CI on the exact runtime matrix. If the package lags the current Laravel release, either pin the framework version temporarily or wrap/fork the parser. Avoid mixing package internals with application code so a future replacement is feasible.
Sequencing:
Maintenance: Assign an internal owner. Pin the package version, track upstream releases, and maintain a fork/patched-copy contingency. Because the community is small, assume the team will own bug fixes for edge-case GEDCOM dialects. Keep a regression corpus of real files and export snapshots.
Support: Expect community-only support unless a commercial arrangement exists. Document the adapter boundary, supported GEDCOM features, known limitations, and escalation path. Product support should be able to distinguish “file cannot be parsed” from “product mapping rejected the record.”
Scaling: GEDCOM imports can be CPU- and memory-intensive. Use queue workers with timeouts and memory limits, enforce upload size limits, process files asynchronously, batch database writes, and make imports idempotent. For large trees, consider streaming or chunked parsing if the package supports it; otherwise cap file size and provide clear failure messages. Export should also run asynchronously for large datasets.
Failure modes: Partial imports, duplicate records on retry, encoding corruption, unresolved relationship references, invalid dates/places, unsupported custom tags, memory exhaustion, and exports rejected by third-party tools. Mitigate with staging tables, transaction boundaries, checksums/idempotency keys, validation reports, dry-run imports, and export conformance tests.
Ramp-up: A Laravel/PHP developer can integrate the package in days, but reliable GEDCOM handling requires domain ramp-up. Budget one to two sprints for a production-grade adapter, mapping, fixtures, and validation. Provide GEDCOM training, sample files, runbooks, and monitoring dashboards for import success rate, parse failures, record counts, and export validation results.
How can I help you explore Laravel packages today?