A genealogy/family tree application, built with Laravel.

Overview

Laravel

Genealogy Application

Build Status Coverage Status

Development in progress
In development progress, any changes of table structure will be updated directly to corresponding migration file.

Baca README Bahasa Indonesia

About

Genealogy (Silsilah) application to record our family members.

Features

This application uses Bahasa Indonesia and English based on config.locale.

Logic Concept

  1. A person can have one father
  2. A person can have one mother
  3. A person can have one parent (couple of mother and father)
  4. A person can have 0 to many children
  5. A person can have 0 to many spouses (husbands or wife)
  6. A couple can have 0 to many children (based on parent_id)

Family Member Entry

  1. Enter Name and Gender
  2. Set Father
  3. Set Mother
  4. Add Spouse
  5. Add Child

Person Attribute

  1. Nickname
  2. Gender
  3. Fullname
  4. Date of birth
  5. Date of death (or at least year of death)
  6. Address
  7. Phone Number
  8. Email

Couple Attribute (TODO)

  1. Husband
  2. Wife
  3. Marriage Date
  4. Divorce Date
  5. Address

How to Install

Server Requirements

This application can be installed on local server and online server with these specifications :

  1. PHP 7.3 (and meet other Laravel 8.x server requirements),
  2. MySQL or MariaDB database,
  3. SQlite (for automated testing).

Installation Steps

  1. Clone the repo : git clone https://github.com/nafiesl/silsilah.git
  2. cd silsilah
  3. composer install
  4. cp .env.example .env
  5. php artisan key:generate
  6. Create database on MySQL
  7. Set database credentials on .env file
  8. php artisan migrate
  9. php artisan storage:link
  10. php artisan serve
  11. Register as new user to start using the application.
  12. Add the registered email address to the .env file:

Testing

This application built with testing (TDD) using in-memory sqlite database.

$ vendor/bin/phpunit

Contributing

Feel free to submit Issue for bugs or sugestions and Pull Request.

Screenshots

Family Tree

Family Tree

This family tree view is using the Horizontal Family Tree CSS, thanks to Peiwen Lu.

Family Chart

Family Chart

Search Family Member

Search Family Member

User Profile

User Profile

Profile Form

Profile Form

Profil Edit Form

Profil Edit Form

Automated Testing

Automated Testing

License

Silsilah project is open-sourced software licensed under the MIT license.

Comments
  • Error , Setelah Logout tidak bisa Login Kembali

    Error , Setelah Logout tidak bisa Login Kembali

    1. Pesan error setelah logout "Identitas tersebut tidak cocok dengan data kami.", padahal tidak lupa password dan user name, bagaimana mengatasinya ?,
    2. Project saya taurh web site dan masalahannya tidak bisa upload gambar, hanya bisa di localhost saja, apakah ada solusi , mas ?
    opened by vickyKDV 15
  • how to publish it to public hosting

    how to publish it to public hosting

    hi akhi, when i think it's need to publish, my brother and sister self entry to this database; but i don't understand how to publish it to my domain/hosting public i use host : tryfcomet.com

    how to type on cpanel : php artisan key:generate and type : php artisan migrate php artisan storage:link php artisan serve

    i already create database, copy extract to filemanager, and edit .env, but it's can't work. is any example site demo's can work to apply it?

    it's great idea, i can't wait it... thank you verymuch

    my number : wa.me/628561515628 wassalaamu'alaikum

    need more info 
    opened by 1anshari 10
  • Error exception upon attempting to register a new user.

    Error exception upon attempting to register a new user.

    When trying to register a new user, I receive an Error Exception as such: 'Trying to access array offset on value of type null'

    The issue appears to originate from line 147 in the /vendor/egulias/email-validator/EmailValidato/Parser/Parser.php file

    image

    Any help in this regard would be greatly appreciated. Thank you for your contribution!

    opened by akhan85 7
  • [PROPOSAL] Add user age based on given date of birth and date of death

    [PROPOSAL] Add user age based on given date of birth and date of death

    It will be nice if we have age information of a user/person. For example, if we visit a person profile, we see age of the person after their name.

    We can calculate person age by this method:

    1. User dob (date of birth) are filled (must be filled first).
    2. We calculate current year - person year of birth (from their dob).
    3. If dod (date of death) are filled, we calculate year difference.
    4. If dod is null and yod (year of death) are filled, we calculate year difference.

    We can use eloquent accessor to set age attribute of a person, like this $user->age.

    opened by nafiesl 7
  • [PROPOSAL] Add Change Password Feature

    [PROPOSAL] Add Change Password Feature

    Currently our user don't have a feature to change password. We need a change password page for logged in user.

    Change password flow :

    • User must be logged in
    • User click the "Change Password" menu/link
    • User must fill in the old password, new password and confirm new password.
    • System checks that old password is correct
    • If old password correct, save new password
    • Else, notify user that old password is incorrect.

    Thanks.

    enhancement Hacktoberfest 
    opened by nafiesl 6
  • Pin lokasi makam

    Pin lokasi makam

    Maaf, mau usul aja. Saya lihat ada fitur tanggal meninggal, gimana kalau ditambahkan lokasi pemakaman dalam bentuk pin map google,. Sptnya cocok diterapkan di laravel ini. karena kalau bicara silsilah maka tak lepas dari leluhur. Apalagi dengan tradisi takziah (mengunjungi maka) bagi banyak orang di Indonesia.

    Terima kasih

    enhancement 
    opened by novis97 4
  • Invalid field format for year of death (yod) error.

    Invalid field format for year of death (yod) error.

    The user profile form with the year of death field only accepts a year e.g 2000 and the database only accepts date format. I solved this by changing the DB field for yod to an int in the users table.

    opened by odeke 4
  • Add SQL modes to database config for MySQL v8

    Add SQL modes to database config for MySQL v8

    This PR fixes the following error on MySQL v8

    Syntax error or access violation: 1231 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'
    
    opened by biplobice 4
  • [new] Add Change Password Feature #14

    [new] Add Change Password Feature #14

    • [x] User must be logged in
    • [x] User click the "Change Password" menu/link
    • [x] User must fill in the old password, new password and confirm new password.
    • [x] System checks that old password is correct
    • [x] If old password correct, save new password
    • [x] Else, notify user that old password is incorrect.

    Bonus buat Mas @nafiesl πŸ˜‹ πŸ‘Œ

    • [x] New password cannot be same as user current password
    opened by cendekia 4
  • Add person birth order

    Add person birth order

    User can update person birth order (like first child, second child, or as third child).

    For existing silsilah user, please update update users table with this sql command:

    ALTER TABLE `users`
    	ADD COLUMN `birth_order` TINYINT(3) UNSIGNED NULL DEFAULT NULL AFTER `dob`;
    
    opened by nafiesl 4
  • Duplicate route names caused error on route caching

    Duplicate route names caused error on route caching

    Issue description

    Duplicate route names caused error on route caching https://github.com/nafiesl/silsilah/blob/01524cdb1f60c9a29b136fce5a63e60de0d48814/routes/web.php#L19-L20

    Steps to reproduce the issue

    1. Setup new instance from master branch
    2. Run command php artisan route:cache

    What's the expected result?

    Command successful without any error

    What's the actual result?

    Command failed with error below:

    Command failed with error `Unable to prepare route [password/change] for serialization. Another route has already been assigned name [password.change].`
    

    Additional details / screenshot

    This can be easily fixed by renaming one of the route. But to ensure consistent naming convention, I think it's best left to the original author

    bug 
    opened by yohanesgultom 3
  • Menampilkan pasangan di family tree

    Menampilkan pasangan di family tree

    Ijin Mas... sya berterimakasih sekali ada aplikasi yg mas buat ya.. ijin saya gunakan untuk trah saya.. Yang mau sya tanyakan mas.. apa bisa menampilkan pasangan di pohon keluarganya ya.. supaya pasangan juga terlihat langsung di pohon keluarga.. Terimakasih

    opened by ulimahendra 3
  • Suggested modification of a person's identity

    Suggested modification of a person's identity

    For a modern genealogy: A person can have one father, A person can have one mother: this is only true on the day of his birth, thereafter he can be adopted. A person can have one parent: so this becomes false. Enter Name and Gender: this is true on the day of his birth only, thereafter he may change his name or gender and therefore the death information will no longer correspond with the birth.

    This is just to give you a more current hierarchy.

    opened by David-Baron 7
  • Family Member Connections

    Family Member Connections

    In this PR, we are trying to follow up on issue #56. Here are some progress checklists:

    • [x] Every user creation related to a person will create a family connection entry
    • [x] User can send a family connection request to another user
    • [x] User can cancel a family connection request which has been sent to another user
    • [x] User can accept a family connection request from another user
    • [x] User can reject a family connection request from another user
    • [ ] User can remove a family connection from another user
    • [ ] User can browse incoming family connection requests from other users
    • [ ] User can browse their family connection requests to others
    • [ ] Prepare for family relationships within family connection data (eg: requester user is uncle, requested user is nephew)
    • [ ] Add policy permission for accepting the family connection request
    • [ ] Managers can accept or reject a family connection request.
    opened by nafiesl 0
Owner
Nafies Luthfi
Freelance Web Developer (Laravel, TDD, Ubuntu Server, LEMP Stack)
Nafies Luthfi
Laravel application project as Sheina Online Store backend to be built with Laravel and VueJS

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Boas Aditya Christian 1 Jan 11, 2022
Question & Answer Application built with laravel

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

null 0 Jan 7, 2022
Attendize is an open-source ticketing and event management application built using the Laravel PHP framework

Attendize is an open-source ticketing and event management application built using the Laravel PHP framework. Attendize allows event organisers to sel

Attendize 3.6k Dec 27, 2022
Video Chat application built using Metered Video SDK, with PHP Laravel Backend and JavaScript Front-End

Group Video Chat App with PHP Laravel and JavaScript Powered by Metered Video SDK Overview This application is a highly scalable group video calling a

null 2 Aug 18, 2022
A sample application with a multistep form built with Livewire.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

David Grzyb 11 Nov 26, 2022
ergodnc (Ergonomic Desk & Coffee) is an open source Laravel project that's being built live on the official Laravel YouTube Channel

About This Project ergodnc (Ergonomic Desk & Coffee) is an open source Laravel project that's being built live on the official Laravel YouTube Channel

Mohamed Said 248 Dec 26, 2022
Easily add a full Laravel blog (with built in admin panel and public views) to your laravel project with this simple package.

Webdevetc BlogEtc - Complete Laravel Blog Package Quickly add a blog with admin panel to your existing Laravel project. It has everything included (ro

WebDevEtc. 227 Dec 25, 2022
An open source Laravel Soundboard with Admin Panel CRUD (Create Read Update Delete) built on Laravel, Bootstrap, and Vue.js

Laravel Soundboard An open source Laravel Soundboard with Admin Panel CRUD (Create Read Update Delete) built on Laravel 5.8, Bootstrap 4, Vue.js, Boot

Jeremy Kenedy 24 Oct 28, 2022
Laravel package to generate and to validate a UUID according to the RFC 4122 standard. Only support for version 1, 3, 4 and 5 UUID are built-in.

Laravel Uuid Laravel package to generate and to validate a universally unique identifier (UUID) according to the RFC 4122 standard. Support for versio

Christoph Kempen 1.7k Dec 28, 2022
Your users do not always report errors, LaraBug does. LaraBug is a simple to use and implement error tracker built for the Laravel framework.

Your users do not always report errors, LaraBug does. LaraBug is a simple to use and implement error tracker built for the Laravel framework. This rep

LaraBug 197 Dec 9, 2022
AliExpress Clone app built with Laravel 8 And vuejs

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Laravue 9 Dec 21, 2022
Use Laravel's built-in ORM classes to query cloud resources with Steampipe.

Laravel Steampipe Use Laravel's built-in ORM classes to query cloud resources with Steampipe, an open source CLI to instantly query cloud APIs using S

Renoki Co. 13 Nov 8, 2022
A platform to create documentation/wiki content built with PHP & Laravel

BookStack A platform for storing and organising information and documentation. Details for BookStack can be found on the official website at https://w

BookStackApp 10.7k Jan 5, 2023
Invoices, Expenses and Tasks built with Laravel and Flutter

Invoice Ninja Hosted | Self-Hosted We're on Slack, join us at slack.invoiceninja.com or if you like StackOverflow Just make sure to add the invoice-ni

Invoice Ninja 6.8k Dec 26, 2022
Podcastwala - Your very own Podcast web app built with Laravel. Manage and listen to your favorite podcasts

Podcastwala Your very own Podcast web app built with Laravel 5. This web app enables you to manage RSS feeds for your favorite podcasts and listen to

null 142 Sep 14, 2022
Manage your staff from one place. Featuring Staff leave management πŸ–, payslips πŸ’΅ generation & emailing, messaging πŸ“¨and more πŸ› ! Built with ❀️ with Laravel

Staff Management System This little buddy can help you manage your staff database! Built with ?? with Laravel #FEATURES 1 Staff management/ database S

Ezekiel Oladejo 45 Jan 3, 2023
A simple blog app where a user can signup , login, like a post , delete a post , edit a post. The app is built using laravel , tailwind css and postgres

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Nahom_zd 1 Mar 6, 2022
Free and open-source Laravel admin dashboard interface built with Livewire & Alpine.js based on Bootstrap 5

Volt Dashboard Laravel Free Frontend Web App for Laravel with Livewire & Alpine.js Never start a development project from scratch again. We've partner

Themesberg 200 Jan 4, 2023
Strongly typed settings for Laravel, includes built-in encryption and friendly validation.

Strongly Typed Laravel Settings Install composer require bogdankharchenko/typed-laravel-settings Model Setup namespace App\Models\User; use Illuminat

Bogdan Kharchenko 10 Aug 31, 2022