modularsoftware/genealogy
A Laravel package for genealogy applications, with Eloquent models, migrations, and relationships for people, families, events, places, and sources. Build family trees, ancestry records, and research workflows with a clean, extensible API designed to fit into existing Laravel projects.
Architecture fit. Despite being distributed as a Composer package, this is a Laravel 10 application codebase — a runnable family-tree/genealogy site — not a composable library. There is no documented service provider, facade, or published config to composer require into an existing product. That reframes "integration" as a fork-or-extract decision rather than a dependency adoption. It fits if we are building a genealogy product and want a head start on the domain layer (persons, families, events, sources, media, GEDCOM import/export). It does not fit if we simply need genealogy primitives inside an unrelated Laravel app.
Integration feasibility. MIT licensing removes legal friction and permits commercial forks and closed-source derivatives. The practical blockers are lifecycle, not legality: the repository is archived and the last release is July 2023. Laravel 10 left security support in early 2025, and PHP 8.2's security window closes in December 2026, so a fork starts already behind on patch cadence. A 194-star project also implies a very small contributor base, meaning any bug we hit is ours to fix.
Technical risk.
composer.lock will accumulate transitive CVEs; Symfony and Laravel components age quickly.Key questions to resolve before committing.
composer.json, and what blocks a Laravel 11/12 upgrade?Stack fit. Strong on paper: Laravel 10 + PHP 8.2 + MySQL is a mainstream, well-staffed stack. If our platform is Laravel-based, the idioms, Eloquent models, and Blade views are immediately legible to our engineers. If we are on Symfony, Node, or a Django stack, the value collapses to "reference implementation" only.
Migration path. Three options, in descending order of preference:
| Option | Description | When to choose |
|---|---|---|
| Reference / spec source | Read the schema and GEDCOM handling; build our own domain layer | Default. Lowest lifecycle risk, preserves architectural freedom |
| Domain extraction | Fork, lift models + GEDCOM import/export services into our app, discard the UI | We need speed on the hardest 20% (parsing, relationship modeling) |
| Full fork | Adopt the application wholesale, upgrade Laravel ourselves | Only if we are shipping a standalone genealogy site and the UI is a fit |
Compatibility. Pin to the archived commit for evaluation, then immediately branch for a Laravel 11/12 upgrade spike. Test the upgrade before committing to a fork — if third-party packages in the lockfile block the move, the extraction path becomes the only viable one. Verify MySQL vs. PostgreSQL portability early if our standard is Postgres.
Sequencing.
Maintenance. We become the maintainer. Budget ongoing effort for framework majors (roughly annual), PHP minors, dependency CVE patching, and GEDCOM edge-case bugs. Treat this as ~10–20% of one engineer's capacity in steady state for a fork, near zero for the reference path.
Support. No vendor, no SLA, no active maintainer. Support is internal only. Retain the original authors' MIT attribution and consider whether a public fork creates an expectation of responsiveness we are unwilling to meet.
Scaling. Genealogy workloads are read-heavy with deep recursive traversals and bursty bulk imports. Expect to need: queue-backed import jobs, materialized ancestor/descendant paths or closure tables, pagination on large trees, and object storage for media. Media libraries grow monotonically — plan lifecycle and dedup policy. Profile on a realistic tree size before sizing infrastructure; do not extrapolate from the demo dataset.
Failure modes to instrument.
Ramp-up. A mid-level Laravel engineer is productive on the codebase in roughly one sprint; the framework is the easy part. The real ramp is GEDCOM semantics — INDI/FAMC/FAMS linkage, source citations, date/place normalization — which typically requires a domain expert (genealogist or archivist) on call for the first month. Plan for one engineer at 50% for four weeks plus intermittent SME time. Do not staff this as a pure backend task; the correctness risk is in the domain, not the PHP.
How can I help you explore Laravel packages today?