afiye
A family networking platform that centralizes your family's memories in a private space.
Erik Martus
A family networking platform that centralizes your family's memories in a private space.
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.
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.
This project was completed as part of a team, please check out their work as well.
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?