This was the semester project for Software Systems Development and Integration (CIS*2750, aka "The angel of
Death"). It was built over the course of four assignments, the first two being the parser, the second two being
the web server.
The GEDCOM file is a format used to store genealogical information. Developed by the Church of
Latter Day Saints in the 80s, with the newest revision being in the late 90's. It stores the information in a
text file where each line has a level number (which tells you if that line's information belongs to an earlier
object), a tag and a value. It stores individuals and their information, like important dates and events, as well
as their family connections. It also stores families, with links to individuals within those families. It is a
seemingly simple format, but has many nuances and is hard to implement fully in practice.
The GEDCOM format is very complex (the spec is over 100 pages), so the parser doesn't fully implement the full
spec, it only can parser a small subset of the possible tags. It can do basic files and family structures, and
some of the types of individual events and information. It can also edit the files by adding individuals and then
writing it back to a file. This was compiled to a shared library and used through a foreign function interface in
Node.JS to be the back end of a web server.
The web server would allow users to upload a GEDCOM file and view basic information about it, make some simple
changes and make some queries about it. The front end was done in HTML with Bootstrap 4, with client side
Files are uploaded by the user and loaded into the database. The information is then presented on tables to the
user. They can make MySQL queries on the database, as well as use some functions in the C library to find things
like ancestors and descendants.