Genealogy is a free and open-source (family tree) application to record family members and their relationships, build with PHP (Laravel 10).
This application is build using :
- Laravel 10 (featuring Vite)
- Laravel Jetstream 4 (featuring Teams)
- Livewire 3
- Tailwind CSS
- Tailwind Elements
- Laravel Filament (only Table Builder)
- Tabler Icons
-
A person can have 1 biological father (1 person, based on father_id)
-
A person can have 1 biological mother (1 person, based on mother_id)
-
A person can have 1 set of parents, biological or not (1 couple of 2 people, based on parents_id)
-
A person can have 0 to many biological children (n people, based on father_id/mother_id)
-
A person can have 0 to many partners (n people), being part of 0 to many couples (opposite or same biological sex)
-
A person can be part of a couple with the same partner multiple times (remarriage or reunite)
-
A couple can have 0 to many children (based on parents_id as a couple or father_id/mother_id individually)
-
A couple can be married or not, still together or separated in the meantime
-
At least PHP 8.2, supporting (upcomming) Laravel 11.
The application will be upgraded to Laravel 11 as soon as it's released. - At least MySQL 8.0.1 or MariaDB 10.2.2 or an equivalent database, supporting Recursive Common Table Expressions.
This project is open-sourced software licensed under the MIT license.
This demo has 2 family trees implemented, BRITISH ROYALS and KENNEDY.
Password | Purpose | |
---|---|---|
[email protected] | password | to view teams BRITISH ROYALS and KENNEDY as team owner |
[email protected] | password | to view team BRITISH ROYALS as manager |
[email protected] | password | to view team KENNEDY as editor |
[email protected] | password | to view team BRITISH ROYALS as normal member |
[email protected] | password | to view team KENNEDY as normal member |
[email protected] | password | to view options reserved for the developer, like the user management and access to all persons in all teams |
- Light/Dark/System theme
- Fully responsive
- Multi-language, 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
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
- GEDCOM import and export (help gladly accepted).
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.
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
php artisan test
Feel free to submit Issues (for bugs or suggestions) and Pull Requests.
The documentation is built-in the applications help. Visit the demo project to read the documentation.
If you like this project, please consider giving it a star and spread the word. Thank you.
This application is based on an original idea by Nafies Luthfi. Thanks for your excellent work.
This Laravel application is designed and developed by kreaweb.be.