Dealio

This is where my journey into web development began. Dealio is a web application that helps retail buyers manage promotions from start to finish.

Date
2017
Type
Personal Project
Stack
React
Node
Express
MongoDB
Redux
Material UI
Professions.gg screenshot of Engineering levelling page

Project Purpose and Goal

Back in 2017 I was working as a retail buyer for a supermarket. The process for administering product promotions involved exchanging lots of spreadsheets between the supplier and retailer. I wanted to create a portal used by both suppliers and a retailer that would handle submission and management of promotions to save time and improve data validation.

At this time I was also really keen to pick up web development, and I had spent a few months taking courses to get to grips with the basics. However, I knew that putting this learning into practice with a real project was going to be the best way for me to pick things up, and Dealio felt like the perfect passion project to focus my effort.

  • React
  • Node
  • Express
  • MongoDB
  • Redux
  • Material UI

Tech Stack and Explanation

I chose to use React for the Dealio dashboard, as I wanted to avoid older technologies like jQuery which were already falling in popularity. React also felt more logical to pick up as a beginner, as I found coupling code and HTML with JSX and the abstraction of components was easier to mentally process than less structured Javascript/jQuery files.

I wanted the back end to be in Javascript to avoid overwhelming myself with too many new technologies, and opted to use Node, Express and MongoDB to complete the 'MERN' stack. I also chose to use Material UI as my UI library as it helped me scaffold quickly, especially in the beginning when I was less capable with CSS.

Problems Encountered

The first couple of months developing Dealio were a real baptism of fire. Progress was very slow as I struggled with basic errors like 'of undefined'. I had bad practice React state/lifecycle methods creating performance bottlenecks, and my server would regularly crash due to poor error handling. I persisted through, and with a little help from Stackoverflow, I eventually started to became comfortable with the codebase.

A feature I found particularly difficult to implement was the ability to roll back changes to promotions with versioning history. It was a tricky concept for a newbie and I refactored my database schema multiple times before I had something that worked. Redux also took a while to get my head around. To begin with I would often struggle with immutability, and also had some issues with dynamic keys as my store got more complex.

Professions.gg screenshot of Engineering levelling page

Lessons Learnt

I am proud of what I managed to achieve creating Dealio. Working on a passion project like this for the best part of a year gave me a really strong foundational knowledge of web development, which then opened the door for me to change careers into to something that I really enjoy doing. For anyone interesting in learning development, I will always recommend working on your own passion project from the ground up.

However, creating Dealio was incredibly testing at times. I was juggling it alongside a demanding professional career and would often spend all of my evenings and weekends working on it. I was lucky to have a very understanding partner who supported me along the way, but I've since also learnt how important it is to create a healthy work-life balance.