Git Product home page Git Product logo

tarombo-app's Introduction

Tarombo

Create your own family tree

Tarombo is an app for Android designed to manage family trees. At the moment it's completely free and open source. It is a fork of Family Gem.

Features

With Tarombo you can:

  • Create a family tree from scratch, entering names, dates, places, various events, photos and sources.
  • Import an existing family tree through a GEDCOM file and modify it as you want.
  • Export the family tree you created (via GEDCOM again) to import in every other genealogy program.
  • Share a tree with your relatives, letting them improve it and receiving back the updates. Then you can choose whether accept them or not.

Minimum supported version is Android 4.4 KitKat (API 19), maximum is Android 12 S (API 31). The intent is that data structure respects as much as possible the latest version of GEDCOM standard: 5.5.1 and possibly also 5.5.5.
Tarombo is strongly based on the library Gedcom 5 Java by FamilySearch.

Limitations

The code provided in this repository should compile and build a working version of Tarombo, but with some limitations:

Missing Limitation
App signature You loose saved trees when you install over a signed version
Server account You can't share trees
GeoNames "demo" account Place names suggestions probably don't appear

The code (classes, variables, comments...) is almost all written in Italian (the native language of Family Gem's developer).

Translation

The translation of Tarombo user interface is managed on Weblate. Contribution to translation in any language is really appreciated. You need a Weblate account to freely work there, but also without account you can make suggestions to already existing translations.

Translation status

Resources

Official website: tarombo.siboro.org

You can find Tarombo on Google Play.

Feedback

For questions, bugs, suggestions you can:

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

About

Tarombo is written in Java within Eclipse and Android Studio. Project started on beginning of 2018. Author is Arnold Siboro and Putrasto (Family Gem's author is Michele Salvador).

tarombo-app's People

Contributors

putrasto avatar michelesalvador avatar asiboro avatar dadanglukisnyo avatar comradekingu avatar milotype avatar waldist avatar jakubfabijan avatar weblate avatar wonzling avatar pavanbi avatar vivaldo-roque avatar merfi745 avatar 42crmo4 avatar lavich avatar djogigoran avatar burekone avatar izzysoft avatar vintic avatar laurentc2 avatar santossi avatar

Watchers

James Cloos avatar

Forkers

comradekingu

tarombo-app's Issues

Add "C" node on subtree too

When a part of a tree is assigned to collaborators, that part of the tree is cut out and saved as a separate repository, which is called a subtree. On the place of the cut out node is then placed a node named "C". When this "C" node is tapped, the subtree will be displayed.

Add "C" node to the subtree too, and when it is tapped, go back to the main tree.

Merge person edit screen

Now there are two screens for editing a person but I don't know the reason.

The first screen is invoked by tapping on a person. The second screen is invoked by long pressing on a person, show menu items and tap on "Edit" menu item.

Merge these second screen's unique features into first screen:

  • separate first name and family name entry (on second screen firstname and family name are combined and must be manualy edited using GEDCOM syntax of using /'s )
  • birthdate selection
  • birthplace entry
  • dead/alive toggle

(BTW, first screen's unique feature is private/public toggle)

After merging, when long-pressing on a person, or when tapping on "Edit" button, invoke the first screen, which already got the second screen's unique features merged.

Record_2024-05-23-18-17-42.mp4

Various fixes for usability

When tapping on "Log out" menu item, now it immediately logs out the user. Show confirmation dialog box "Are you sure to log out?" with "Cancel" and "Yes" buttons.

When a tree is deleted, its private repository lingers

When a tree is deleted, its private repository (named tarombo-[..]-private) is not currently deleted. When a tree (repo named tarombo-xyz-nnn) is deleted, delete also its private data (repo named tarombo-xyz-nnn-private)

On certain devices, deeplink does not open the app

On Oppo A9 2020 (Android 11), after the app is installed, then clicking on a deeplink (for example https://tarombo.siboro.org/tarombo/asiboro/tarombo-tarombo-data-20220729090251) brings a selector that shows the icons of Tarombo app, as well as browser apps etc.
However on Xiaomi Redmi Note 12 (Android 13), after the app is installed, clicking on the same deeplink just opens a browser with the link (see attached video).

This article seems to be about the same issue: https://doordash.engineering/2022/01/25/your-deep-links-might-be-broken-web-intents-and-android-12/

WhatsApp.Video.2023-11-02.at.1.20.59.PM.mp4

Implement a screen to handle invitations to become collaborator

When a user is added as a collaborator to a repo, an invitation is sent. Now there is no screen to accept this, so user needs to go to GitHub to do it.
In Settings screen, add "Collaboration" menu item, which when tapped will show "Collaboration" screen, that contains a list of tree names where the user is invited (or already responded to the invitation) as collaborator. Before the name of each tree, show a checkbox, which is

  • unchecked if the status of the invitation is not accepted, and if tapped show a dialog box with the text "Accept this invitation?" and buttons "Cancel", "Accept", "Decline" and do as selected
  • checked if the status of the invitation is accepted, and if tapped show a dialog box with the text "Leave this collaboration?" and buttons "Cancel", "Leave" and do as selected

Import GEDCOM to node

Now there is a feature to import GEDCOM, which will create a new tree. This feature is accessible by tapping on "+" icon on the bottom right of Trees screen.
Implement a feature to import GEDCOM to a node, which is to be invoked by tapping on the 3-dot icon on a tree, and selecting menu item "Import GEDCOM" which is to be put before "Export GEDCOM" menu item.

  1. When this "Import GEDCOM" menu item is selected, show a screen to select a person (i.e., a node) which we call here as person 1, which looks the same as existing "Persons" screen.
    WhatsApp Image 2024-04-22 at 19 56 54

After selection, show a dialog box like when long tapping on a node in a diagram and selecting "Link new person", which shows "Parent", "Sibling", "Partner", "Child". Use the same code including "Inside" selection to select family.
WhatsApp Image 2024-04-22 at 19 54 38
WhatsApp Image 2024-04-22 at 19 54 39
The imported tree will then be attached to this person as selected item.

  1. After a person is selected, then open file selector to select a GEDCOM file. After a GEDCOM file is selected, read the GEDCOM file and show a screen to select a person, which we call here as person 2, to be set as the parent/sibling/partner/child of the previously selected node.

  2. Then, after the person is selected, show a dialog box asking "Are you sure to import the tree in this GEDCOM file and set [person 1] in current tree as the [parent/sibling/partner/child] of [person 2] from the imported tree?" with "Cancel" and "OK". If Cancel is clicked, dismiss the dialog box and cancel the operation. If OK is clicked, import the GEDCOM and set the person 1 as the parent/sibling/partner/child of person 2.

One thing that is important here is that each node in GEDCOM uses an ID that is only unique in that GEDCOM file, so in this app, which can use more than GEDCOM files for one tree, so that the node ID is universally unique, a UUID is added to the original node ID, with an asterisk (*) I think.

Import from shared link

Add "IMPORT FROM SHARED LINK" button after "IMPORT ON GEDCOM FILE" on "New tree" screen which appears when tapping on "+" on bottom right of "Trees". When this button is tapped, do the same import operation as when a shared deeplink is clicked.

This is necessary because on certain app (like Facebook Messenger) the tapping on deeplink fails to open the app.

Options when exporting to GEDCOM

Implement the following options when exporting to GEDCOM

  1. Give option to use numbers only alphanumeric in ID

Due to using more than one git repository in one tree, now we attach UUID after asterisk to record ID (XREFs). So for example I1 (an individual record ID) becomes I1*0c79eeac-432d-4952-8312-74425ffa12ae . Though this format is I think allowed by GEDCOM standard (see https://www.tamurajones.net/GEDCOMIdentifiersLength.xhtml , https://www.tamurajones.net/GEDCOMIdentifiersCharacters.xhtml), some apps seem to have problem with this format.

Therefore, when exporting, give a choice to rewrite the IDs or keep them as they are. When tapping on "Export GEDCOM" menu item, show a dialog box "Convert IDs to more compatible ones?" (Ubah ID ke yang lebih kompatibel?" with "No" (Tidak) and "Yes" (Ya), and if "Yes" is tapped, rewrite IDs with numbers.

Tree mistakenly treated as offline after access to GitHub API failed

When clicking on an online tree on "Trees" screen as access to GitHub API failed (for example due to there is no internet), the tree became considered offline and the light green circle on its name is gone.
Fix this so that the only condition when it is turned to offline is when a GitHub API access is successful and the repository is no longer found on GitHub. After such failure to access GitHub API on an online tree, allow viewing the tree but disable making changes to it.

Additionally when access to GitHub API failed due to no internet connection, use the text "Access to server cannot be done due to no internet connection. Try again later" (Akses ke server tidak bisa dilakukan karena tidak ada koneksi internet. Coba lagi nanti", and do nothing else.

Add more info to show that a tree is "online"

Now when a tree is uploaded to server by selecting "Upload to server" menu item, it becomes "online", i.e., it is stored in the server so can be restored to local. In "Trees" screen, after the name of the tree there will be a green bullet.

A. Add more info showing that a tree is online, as follows:

  1. On "Info" screen (which is shown when "Info" menu item after selecting 3-dot icon on a treee on "Trees" screen), under "Title:" item add "Type:" with value of either the following:
  • Offline: when the tree is not an online tree (i.e., it is not a local copy of a repository in github)
  • Online: when the tree is a local copy of a repository in github, that is not a fork, and not forked.
  • Subscribed from <URL> (Langganan dari <URL>): this is a local copy of a repo in github that is forked from other repo (whose link is )
  • Shared (Dibagikan): this is a local copy of a repo in github that is forked to at least a repo
  1. On "Trees" screen, now when the tree is a repo at github, at the end of the name of the tree will be shown a light green circle. Change the color to

B. Add creation date/last update date

On "Info" screen (which is shown when "Info" menu item after selecting 3-dot icon on a treee on "Trees" screen), under "Type:" item, add the following

  • Created:: put the date/time the tree was created
  • Last updated date/time: put the date/time the tree was last updated

Add relationship as key

In person edit screen, which is invoked by tapping on a person:

(In the sample screen attached, "Father" etc. are person names)
Screenshot_2024-05-23-19-14-10-65_4468a60f7e74f07474ee8d6c83a1db48

on the screen shown when "Relatives" ("Kerabat") tab is tapped:

Screenshot_2024-05-23-19-14-24-25_4468a60f7e74f07474ee8d6c83a1db48

show relationship (father, mother, partner, sibling, child), before each box showing person's name, so the display will be like this:

Father: [<Father's name>]
Spouse: [<Spouse's name>]
Child: [<Child's name>]
Child: [<Child's name>]

Unlink only from certain node, not all nodes

Now, after long tapping on a person (i.e., a node), then selecting "Unlink" from the menu, all links for that person will be removed, so the person will be detached from all previously connected nodes. If A has B as a child, and B has C as a child, executing "Unlink" on B, for detaching A from B, will delete A-B link and B-C link. This is not desirable because user will need to build again the rest of the links.

Change this behavior to as follows:

When "Unlink" is selected, show in a dialog box a list of persons to which the selected person is linked, like this but with scroll bar when the list is too long:
WhatsApp Image 2024-04-24 at 21 22 18

Let the user select a node (i.e., a person) and then click "Unlink" button. Then unlink from the selected persons.

Issue with assignment to collaborator

When a node (a person in the tree) on an owned online tree is assigned to collaborator(s) by the owner (let's say the GitHub username of the owner is "user1"), the node is cut and put into a separate repository (with "[subtree]" appended to its name). An invitation is sent to a GitHub user (let's say the username is "user2"), and when it is accepted, the user2 added as collaborator of the repository. The node is then replaced with the one named "C" which stands for "connector". In order to edit the tree, user2 needs to subscribe to the tree. When user2 click on "C", the separate repository is fetched and appears on "Trees" screen, but it is not a forked repository, but a local copy of user1's repository. So when user2 edits the subtree, there will be no submitting/fetching changes.

Show "Add" button in Collaborators screen only to owner

Show "Add" button in Collaborators screen only to owner of the tree, and hide it otherwise. The button is now always shown.
When tapping on a person in a diagram, show "Assign to collaborator(s)" menu item only when the tree is owned by the logged in user.

Show tree's name in subscribing dialog box

Show tree's name in subscribing dialog box. I.e., change the message of the dialog box shown below to "Subscribe to this tree titled "(put the name of the tree)", or just fetch a copy?"

Screenshot_2024-06-09-17-17-13-60_4468a60f7e74f07474ee8d6c83a1db48

Do not keep appending UUID into GEDCOM's ID

Due to using more than one git repository in one tree, now we attach UUID after asterisk to record ID (called XREF IDs in in GEDCOM). So for example when importing GEDCOM, 0c79eeac-432d-4952-8312-74425ffa12ae is appended to I1 (an individual record ID) to become I10c79eeac-432d-4952-8312-74425ffa12ae . The problem now is after UUID is appended, it could be appended, resulting in like I2211a389d-1b9c-4f18-877a-0d7dc093d510*dca3dfff-3315-40f2-bdd6-b92fd0e6e61c (probably after more than one import). See for example https://github.com/tarombo-data/tarombo-tarombo-data-20240523153154/blob/main/tree.json .

Fix this, so that when existing ID already contains UUID (with one asterisk), do not append UUID again.

Merge back cut out tree

When collaborator(s) assigned to a part of a tree, that part is cut out and stored as a separate repository in GitHub. Implement a feature to merge back that cut out tree to the main tree.

When deleting an online tree, show confirmation message

When deleting an online tree, give a confirmation message depending on the type, as follows:

  • Offline: this type is for a tree that is not an online tree (i.e., it is not a local copy of a repository in GitHub), and for this the confirmation message is "Are you sure to delete this tree?"
  • Online: this type is for a tree that is a local copy of a repository in GitHub, that is not a fork, and not forked, and for this the confirmation message is "Are you sure to delete this tree (the tree on the server will be deleted)?"
  • Subscribed from <URL> (Langganan dari <URL>): this type is for a tree that is a local copy of a repo in GitHub that is forked from other repo (whose link is ), and for this the confirmation message is "Are you sure to cancel subscription to the shared tree? (your copy will be deleted)?"
  • Shared (Dibagikan): this type is for a tree that is a local copy of a repo in GitHub that is forked to at least a repo, and for this the confirmation message is "This shared tree has subscribers. Are you sure to delete it?"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.