fhferreira / genealogy

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

Home Page:https://genealogy.kreaweb.be/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Genealogy

Genealogy

About this project

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

Genealogy-000

Genealogy-020a

This application is build using :

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 person can have 0 to many partners (n people), being part of 0 to many couples (opposite or same biological sex)

  6. A person can be part of a couple with the same partner multiple times (remarriage or reunite)

  7. A couple can have 0 to many children (based on parents_id as a couple or father_id/mother_id individually)

  8. 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.

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 view teams BRITISH ROYALS and KENNEDY as team owner
manager@genealogy.test password to view team BRITISH ROYALS as manager
editor@genealogy.test password to view team KENNEDY as editor
member_1@genealogy.test password to view team BRITISH ROYALS as normal member
member_4@genealogy.test password to view team KENNEDY as normal member
developer@genealogy.test password to view options reserved for the developer, like the user management and access to all persons in all teams

Features

  • Light/Dark/System theme
  • Fully responsive
  • Multi-language, German, English and Dutch already implemented, language setting saved in authenticated users profile
  • Multi-tenancy by Jetstream Teams
  • Security through Jetstream Teams Roles & Permissions, 2FA & API can be enabled
  • Offcanvas menu
  • Multiple image upload with possibility of watermarking, photo carousel

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 showing :

  • INFO : All scheduled backups
  • DEBUG : All executed database queries, but only in local development mode
  • 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/day

To Do ...

  • GEDCOM import and export (help gladly accepted).

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

Docker Installation

cp env.docker .env

run following command to initialize project

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    laravelsail/php83-composer:latest \
    composer install --ignore-platform-reqs

run docker containers

./vendor/bin/sail up -d

./vendor/bin/sail artisan key:generate

./vendor/bin/sail artisan storage:link

./vendor/bin/sail artisan migrate:fresh --seed

./vendor/bin/sail npm install & npm run build

./vendor/bin/sail artisan serve or npm run dev

Testing

php artisan test

Contributing

Feel free to submit Issues (for bugs or suggestions) and Pull Requests.

Documentation

The documentation is built-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.

About

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

https://genealogy.kreaweb.be/

License:MIT License


Languages

Language:PHP 50.7%Language:Blade 48.1%Language:CSS 0.7%Language:JavaScript 0.5%