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.
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.
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.