Code Monkey home page Code Monkey logo

nacarta's Introduction

About

nacarta is a set of Web-based genealogy applications for visualizing properties of family members and their relations. The persons in focus comprise a specific ego (Latin personal pronoun indicating the subject), its ancestors (parents), their descendants (children) and optionally partners (spouses) of all those persons. Data of each person is specified in one or more JSON database files. The data is processed locally in your Web browser, keeping confidential records private. nacarta comes with three views:

  • Relations Chart: In a huge (well, this depends on the size of your database) chart with all family members, each person is represented by a box. The boxes are interconnected to the ego reference person. Visual features, such as line styles, color coding of boxes, box border styles, facilitate identifying a variety of facets characterizing individual and aggregated data (sex distribution, linearity, generations count and cardinality).
  • Person List: The list view provides a table with sortable columns. This is especially helpful for identifying missing data fields. Each line represents a person. They can be filtered by full-text search.
  • Locations Map: Birth and death locations are visualized in a map with one marker per location. Each marker has a tooltip, which is activated on clicking. Geographical coordinates are determined from location names utilizing the Google Maps Geocoding API.

Views of nacarta showing a fictional example family

How to Use

nacarta comes as a static Web application. Thus, an HTTP server and a Web browser are required. You may serve the application using an nginx docker image:

docker run -d --rm --name web --mount type=bind,source="$(pwd)",target=/usr/share/nginx/html -p 80:80 nginx:alpine

Point your Web browser to index.html, in case of the docker example, it is located at http://localhost. It will provide access to the views with the relations chart loaded per default. A live demonstration with the data of a fictional example family runs at: https://andreasruempel.de/nacarta

Configuration is done within config/app.json. First of all, you may configure the JSON database files containing the data of persons. The value of basePath is prepended to each file name. The extension .json is appended automatically. The sex of ego is specified by setting the boolean value of egoMale. To use the map, mapsKey for using the geocoding API must be configured. Obtain your own key using the API Credentials of Google Cloud Console. Please cache successfully resolved locations in config/geocode-cache.json as suggested by the log outputs in the JavaScript console.

System of Person Identifiers

Each person is uniquely identified by an id, which contains information on how the inheritance path is corresponding to the reference person ego, having an empty string id. Assuming ego being yourself, the database and the diagram expands with your father (having the id f) and your mother (having the id m). Your father's father (aka. grandfather) is ff, one of his other sons would be ffs (aka. your uncle). If your father had more the one brother, the further brothers would be ffs2, ffs3 and so on. Mothers (m) and daughters (d) are treated like fathers and sons respectively.

The family members target group focuses on persons belonging to ego's bloodline (aka. being the n-th generation children of ego's m-th generation ancestors). However, partners (spouses) of each relative may be addressed by adding a p (or p2 or p3) to the id. This is especially relevant to distinguish half-siblings, which are the offspring of different partners. Thus, the relation to any of possible relatives may be modeled using combinations of f, m, s, d, p and numeric indices applicable to s, d and p. Note, that there must not be any gap in the "tree of inheritance". Specifying mmfs2d without having mmf or mmfs2 in your database does not work properly.

A more complex example: mfmp2ssd is YOUR mother's father's mother's son's son's daughter, while HER father's father's father was the second spouse of YOUR mother's father's mother. More briefly, YOU and HER are "second cousins" of each other, since you have the same great-grandmother (but different great-grandfathers). Thus, it is a combined ascending and descending genealogical numbering system.

The system of identifiers and the corresponding chart rendering imply a few limitations. Each person can be connected to ego via one path only, i. e. pedigree collapse is not supported. Beyond this, each person can only have one father and one mother.

Shapes, Colors and Names

From the representation of boxes and connection lines within the relations view, essential properties can be derived:

Boxes

  • Grey background: Person not related to ego
  • Red background: Female relative
  • Blue background: Male relative
  • Grey frame: Ancestor or descendant of ego or ego itself (linear kinship)

Connection Lines

  • Light grey (horizontal): Partnership (spouse) relation to non-relative of ego
  • Solid grey (vertical): Inheritance between linear kinship of ego
  • Dashed green (vertical): Inheritance to non-linear kinship of ego

Names

  • Grey first or middle names: Personal names, which are not used frequently (indicated by square brackets in database)

Etymology

The name nacarta is derived from the latin terms: cognatus (blood relative) + charta (map or paper)

nacarta's People

Contributors

ruempel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

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.