Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mgeurts/genealogy

Genealogy is a free and open-source (family tree) application to record family members and their relationships, build with PHP (Laravel 11).
https://github.com/mgeurts/genealogy

ancestry common-table-expression family-tree genealogy jetstream laravel lineage livewire parentage pedigree tabler-icons tailwindcss vite

Last synced: 25 days ago
JSON representation

Genealogy is a free and open-source (family tree) application to record family members and their relationships, build with PHP (Laravel 11).

Awesome Lists containing this project

README

        

Genealogy

# Genealogy

![](https://img.shields.io/badge/PHP-8.3-informational?style=flat&logo=php&color=4f5b93)
![](https://img.shields.io/badge/Laravel-11-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-3.5-informational?style=flat&logo=Livewire&color=fb70a9)
![](https://img.shields.io/badge/Filament-3.2-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)

## About this project

Genealogy is a free and open-source family tree PHP application to record family members and their relationships, build with Laravel 11.

Genealogy-000a
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




[email protected]
password
to access teams BRITISH ROYALS and KENNEDY as team owner


[email protected]
password
to access team BRITISH ROYALS as manager


[email protected]
password
to access team KENNEDY as editor


[email protected]
password
to access team BRITISH ROYALS as normal member


[email protected]
password
to access team KENNEDY as normal member


[email protected]
password
to access options reserved for the developer, like the user management and access to all persons in all teams

## Roles & permissions



Role
Model
Permissions




Administrator
user
create, read, update, delete


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


  • Light/Dark theme

  • Fully responsive

  • Multi-language, English, Dutch and German are already implemented, language setting saved in authenticated users profile

  • Multi-timezone, timezone setting saved in authenticated users profile

  • Multi-tenancy by Laravel Jetstream Teams

  • Security through Laravel Jetstream Teams Roles & Permissions, 2FA & API can be enabled

  • Offcanvas menu

  • Multiple image upload with possibility of watermarking, photo carousel with navigation

  • Multiple documents upload

### Special features

This application has a built-in Backup Manager :


  • Backups can be initiated and managed manually

  • Backups can be scheludeld by issuing a cron job on your development or production server

  • An e-mail will be send after each backup

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


  • INFO : All scheduled backups

  • DEBUG : All executed database queries, but only in local development mode

  • DEBUG : All executed requests

  • WARNING : All detected N+1 queries, but only in local development mode

  • ERROR : All detected errors

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


  • User statistics by country of origin

  • User statistics by year, month, week or day


All activities (create, update, delete) on persons and couples are logged in the database.

Change history available on Persons.

### To Do ...

## 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

`git clone https://github.com/MGeurts/genealogy.git .`

`cp .env.example .env`

make the needed changes regarding name, url, database connection & mail server

`composer install`

`php artisan key:generate`

`php artisan storage:link`

`php artisan migrate:fresh --seed`

`npm install & npm run build`

`php artisan serve` or `npm run dev`

## Testing

`php artisan test`

## Contributing

Feel free to submit Issues or Pull Requests, for bugs, suggestions or feature requests.

## Documentation

The documentation is included in the applications help.
Visit the demo project to read the documentation.

### Sponsoring

If you like this project, please consider giving it a star and spread the word. Thank you.

## Impressum

### Basic idea (2017)

This application is based on an original idea by Nafies Luthfi. Thanks for your excellent work.

### Design & Development (2024)

This Laravel application is designed and developed by kreaweb.be.