Ohio University Computer Science Fall 2026
Contributors: Kai Battistoni, Joey Ruffing, Ethan Claybourn, Abram Eastham, Chayse Collins
This C++ & JS webapp allows users to intuitively track their lineage and familial relationships visually.
Compile with command : make clean && make
Run with command : ./family_tree.prog [optional: port, default is 8080]
Example : ./family_tree.prog 12345 to start a webserver on port 12345.
To use the local browser interface, run the server and open
http://127.0.0.1:8080 (do not open client/index.html as a file).
The interface reads and updates the C++ person objects directly.
The map initializes empty. Use the plus button to add the first person, then select that person to edit them, or add a sibling, parent, child, or spouse branch.
Birthday inputs and gender are optional; when provided, the value year of birth is displayed beneath each person, and gender defines sphere color.
The graph uses connected family systems with parent-centered child orbits.
Use the 'Save map' button to create a named .save file. If one already exists, it will prompt you to load it upon accessing the webapp.
The person editor allows individuals' relationships and data to be edited manually.
Use the add button below the graph to create a disconnected person.
FamilyTree provides plaintext persistence through save("treename") and load("treename"), which use
treename.save. Changes are otherwise held in memory until the server stops.
As of commit #5e9e111 , Saves now include relative position vectors, which means loading existing files is much more visually stable than before.