Project Pollidify

Overview

After learning the MERN stack (MongoDB, Express.js, React.js, & Node.js), my group members and I came up with an idea for a polling web application. It would allow users to create and share polls world-wide… publicly and anonymously. As we began implementing features, we quickly realized how difficult NoSQL databases were when it comes to relational data. However, we managed to create a simple, yet very important feature – auto deleting polls after a certain time it has been expired along with all data depending on the poll.

My role in the project was involved in the backend and front-end, but I did lead the front-end design role. The MERN stack had a huge learning curve, but having the tasks split among 2 other developers helped achieve our goals!

Note: This project was taken offline when Heroku made changes to their Free tier. Currently, I do not have a plan to bring this project back online, but I am leaving all of my lessons learned and source code up for viewing!

Challenges & Solutions

Challenges

  • ExpressJS and MongoDB
  • Updating the UI Design

ExpressJS and MongoDB

NoSQL databases have an interesting structure. Having only experienced PostgreSQL, MongoDB was slightly confusing at first, but the more confusing part was using ExpressJS. Building a REST API that was able to communicate with the front-end of our application took a lot of documentation reading, and a lot of group troubleshooting, however, the more we kept expanding our API, the easier we were able to write new routes and endpoints.

Updating the UI Design

After the first iteration of the project, our design was not looking coherent, and it was already outdated. Our instructor told us we had to update how it looked. Pages were looking completely different from one another, and this was mainly due because during the first iteration, the developer that finished the task from the backend to the frontend first, was the one that designed that page or section.

This turned out to be the worst workflow for the code, as we did not really plan out our roles, and a specific programming pattern. So, as we were making other updates to our backend algorithms, I took the lead on the front-end design, and cleaned it up.

During this process, I had to restructure most of the front-end design. I had to move queries from one component to the next, create new components, and split components, all with the main purpose to decouple one component from the next, because as soon as I made the first few updates, the whole application crashed, and I had to revert to a version of the code that worked. Luckily, Git did save me, and I was able to fix what was breaking the application.

At the end of the project, our instructor was happier with our design, and the overall look and feel of Pollidify had been modernized.