Inspiration

Roots and Rings was inspired from a simple desire: to strengthen family bonds and preserve cherished memories. It's a bridge between generations, ensuring that family stories endure and continue to grow.

What it does

Roots and Rings allows families to record their family tree going back generations. Family members can create memories which contains an title, description, and a image by clicking "Add Memories". Memories can associate with multiple family members who share that memory. Users can view Memories through the "Memories" page, which displays a feed of all memories for the family. For a filtered view, you can click on a person either by clicking on them in the tree or on their name in the memory feed. When viewing a person, you'll see information about that person such as their birthday and only the memory associated to them. To add people to the family tree, click "Add Family Member", which will take you to a form where you can add their name, birthday, gender, and relationships. More family relationships can be added through the "Add Relationship" page.

How we built it

Roots and Rings uses a react frontend leveraging the GoJS library for the tree display. We use a Flask backend and Postgres database. We containerized all components with Docker for an easy setup and setup a Nginx proxy to handle communication.

Challenges we ran into

A major challenge we ran into was finding and implementing a library for displaying the family tree. More than once, we had to throw out a library because of poor documentation or bugs. We finally found GoJS which had everything we needed, but that still had a complex setup and a dense documentation to search through. Another challenge we ran into was slow deployment times for our Dockerized application, so any changes we made to the frontend took several minutes to display the change. We worked to address this by using hard-coded previous responses from the backend when modifying the style of the frontend to allow for faster compile times.

Accomplishments that we're proud of

We are proud of finishing a fully functional application in under a day. In our last hackathon as a group, due to scope creep and issues finding packages, we failed to finish our application. Additionally, we are proud that we built this software together as a group of friends and roommates at a NC State-hosted hackathon.

What we learned

We learned how to pace our development and choose an idea that has good scope and merit. We also learned more about React as a group since most of us lacked experience with that framework. Faced with the challenge of developing a full-stack application in under a day, we were able to effectively develop our time and project management skills

What's next for Roots & Rings

We would like to expand upon this project in the near future to make it into a fully functional, usable, local web application. Some features that we had thought about but did not have time to implement were allowing file upload of non-images to memories and network configuration so that the application can be run from a family member's house and be accessed outside the network without needing to change their router settings manually. Additionally, we would like to improve design and organization of the family tree UI.

Share this project:

Updates