Skip to content
Mobile device displaying the feed page of afiye in front of a laptop device displaying the login page of afiye.

afiye

A family networking platform that centralizes your family's memories in a private space.

  • Role: Lead Developer
  • College Project
  • Sep '20 - Jun '21

Purpose

Senior design capstone project at Drexel University. This project is meant to showcase the knowledge and skills students have gained over their education as well as give them room to experiment and push themselves into new areas.

Technology at Work

  • NodeJS

  • mongoDB

  • Neo4j

Key Features

Mobile device displaying a list of family members for the afiye user Jessica Monroe.

Family First

Connect with just those that matter most to you in a private space with zero tracking.

Mobile device displaying afiye user Jessica Monroe's feed page of Memories her family has created.

Memory Feed

Easily view and share your memories with just your connected family members.

Mobile device displaying afiye user Jessica Monroe's family tree page.

Interactive Family Network

Easily view everyone connected to you and watch your family grow as more members joining the network.

Case Study

This was my first foray into a complex backend system, which presented many challenges to overcome. As the sole backend developer for this project it was my responsibility to build and maintain our database structures, development and server environments. Additionally, as lead developer I served as code master for our main repository.

In the role of backend developer I learned the importance of ensuring all data models are laid out ahead of time otherwise as the project grows more complex it can cause immense growing pains. For instance, the original scope of the project included a feature to switch from the existing "Network View" to a more traditional "Family Tree View", however, I did not effectively plan out how to map these connections at the start of the project. Because of the complexity needed to refactor the existing model, the team opted to cut this feature in favor of polishing the project as a whole.

Building the database structures allowed me to test and learn new technologies and techniques. Neo4j was an entirely new concept, but not entirely alien. Using a graph database to map family relationships proved to be a very important decision in developing the project as it made it incredibly easy to scale and map relationships between even distant family members. Having built in functions for just that purpose streamlined the prototyping and development process. For the purposes of this project, mongoDB served as our user and post database which integrated with NodeJS and various authentication packages seamlessly. While the more advanced features of mongoDB were not leveraged in this project, the ease of integration and the speed of it made it the correct choice to utilize. While it felt odd to be using two database technologies simultaneously for the first time, using each of them proved to be the right tool for the job and everything was able to integrate through our NodeJS backend.

Ultimately, the project did not meet all of the team's expectations. We had originally planned to build a much more complex system, but as time went on it became clear that it was not possible for our small team of five plus an outsourced illustrator. Strategically cutting features to meet our deadline allowed us to arrive at the final version we did. It was far from a perfect system and product, but it was something that we could be proud of our accomplishments. Given the chance to return to the start of the project, we would have benefitted from focusing on a single core feature and building minor features around that as the project evolved rather than establishing several core pillar features and aiming to build all of them in a limited time.

Let's get in Touch

Do you have a project that I would be a good fit for? Interested in me joining your team? Or just want to say hi?