{"id":15016875,"url":"https://github.com/mgeurts/genealogy","last_synced_at":"2026-04-05T22:10:00.132Z","repository":{"id":217710271,"uuid":"744711036","full_name":"MGeurts/genealogy","owner":"MGeurts","description":"Genealogy is a free and open-source family tree PHP application to record family members and their relationships, build with LARAVEL 12.","archived":false,"fork":false,"pushed_at":"2025-04-12T07:20:21.000Z","size":31444,"stargazers_count":219,"open_issues_count":0,"forks_count":71,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-12T08:28:21.894Z","etag":null,"topics":["ancestry","common-table-expression","family-tree","genealogy","genealogy-application","jetstream","laravel","lineage","livewire","parentage","pedigree","php","tabler-icons","tailwindcss"],"latest_commit_sha":null,"homepage":"https://genealogy.kreaweb.be/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MGeurts.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-17T21:13:35.000Z","updated_at":"2025-04-12T07:20:25.000Z","dependencies_parsed_at":"2024-01-29T15:46:34.691Z","dependency_job_id":"d5669367-3a96-4036-9ce3-dc2b83507403","html_url":"https://github.com/MGeurts/genealogy","commit_stats":null,"previous_names":["mgeurts/genealogy"],"tags_count":143,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MGeurts%2Fgenealogy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MGeurts%2Fgenealogy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MGeurts%2Fgenealogy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MGeurts%2Fgenealogy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MGeurts","download_url":"https://codeload.github.com/MGeurts/genealogy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248557425,"owners_count":21124158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ancestry","common-table-expression","family-tree","genealogy","genealogy-application","jetstream","laravel","lineage","livewire","parentage","pedigree","php","tabler-icons","tailwindcss"],"created_at":"2024-09-24T19:49:30.527Z","updated_at":"2026-03-14T15:01:14.703Z","avatar_url":"https://github.com/MGeurts.png","language":"PHP","funding_links":["https://www.paypal.me/MGeurtsKREAWEB","https://buymeacoffee.com/MGeurts"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://genealogy.kreaweb.be/img/genealogy.svg\" width=\"300px\" alt=\"Genealogy\"/\u003e\u003c/p\u003e\n\n# Genealogy\n\n![](https://img.shields.io/badge/PHP-8.4-informational?style=flat\u0026logo=php\u0026color=4f5b93)\n![](https://img.shields.io/badge/Laravel-12-informational?style=flat\u0026logo=laravel\u0026color=ef3b2d)\n![](https://img.shields.io/badge/Alpine.js-3-informational?style=flat\u0026logo=Alpine.js\u0026color=8BC0D0)\n![](https://img.shields.io/badge/Livewire-4.0-informational?style=flat\u0026logo=Livewire\u0026color=fb70a9)\n![](https://img.shields.io/badge/Filament-5.0-informational?style=flat\u0026logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBkPSJNMCAwaDQ4djQ4SDBWMHoiIGZpbGw9IiNmNGIyNWUiLz48cGF0aCBkPSJNMjggN2wtMSA2LTMuNDM3LjgxM0wyMCAxNWwtMSAzaDZ2NWgtN2wtMyAxOEg4Yy41MTUtNS44NTMgMS40NTQtMTEuMzMgMy0xN0g4di01bDUtMSAuMjUtMy4yNUMxNCAxMSAxNCAxMSAxNS40MzggOC41NjMgMTkuNDI5IDYuMTI4IDIzLjQ0MiA2LjY4NyAyOCA3eiIgZmlsbD0iIzI4MjQxZSIvPjxwYXRoIGQ9Ik0zMCAxOGg0YzIuMjMzIDUuMzM0IDIuMjMzIDUuMzM0IDEuMTI1IDguNUwzNCAyOWMtLjE2OCAzLjIwOS0uMTY4IDMuMjA5IDAgNmwtMiAxIDEgM2gtNXYyaC0yYy44NzUtNy42MjUuODc1LTcuNjI1IDItMTFoMnYtMmgtMnYtMmwyLTF2LTQtM3oiIGZpbGw9IiMyYTIwMTIiLz48cGF0aCBkPSJNMzUuNTYzIDYuODEzQzM4IDcgMzggNyAzOSA4Yy4xODggMi40MzguMTg4IDIuNDM4IDAgNWwtMiAyYy0yLjYyNS0uMzc1LTIuNjI1LS4zNzUtNS0xLS42MjUtMi4zNzUtLjYyNS0yLjM3NS0xLTUgMi0yIDItMiA0LjU2My0yLjE4N3oiIGZpbGw9IiM0MDM5MzEiLz48cGF0aCBkPSJNMzAgMThoNGMyLjA1NSA1LjMxOSAyLjA1NSA1LjMxOSAxLjgxMyA4LjMxM0wzNSAyOGwtMyAxdi0ybC00IDF2LTJsMi0xdi00LTN6IiBmaWxsPSIjMzEyODFlIi8+PHBhdGggZD0iTTI5IDI3aDN2MmgydjJoLTJ2MmwtNC0xdi0yaDJsLTEtM3oiIGZpbGw9IiMxNTEzMTAiLz48cGF0aCBkPSJNMzAgMThoNHYzaC0ydjJsLTMgMSAxLTZ6IiBmaWxsPSIjNjA0YjMyIi8+PC9zdmc+\u0026\u0026color=fdae4b\u0026link=https://filamentphp.com)\n\n![Latest Stable Version](https://img.shields.io/github/release/MGeurts/genealogy)\n\n[![Donate via PayPal](https://img.shields.io/badge/Donate-PayPal-blue.svg?logo=paypal)](https://www.paypal.me/MGeurtsKREAWEB)\n[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-orange.svg?logo=buy-me-a-coffee\u0026logoColor=white)](https://buymeacoffee.com/MGeurts)\n\n## About this project\n\n\u003cb\u003eGenealogy\u003c/b\u003e is a free and open-source family tree PHP application to record family members and their relationships, build with Laravel 12.\n\n\u003cimg src=\"https://genealogy.kreaweb.be/img/help/genealogy-000.webp\" class=\"rounded\" alt=\"Genealogy-000\"/\u003e\n\u003cimg src=\"https://genealogy.kreaweb.be/img/help/genealogy-020.webp\" class=\"rounded\" alt=\"Genealogy-020\"/\u003e\n\nThis \u003cb\u003eTallStack\u003c/b\u003e application is build using :\n\n\u003cul\u003e\n    \u003cli\u003e\u003ca href=\"https://laravel.com/\" target=\"_blank\"\u003eLaravel\u003c/a\u003e 12\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://jetstream.laravel.com/\" target=\"_blank\"\u003eLaravel Jetstream\u003c/a\u003e 5 (featuring \u003ca href=\"https://jetstream.laravel.com/features/teams.html\" target=\"_blank\"\u003eTeams\u003c/a\u003e)\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://livewire.laravel.com/\" target=\"_blank\"\u003eLivewire\u003c/a\u003e 4\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://alpinejs.dev/\" target=\"_blank\"\u003eAlpine.js\u003c/a\u003e 3\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://tailwindcss.com/\" target=\"_blank\"\u003eTailwind CSS\u003c/a\u003e 4\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://tallstackui.com//\" target=\"_blank\"\u003eTallStackUI\u003c/a\u003e 3 (featuring \u003ca href=\"https://tabler.io/icons\" target=\"_blank\"\u003eTabler Icons\u003c/a\u003e)\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"https://filamentphp.com//\" target=\"_blank\"\u003eLaravel Filament\u003c/a\u003e 5 (only \u003ca href=\"https://filamentphp.com/docs/5.x/tables/overview\" target=\"_blank\"\u003eTable Builder\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cimg src=\"https://genealogy.kreaweb.be/img/logo/tallstack.webp\" class=\"rounded\" alt=\"tall-stack\"/\u003e\n\n### Logic concept\n\n1. A person can have 1 biological father (1 person, based on \u003cb\u003efather_id\u003c/b\u003e)\n2. A person can have 1 biological mother (1 person, based on \u003cb\u003emother_id\u003c/b\u003e)\n3. A person can have 1 set of parents, biological or not (1 couple of 2 people, based on \u003cb\u003eparents_id\u003c/b\u003e)\n\n4. A person can have 0 to many biological children (n people, based on father_id/mother_id)\n5. A couple can have 0 to many (plus) children (based on \u003cb\u003eparents_id as a couple\u003c/b\u003e or \u003cb\u003efather_id/mother_id individually\u003c/b\u003e)\n\n6. A person can have 0 to many partners (n people), being part of 0 to many couples (opposite or same biological sex)\n7. A person can be part of a couple with the same partner multiple times (remarriage or reunite)\n\n8. A person can have 0 to many siblings (n people) (based on \u003cb\u003eparents_id as a couple\u003c/b\u003e or \u003cb\u003efather_id/mother_id individually\u003c/b\u003e)\n\n9. A couple can be married or not, still together or separated in the meantime\n\n### Requirements\n\n\u003cul\u003e\n    \u003cli\u003e\n        The application must be served in HTTPS mode, not in HTTP.\u003cbr/\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n        At least \u003ca href=\"https://www.php.net/\" target=\"_blank\"\u003ePHP\u003c/a\u003e 8.4, supporting Laravel 12.\u003cbr/\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n        At least \u003ca href=\"https://www.mysql.com/\" target=\"_blank\"\u003eMySQL\u003c/a\u003e 8.0.1 or \u003ca href=\"https://mariadb.com/\" target=\"_blank\"\u003eMariaDB\u003c/a\u003e 10.2.2 or an equivalent database, supporting \u003ca href=\"https://dev.mysql.com/doc/refman/8.0/en/with.html\" target=\"_blank\"\u003eRecursive Common Table Expressions\u003c/a\u003e.\n    \u003c/li\u003e\n\u003c/ul\u003e\n\n### License\n\nThis project is open-sourced software licensed under the [MIT license](LICENSE).\n\n## Demo\n\n\u003ca href=\"https://genealogy.kreaweb.be/\" target=\"_blank\"\u003ehttps://genealogy.kreaweb.be/\u003c/a\u003e\n\n\u003cp\u003eThis demo has 2 family trees implemented, \u003cb\u003eBRITISH ROYALS\u003c/b\u003e and \u003cb\u003eKENNEDY\u003c/b\u003e.\u003c/p\u003e\n\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eE-mail\u003c/th\u003e\n            \u003cth\u003ePassword\u003c/th\u003e\n            \u003cth\u003ePurpose\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cb\u003eadministrator@genealogy.test\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003epassword\u003c/td\u003e\n            \u003ctd\u003eto access teams \u003cb\u003eBRITISH ROYALS\u003c/b\u003e and \u003cb\u003eKENNEDY\u003c/b\u003e as team \u003cb\u003eowner\u003c/b\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cb\u003emanager@genealogy.test\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003epassword\u003c/td\u003e\n            \u003ctd\u003eto access team \u003cb\u003eBRITISH ROYALS\u003c/b\u003e as \u003cb\u003emanager\u003c/b\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cb\u003eeditor@genealogy.test\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003epassword\u003c/td\u003e\n            \u003ctd\u003eto access team \u003cb\u003eKENNEDY\u003c/b\u003e as \u003cb\u003eeditor\u003c/b\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cb\u003emember_1@genealogy.test\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003epassword\u003c/td\u003e\n            \u003ctd\u003eto access team \u003cb\u003eBRITISH ROYALS\u003c/b\u003e as normal \u003cb\u003emember\u003c/b\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cb\u003emember_4@genealogy.test\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003epassword\u003c/td\u003e\n            \u003ctd\u003eto access team \u003cb\u003eKENNEDY\u003c/b\u003e as normal \u003cb\u003emember\u003c/b\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cb\u003edeveloper@genealogy.test\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003epassword\u003c/td\u003e\n            \u003ctd\u003eto access options reserved for the \u003cb\u003edeveloper\u003c/b\u003e, like the \u003cb\u003euser management\u003c/b\u003e and access to \u003cb\u003eall persons\u003c/b\u003e in \u003cb\u003eall teams\u003c/b\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Roles \u0026 permissions\n\n### Teams \u0026 Users\n\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth style=\"text-align:left\"\u003eRole\u003c/th\u003e\n            \u003cth style=\"text-align:left\"\u003eModel\u003c/th\u003e\n            \u003cth style=\"text-align:left\"\u003ePermissions\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"3\"\u003e\u003cb\u003eTeam owner\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003epersonal team\u003c/td\u003e\n            \u003ctd\u003eupdate, invite members\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003enon-personal team\u003c/td\u003e\n            \u003ctd\u003eread, update, delete, invite members, transfer ownership\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003enew team\u003c/td\u003e\n            \u003ctd\u003ecreate\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"3\"\u003e\u003cb\u003eTeam member\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003epersonal team\u003c/td\u003e\n            \u003ctd\u003eupdate, invite members\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003enon-personal team\u003c/td\u003e\n            \u003ctd\u003eaccept membership, read, leave\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003enew team\u003c/td\u003e\n            \u003ctd\u003ecreate\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Persons \u0026 Couples\n\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth style=\"text-align:left\"\u003eRole\u003c/th\u003e\n            \u003cth style=\"text-align:left\"\u003eModel\u003c/th\u003e\n            \u003cth style=\"text-align:left\"\u003ePermissions\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"2\"\u003e\u003cb\u003eAdministrator\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003eperson\u003c/td\u003e\n            \u003ctd\u003ecreate, read, update, delete\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003ecouple\u003c/td\u003e\n            \u003ctd\u003ecreate, read, update, delete\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"2\"\u003e\u003cb\u003eManager\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003eperson\u003c/td\u003e\n            \u003ctd\u003ecreate, read, update, delete\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003ecouple\u003c/td\u003e\n            \u003ctd\u003ecreate, read, update, delete\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"2\"\u003e\u003cb\u003eEditor\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003eperson\u003c/td\u003e\n            \u003ctd\u003ecreate, read, update\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003ecouple\u003c/td\u003e\n            \u003ctd\u003ecreate, read, update\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=\"2\"\u003e\u003cb\u003eMember\u003c/b\u003e\u003c/td\u003e\n            \u003ctd\u003eperson\u003c/td\u003e\n            \u003ctd\u003eread\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003ecouple\u003c/td\u003e\n            \u003ctd\u003eread\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Features\n\n\u003cul\u003e\n    \u003cli\u003eLight/Dark theme\u003c/li\u003e\n    \u003cli\u003eFully responsive\u003c/li\u003e\n    \u003cli\u003eMulti-language, language setting saved in authenticated users profile\u003c/li\u003e\n    \u003cli\u003eMulti-timezone, timezone setting saved in authenticated users profile\u003c/li\u003e\n    \u003cli\u003eMulti-tenancy by Laravel Jetstream Teams, including Transfer Team Ownership\u003c/li\u003e\n    \u003cli\u003eSecurity through Laravel Jetstream Teams Roles \u0026 Permissions, 2FA \u0026 API can be enabled\u003c/li\u003e\n    \u003cli\u003eOffcanvas menu\u003c/li\u003e\n    \u003cli\u003eMultiple image upload with possibility of watermarking, photo carousel with navigation\u003c/li\u003e\n    \u003cli\u003eMultiple documents upload\u003c/li\u003e\n    \u003cli\u003eEvent management \u0026 timeline overview\u003c/li\u003e\n\u003c/ul\u003e\n\n### Special features\n\n\u003cp\u003eThis application has a built-in \u003cb\u003eBackup Manager\u003c/b\u003e :\n    \u003cul\u003e\n        \u003cli\u003eBackups can be initiated and managed manually\u003c/li\u003e\n        \u003cli\u003eBackups can be scheludeld by issuing a cron job on your development or production server\u003c/li\u003e\n        \u003cli\u003eAn e-mail will be send after each backup\u003c/li\u003e\n   \u003c/ul\u003e\n\u003c/p\u003e\n\n\u003cp\u003eThis application has a built-in \u003cb\u003eLog Viewer\u003c/b\u003e, on demand showing :\n    \u003cul\u003e\n        \u003cli\u003eINFO    : All scheduled backups\u003c/li\u003e\n        \u003cli\u003eDEBUG   : All executed requests (off by default)\u003c/li\u003e\n        \u003cli\u003eDEBUG   : All executed database queries (off by default)\u003c/li\u003e\n        \u003cli\u003eWARNING : All detected slow (\u003e 500 ms) queries\u003c/li\u003e\n        \u003cli\u003eWARNING : All detected N+1 queries\u003c/li\u003e\n        \u003cli\u003eERROR   : All detected errors\u003c/li\u003e\n   \u003c/ul\u003e\n   \u003cp\u003eLogging can be enabled or disabled by the developer in Offcanvas Menu Settings.\u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp\u003eThis application has a built-in \u003cb\u003eUser management \u0026 logging\u003c/b\u003e, available to the developer :\n    \u003cul\u003e\n        \u003cli\u003eUser statistics by country of origin\u003c/li\u003e\n        \u003cli\u003eUser statistics by year, month, week or day\u003c/li\u003e\n   \u003c/ul\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n    The following activities are logged in the database:\n    \u003cul\u003e\n        \u003cli\u003ecreate, update, delete on \u003cb\u003epersons (including Metadata)\u003c/b\u003e and \u003cb\u003ecouples\u003c/b\u003e\u003c/li\u003e\n        \u003cli\u003ecreate, update, delete on \u003cb\u003eteams\u003c/b\u003e\u003c/li\u003e\n        \u003cli\u003ecreate, update, delete, invite, remove on \u003cb\u003eusers (Team members)\u003c/b\u003e\u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n    Activity loggings are available in Offcanvas Menu :\n    \u003cul\u003e\n        \u003cli\u003ePersons (with Couples) in \u003cb\u003ePeople logbook\u003c/b\u003e\u003c/li\u003e\n        \u003cli\u003eTeams (with Users) in \u003cb\u003eTeam logbook\u003c/b\u003e\u003c/li\u003e\n    \u003c/ul\u003e\n\u003c/p\u003e\n\n\u003cp\u003eThis application has a built-in \u003cb\u003ePassword Generator\u003c/b\u003e to help users build secure passwords.\u003c/p\u003e\n\n### GEDCOM Import and Export\n\nAt present, \u003ca href=\"https://gedcom.io/\" target=\"_blank\"\u003eGEDCOM\u003c/a\u003e Import and Export functionality is under active development.\u003cbr/\u003e\nWhile still incomplete, initial Import and Export capabilities are already available.\u003cbr/\u003e\nThe implementation of full GEDCOM (v7.x.x) Import and Export support represents a significantly larger effort than the development of the application itself.\u003cbr/\u003e\nTo date, version 7 has not been fully implemented in any open-source php based project.\u003cbr/\u003e\n**It is strongly recommended to create a backup of your database before testing any Import or Export features on production data.**\n\n## Languages\n\n\u003cul\u003e\n    \u003cli\u003eGerman (DE)\u003c/li\u003e\n    \u003cli\u003eEnglish (EN)\u003c/li\u003e\n    \u003cli\u003eSpanish (ES)\u003c/li\u003e\n    \u003cli\u003eFrench (FR)\u003c/li\u003e\n    \u003cli\u003eHindi (HI)\u003c/li\u003e\n    \u003cli\u003eIndonesian (ID)\u003c/li\u003e\n    \u003cli\u003eDutch (NL)\u003c/li\u003e\n    \u003cli\u003ePortuguese (PT)\u003c/li\u003e\n    \u003cli\u003eTurkish (TR)\u003c/li\u003e\n    \u003cli\u003eVietnamese (VI)\u003c/li\u003e\n    \u003cli\u003eSimplified Chinese (ZH_CN)\u003c/li\u003e\n\u003c/ul\u003e\n\nTranslations can be added by submitting a \u003cb\u003ePull Request\u003c/b\u003e to the project.\u003cbr /\u003e\nTranslation integrity can be checked by issuing the command:\n\n```bash\nphp artisan translations:check --excludedDirectories=vendor\n```\n\nInstructions on how to add a language can be found in \u003ca href=\"https://github.com/MGeurts/genealogy/blob/main/README-LANGUAGES.md\" target=\"_blank\"\u003eREADME-LANGUAGES.md\u003cbr/\u003e\n\nThe application does **not support Right To Left (RTL) languages** like Arabic, Hebrew, Persian, Urdu, Pashto, Kurdish (Sorani), Uyghur, Syriac, Thaana, North Korean.\u003c/a\u003e\n\n## Uploads\n\nInstructions on how to configure file and image uploads can be found in \u003ca href=\"https://github.com/MGeurts/genealogy/blob/main/README-UPLOADS.md\" target=\"_blank\"\u003eREADME-UPLOADS.md\u003c/a\u003e.\n\n## Techniques\n\nBoth the \u003cb\u003eancestors\u003c/b\u003e and \u003cb\u003edescendants\u003c/b\u003e family trees are build using \u003ca href=\"https://dev.mysql.com/blog-archive/mysql-8-0-labs-recursive-common-table-expressions-in-mysql-ctes\" target=\"_blank\"\u003eRecursive Common Table Expressions\u003c/a\u003e (Recursive CTE). This prevents the N+1 query problem generating the recursive tree family elements and dramatically improves performance.\n\n## Installation\n\ncreate a new project folder, cd into the folder\n\n```bash\ngit clone https://github.com/MGeurts/genealogy.git .\n```\n\n```bash\ncp .env.example .env\n```\n\nmake the needed changes regarding name, url, database connection \u0026 mail server\n\n```bash\ncomposer install\n```\n\n```bash\nphp artisan key:generate\n```\n\n```bash\nphp artisan storage:link\n```\n\n```bash\nphp artisan migrate:fresh --seed\n```\n\n```bash\nnpm install \u0026\u0026 npm run build\n```\n\n```bash\nphp artisan serve\n```\n\nor\n\n```bash\nnpm run dev\n```\n\n## Updating\n\nUpdate instructions can be found in \u003ca href=\"https://github.com/MGeurts/genealogy/blob/main/README-UPDATE.md\" target=\"_blank\"\u003eREADME-UPDATE.md\u003c/a\u003e.\n\n## Reporting security issues\n\nInstructions on how to report security issues can be found in \u003ca href=\"https://github.com/MGeurts/genealogy/blob/main/SECURITY.md\" target=\"_blank\"\u003eSECURITY.md\u003c/a\u003e.\n\n## Testing\n\nTesting is done using \u003ca href=\"https://pestphp.com/\"\u003ePest\u003c/a\u003e.\u003cbr/\u003e\n\nCommand:\n\n```bash\nphp artisan test\n```\n\nor\n\n```bash\n./vendor/bin/pest\n```\n\n\u003cb\u003eProduction (or local development) data\u003c/b\u003e should be stored in a MySQL or MariaDB database configured in `.env`.\u003cbr /\u003e\u003cbr /\u003e\n\u003cb\u003eTesting data\u003c/b\u003e should be stored in a separate MySQL or MariaDB database configured in `.env.testing` to avoid interfering with the production or development data.\u003cbr /\u003e\u003cbr /\u003e\n\nCommand to create the testing MySQL database:\n\n```bash\nphp artisan migrate --env=testing\n```\n\n## Contributing\n\nFeel free to submit \u003cb\u003eIssues\u003c/b\u003e or \u003cb\u003ePull Requests\u003c/b\u003e, for bugs, suggestions or feature requests.\n\n## Docker Support\n\nThe application can be run in a Dockerized environment. Instructions can be found in \u003ca href=\"https://github.com/MGeurts/genealogy/blob/main/README-DOCKER.md\" target=\"_blank\"\u003eREADME-DOCKER.md\u003c/a\u003e.\n\n## Documentation\n\nThe documentation is included in the applications help.\nVisit the \u003ca href=\"https://genealogy.kreaweb.be/help\" target=\"_blank\"\u003edemo project\u003c/a\u003e to read the documentation.\n\n## 💖 Support This Project\n\nMaintaining this project takes time and effort. If you find it useful, consider supporting me:\n\n- [![Star on GitHub](https://img.shields.io/github/stars/MGeurts/genealogy?style=social)](https://github.com/MGeurts/genealogy)\n- [![Donate via PayPal](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://www.paypal.me/MGeurtsKREAWEB)\n- [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-orange?logo=buy-me-a-coffee)](https://buymeacoffee.com/MGeurts)\n\n\u003e Your support helps me improve and maintain [Genealogy](https://github.com/MGeurts/genealogy) and other open-source tools. Every bit is appreciated. Thank you! 🙏\n\n## Impressum\n\n### Design \u0026 Development (2024)\n\nThis Laravel application is designed and developed by \u003ca href=\"https://www.kreaweb.be\" target=\"_blank\"\u003ekreaweb.be\u003c/a\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgeurts%2Fgenealogy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmgeurts%2Fgenealogy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgeurts%2Fgenealogy/lists"}