no image

Mobile application - research

Privacy Level: Public (Green)

Surname/tag: mobile_app_research
Profile manager: Michal Vašut private message [send private message]
This page has been accessed 69 times.

Still WORK IN PROGRESS

The goal of this project is to make reasearch about mobile application that would use data of WikiTree, its properties, behaviour, appearance, ...

I'm developer, or for almost 6 years, I'm doing my best to be one ;-). So I know some basics about software development process and also that doing some project without good preparation can lead to it's failure. Unfortunatelly I currently have only minimal knowledge of web development and no knowledge of mobile app development. Therefore I've decided to make an analysis with some community involvement.

Other reason is little bit selfish. The reason I've decided to start this journey is that I'm not really happy with current state of current WikiTree website - too much things that are IMHO unnecessary (like badges, lot of descriptive text, ...) - I'm simple man and I like simple things.

Contents

User demand

On G2G forum there were several requests for mobile app:

The mobile app is also mentioned on Trello (WikiTree Bugs & Improvements dashboard)

Which features of WikiTree should it support

The best way (and I think only reasonably possible) how to use current data = the only thing that is somehow accessible (look here Is the worldwide family tree public domain? and here Is WikiTree's software open source?) is via REST API provided by WikiTree Dev team (Help:API Documentation).

A RESTful API is an application program interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. ... REST technology is generally preferred over the more robust Simple Object Access Protocol (SOAP) technology because REST uses less bandwidth, making it more suitable for efficient internet usage. [1]

REST API is currently used by multiple 3rd party applications (Help:Apps)

Core features

Family tree

TODO

Person profile

❌ Create (not possible)

Currently NOT POSSIBLE - WikiTree REST API is READ ONLY

Display
REST API
  • getProfile
    • READ ONLY
    • Provides following info:
      • user_name: <wikitree-id>
      • person
        • Id: <int-id>
        • Name: <wikitree-id>
        • FirstName: <first-name>
        • MiddleName: <middle-name>
        • LastNameAtBirth: <last-name-at-birth>
        • LastNameCurrent: <last-name-current>
        • Nicknames: <nicknames>
        • LastNameOther: <last-name-other>
        • RealName: <real-name>
        • Prefix: <prefix>
        • Suffix: <suffix>
        • BirthLocation: <birth-location>
        • DeathLocation: <deat-location>
        • Gender: <gender>
        • BirthDate: <birthdate-timestamp>
        • DeathDate: <deathdate-timestamp>
        • BirthDateDecade: <birth-decade> (ie 1890s)
        • DeathDateDecade: <death-decade>
        • Photo: <photo-filename>
        • IsLiving: <isLiving> (0|1)
        • HasChildren: <hasChildren> (0|1)
        • NoChildren: <no-children> (0|1)
        • Privacy: <privacy-level>
          • 10: UNLISTED
          • 20: PRIVATE
          • 30: SEMIPRIVATE_BIO
          • 35: SEMIPRIVATE_TREE
          • 40: SEMIPRIVATE_BIOTREE
          • 50: PUBLIC
          • 60: OPEN
        • IsPerson: <is-person> (0|1)
        • Touched: <last-edit-timestamp>
        • ShortName: <short-name>
        • BirthNamePrivate
        • LongNamePrivate
        • LongName
        • BirthName
        • Manager: <manager-int-id>
        • DataStatus: <collection-of-data> (how sertain data are)
        • Privacy_IsPrivate: (true|false)
        • Privacy_IsPublic: (true|false)
        • Privacy_IsOpen: (true|false)
        • Privacy_IsAtLeastPublic: (true|false)
        • Privacy_IsSemiPrivate: (true|false)
        • Privacy_IsSemiPrivateBio: (true|false)
        • PhotoData
          • path: <fullpath-without-host> (ie "/photo.php/e/e3/Adams-35.jpg")
          • url: <thumbnail-fullpath-whithout-host> (ie "/photo.php/thumb/e/e3/Adams-35.jpg/75px-Adams-35.jpg")
          • file: <thumbnail-filename>
          • dir: <thumbnail-directory>
          • width: <thumbnail-width>
          • height: <thumbnail-height>
          • orig_width
          • orig_height
        • Father: <father-int-id>
        • Mother: <mother-int-id>
        • Parents
          • <mother-person-profile-data> (same as Person for mother without Parents)
          • <father-person-profile-data> (same as Person for father without Parents)
  • getBio
    • Provides following info:
      • page_name: <wikitree-id>
      • user_id: <int-id>
      • bio: <biography-text>
      • status: ???
❌ Edit (not possible)

Currently NOT POSSIBLE - WikiTree REST API is READ ONLY

Search

REST API
  • searchPerson
    • READ ONLY
    • Supports following search criteria:
      • FirstName : First name
      • LastName : Last name
      • BirthDate : Birth date (YYYY-MM-DD)
      • DeathDate : Death date (YYYY-MM-DD)
      • RealName : Preferred name
      • LastNameCurrent : Current last name
      • BirthLocation : Birth location keyword(s)
      • DeathLocation : Death location keyword(s)
      • Gender : Gender (male, female)
      • fatherFirstName : Father's first name
      • fatherLastName : Father's last name
      • motherFirstName : Mother's first name
      • motherLastName : Mother's last name
      • watchList : Profiles in relation to the requester's watchlist (in, out, any)
      • dateInclude : If set (both), then dates on matches are required. If set (neither), then matches without dates are included.
      • dateSpread : Year range for matching (1 - 20)
      • centuryTypo : If set (1), then possible century typos in the dates are included in the results.
      • isLiving : If set (1), then matches are restricted to the profiles of living people.
      • skipVariants : If set (1), then last name variants are not considered and only exact last name matches will be returned.
      • lastNameMatch : Last name match options (all, current, birth, strict)
      • sort : Sort order (first, last, birth, death, manager)
      • secondarySort : Secondary sort order (first, last, birth, death, manager)
      • limit : Number of results to return (1 - 100, default 10)
      • start : Starting offset of results (default 0)
      • fields : A comma-delimited list of profile data fields to retrieve. See getProfile.

Settings

TODO

Optional features

These features should be optional - possibility to enable/disable them in Settings.

DNA

TODO

Note: I don't currently know anything about this topic ...

REST API
  • getDNATestsByTestTaker
    • READ ONLY
    • Provides following info:
      • dna_id: ie. <id-number>
      • dna_slug: 23andme_audna | ancestry_audna | ftdna_audna | ftdna_mtdna | ftdna_ydna | living_audna
      • dna_name: 23andMe | AncestryDNA | Family Tree DNA Family Finder | FTDNA Mitochondrial | FTDNA Y-Chromosome | Living DNA
      • dna_type: auDNA | mtDNA | yDNA
      • assigned: ie. <timestamp>
      • assignedBy: <wikitree-id>
      • haplo: <haplogroup>
      • markers: <number>
      • mttype: null | <result>
      • ysearch: null | <result>
      • mitosearch: null | <result>
      • ancestry: null | <result>
      • ftdna: null | <result>
      • gedmatch: null | <result>
      • haplom: ie. null | <result>
  • getConnectedProfilesByDNATest
    • READ ONLY
    • Provides following info:
      • dnaTest: <-DNA-test> (DNA test is like result of getDNATestsByTestTaker)
      • connections: <list-of-connections>
        • <connection>
          • Id: <dna-id>
          • PageId: <number>
          • Name: <wikitree-id>
  • getConnectedDNATestsByProfile
    • READ ONLY
    • Provides following info:
      • dnaTests: <list-of-DNA-tests> (DNA test is like result of getDNATestsByTestTaker)

Native Application vs PWA

Native Application

Pros

  • has better performance
    • client side performance is not problem with this kind of application since WikiTree mainly shows and allows enter data in text form
    • most resource hungry operation would be rendering of charts (family tree / fanchart / ...), but todays smartphones has no problem with this task either
  • A native app is able to interact with other native applications, for instance by offering its users to connect with Facebook.
  • offers better support of smartphone features

Cons

  • Needs to be developed for multiple platforms separately (iOS, Android, ...)
  • Needs to be registered in App Store

PWA (Progressive Web App)

The Progressive Web App is an ultra optimized website for mobile, able to use some features of this device, such as the camera. Users access PWA from their browser — Chrome, Firefox, Safari or other — and download its content as and when browsing, hence the name of progressive.

Pros

  • PWA allows to save time and money, since it is developed only once = single application for multiple platforms (iOS, Android, Windows, MacOS, Linux, ... - depends on web browser)
  • Since you access PWA from a web browser, you don’t have to submit your application in the Stores.
  • Users do not download all the content of PWA before using it. Thus, they access its content much faster, directly via a URL.
    • PWA allows to store some data for offline usage, but if connected it uses online data
  • Since it requires no download, PWA uses only a very small portion of the phone’s memory.
    • depends on poin mentioned above
  • The Progressive Web App is a website and, as such, is optimized for search engines. The latest algorithm developed by Google particularly values PWA. In concrete terms, this means that a PWA is likely to appear in the first search results and therefore to be well known by the users.

Cons

  • PWA is not perfectly supported by all web browsers.
  • Progressive Web Apps don’t have access to as many features of the phone as native applications.
    • yes, there are limitations, but web technologies become more and more capable - look at WHAT WEB CAN DO TODAY?

Resources

Discussion

TODO: Link to G2G

What will it look like?

TODO - doesn't make sense to answer, before other questions are ansfered





Collaboration


Comments

Leave a message for others who see this profile.
There are no comments yet.
Login to post a comment.