Genealogy

# Genealogy ![](https://img.shields.io/badge/PHP-8.4-informational?style=flat&logo=php&color=4f5b93) ![](https://img.shields.io/badge/Laravel-13-informational?style=flat&logo=laravel&color=ef3b2d) ![](https://img.shields.io/badge/Alpine.js-3-informational?style=flat&logo=Alpine.js&color=8BC0D0) ![](https://img.shields.io/badge/Livewire-4.0-informational?style=flat&logo=Livewire&color=fb70a9) ![](https://img.shields.io/badge/Filament-5.0-informational?style=flat&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgeG1sbnM6dj0iaHR0cHM6Ly92ZWN0YS5pby9uYW5vIj48cGF0aCBkPSJNMCAwaDQ4djQ4SDBWMHoiIGZpbGw9IiNmNGIyNWUiLz48cGF0aCBkPSJNMjggN2wtMSA2LTMuNDM3LjgxM0wyMCAxNWwtMSAzaDZ2NWgtN2wtMyAxOEg4Yy41MTUtNS44NTMgMS40NTQtMTEuMzMgMy0xN0g4di01bDUtMSAuMjUtMy4yNUMxNCAxMSAxNCAxMSAxNS40MzggOC41NjMgMTkuNDI5IDYuMTI4IDIzLjQ0MiA2LjY4NyAyOCA3eiIgZmlsbD0iIzI4MjQxZSIvPjxwYXRoIGQ9Ik0zMCAxOGg0YzIuMjMzIDUuMzM0IDIuMjMzIDUuMzM0IDEuMTI1IDguNUwzNCAyOWMtLjE2OCAzLjIwOS0uMTY4IDMuMjA5IDAgNmwtMiAxIDEgM2gtNXYyaC0yYy44NzUtNy42MjUuODc1LTcuNjI1IDItMTFoMnYtMmgtMnYtMmwyLTF2LTQtM3oiIGZpbGw9IiMyYTIwMTIiLz48cGF0aCBkPSJNMzUuNTYzIDYuODEzQzM4IDcgMzggNyAzOSA4Yy4xODggMi40MzguMTg4IDIuNDM4IDAgNWwtMiAyYy0yLjYyNS0uMzc1LTIuNjI1LS4zNzUtNS0xLS42MjUtMi4zNzUtLjYyNS0yLjM3NS0xLTUgMi0yIDItMiA0LjU2My0yLjE4N3oiIGZpbGw9IiM0MDM5MzEiLz48cGF0aCBkPSJNMzAgMThoNGMyLjA1NSA1LjMxOSAyLjA1NSA1LjMxOSAxLjgxMyA4LjMxM0wzNSAyOGwtMyAxdi0ybC00IDF2LTJsMi0xdi00LTN6IiBmaWxsPSIjMzEyODFlIi8+PHBhdGggZD0iTTI5IDI3aDN2MmgydjJoLTJ2MmwtNC0xdi0yaDJsLTEtM3oiIGZpbGw9IiMxNTEzMTAiLz48cGF0aCBkPSJNMzAgMThoNHYzaC0ydjJsLTMgMSAxLTZ6IiBmaWxsPSIjNjA0YjMyIi8+PC9zdmc+&&color=fdae4b&link=https://filamentphp.com) ![Latest Stable Version](https://img.shields.io/github/release/MGeurts/genealogy) [![Donate via PayPal](https://img.shields.io/badge/Donate-PayPal-blue.svg?logo=paypal)](https://www.paypal.me/MGeurtsKREAWEB) [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-orange.svg?logo=buy-me-a-coffee&logoColor=white)](https://buymeacoffee.com/MGeurts) ## About this project Genealogy is a free and open-source family tree PHP application to record family members and their relationships, build with 13. Genealogy-000 Genealogy-020 This TallStack application is build using : tall-stack ### Logic concept 1. A person can have 1 biological father (1 person, based on father_id) 2. A person can have 1 biological mother (1 person, based on mother_id) 3. A person can have 1 set of parents, biological or not (1 couple of 2 people, based on parents_id) 4. A person can have 0 to many biological children (n people, based on father_id/mother_id) 5. A couple can have 0 to many (plus) children (based on parents_id as a couple or father_id/mother_id individually) 6. A person can have 0 to many partners (n people), being part of 0 to many couples (opposite or same biological sex) 7. A person can be part of a couple with the same partner multiple times (remarriage or reunite) 8. A person can have 0 to many siblings (n people) (based on parents_id as a couple or father_id/mother_id individually) 9. A couple can be married or not, still together or separated in the meantime ### Requirements ### License This project is open-sourced software licensed under the [MIT license](LICENSE). ## Demo https://genealogy.kreaweb.be/

This demo has 2 family trees implemented, BRITISH ROYALS and KENNEDY.

E-mail Password Purpose
administrator@genealogy.test password to access teams BRITISH ROYALS and KENNEDY as team owner
manager@genealogy.test password to access team BRITISH ROYALS as manager
editor@genealogy.test password to access team KENNEDY as editor
member_1@genealogy.test password to access team BRITISH ROYALS as normal member
member_4@genealogy.test password to access team KENNEDY as normal member
developer@genealogy.test password to access options reserved for the developer, like the user management and access to all persons in all teams
## Roles & permissions ### Teams & Users
Role Model Permissions
Team owner personal team update, invite members
non-personal team read, update, delete, invite members, transfer ownership
new team create
Team member personal team update, invite members
non-personal team accept membership, read, leave
new team create
### Persons & Couples
Role Model Permissions
Administrator person create, read, update, delete
couple create, read, update, delete
Manager person create, read, update, delete
couple create, read, update, delete
Editor person create, read, update
couple create, read, update
Member person read
couple read
## Features ### Special features

This application has a built-in Backup Manager :

This application has a built-in Log Viewer, on demand showing :

Logging can be enabled or disabled by the developer in Offcanvas Menu Settings.

This application has a built-in User management & logging, available to the developer :

The following activities are logged in the database:

Activity loggings are available in Offcanvas Menu :

This application has a built-in Password Generator to help users build secure passwords.

### GEDCOM Import and Export At present, GEDCOM Import and Export functionality is under active development.
While still incomplete, initial Import and Export capabilities are already available.
The implementation of full GEDCOM (v7.x.x) Import and Export support represents a significantly larger effort than the development of the application itself.
To date, version 7 has not been fully implemented in any open-source php based project.
**It is strongly recommended to create a backup of your database before testing any Import or Export features on production data.** ## Languages Translations can be added by submitting a Pull Request to the project.
Translation integrity can be checked by issuing the command: ```bash php artisan translations:check --excludedDirectories=vendor ``` Instructions on how to add a language can be found in README-LANGUAGES.md
The application does **not support Right To Left (RTL) languages** like Arabic, Hebrew, Persian, Urdu, Pashto, Kurdish (Sorani), Uyghur, Syriac, Thaana, North Korean.
## Uploads Instructions on how to configure file and image uploads can be found in README-UPLOADS.md. ## Techniques Both the ancestors and descendants family trees are build using Recursive Common Table Expressions (Recursive CTE). This prevents the N+1 query problem generating the recursive tree family elements and dramatically improves performance. ## Installation create a new project folder, cd into the folder ```bash git clone https://github.com/MGeurts/genealogy.git . ``` ```bash cp .env.example .env ``` make the needed changes regarding name, url, database connection & mail server ```bash composer install ``` ```bash php artisan key:generate ``` ```bash php artisan storage:link ``` ```bash php artisan migrate:fresh --seed ``` ```bash npm install && npm run build ``` ```bash php artisan serve ``` or ```bash npm run dev ``` ## Updating Update instructions can be found in README-UPDATE.md. ## Reporting security issues Instructions on how to report security issues can be found in SECURITY.md. ## Testing Testing is done using Pest.
Command: ```bash php artisan test ``` or ```bash ./vendor/bin/pest ``` Production (or local development) data should be stored in a MySQL or MariaDB database configured in `.env`.

Testing data should be stored in a separate MySQL or MariaDB database configured in `.env.testing` to avoid interfering with the production or development data.

Command to create the testing MySQL database: ```bash php artisan migrate --env=testing ``` ## Contributing Feel free to submit Issues or Pull Requests, for bugs, suggestions or feature requests. ## Docker Support The application can be run in a Dockerized environment. Instructions can be found in README-DOCKER.md. ## Documentation The documentation is included in the applications help. Visit the demo project to read the documentation. ## 💖 Support This Project Maintaining this project takes time and effort. If you find it useful, consider supporting me: - [![Star on GitHub](https://img.shields.io/github/stars/MGeurts/genealogy?style=social)](https://github.com/MGeurts/genealogy) - [![Donate via PayPal](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://www.paypal.me/MGeurtsKREAWEB) - [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-orange?logo=buy-me-a-coffee)](https://buymeacoffee.com/MGeurts) > Your support helps me improve and maintain [Genealogy](https://github.com/MGeurts/genealogy) and other open-source tools. Every bit is appreciated. Thank you! 🙏 ## Impressum ### Design & Development (2024) This Laravel application is designed and developed by kreaweb.be.