Genealogy is a free and open-source family tree PHP application to record family members and their relationships, build with Laravel 12.
This TallStack application is build using :
- Laravel 11
- Laravel Jetstream 5 (featuring Teams)
- Livewire 3
- Alpine.js 3
- Tailwind CSS 4
- TallStackUI 2 (featuring Tabler Icons)
- Laravel Filament 4 (only Table Builder)
-
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 couple can have 0 to many (plus) children (based on parents_id as a couple or father_id/mother_id individually)
-
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 person can have 0 to many siblings (n people) (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.4, supporting Laravel 12.
- 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 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 |
Role | Model | Permissions |
---|---|---|
Administrator | user (team member) | 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 |
- Light/Dark theme
- Fully responsive
- Multi-language, language setting saved in authenticated users profile
- Multi-timezone, timezone setting saved in authenticated users profile
- Multi-tenancy by Laravel Jetstream Teams, including Transfer Team Ownership
- 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
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 requests (off by default)
- DEBUG : All executed database queries (off by default)
- WARNING : All detected slow (> 500 ms) queries
- WARNING : All detected N+1 queries
- ERROR : All detected errors
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 :
- User statistics by country of origin
- User statistics by year, month, week or day
The following activities are logged in the database:
- create, update, delete on persons (including Metadata) and couples
- create, update, delete on teams
- create, update, delete, invite, remove on users (Team members)
Activity loggings are available in Offcanvas Menu :
- Persons (with Couples) in People logbook
- Teams (with Users) in Team logbook
This application has a built-in Password Generator to help users build secure passwords.
- German (DE)
- English (EN)
- Spanish (ES)
- French (FR)
- Hindi (HI)
- Indonesian (ID)
- Dutch (NL)
- Portuguese (PT)
- Turkish (TR)
- Vietnamese (VI)
- Simplified Chinese (ZH_CN)
Translations can be added by submitting a Pull Request to the project.
Translation integrity can be checked by issuing the command php artisan translations:check --excludedDirectories=vendor
Instructions on how to add a language can be found in README-LANGUAGES.md.
Instructions on how to configure file and image uploads can be found in README-UPLOADS.md.
- At the moment, basic GEDCOM import and export is under development.
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
Update instructions can be found in README-UPDATE.md.
Testing is done using Pest.
Command: php artisan test
or ./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.
Feel free to submit Issues or Pull Requests, for bugs, suggestions or feature requests.
The documentation is included in the applications help. Visit the demo project to read the documentation.
Maintaining this project takes time and effort. If you find it useful, consider supporting me:
Your support helps me improve and maintain Genealogy and other open-source tools. Every bit is appreciated. Thank you! π
This Laravel application is designed and developed by kreaweb.be.