Lessons learned from completing a 3 year old side project

Three years ago, I wanted to build an app using Redux state container to better understand and learn Redux. So I thought of building a simple expense manager instead of regular todo app, so that I can use it for my personal purpose.

I started sketching few designs and settled with a design which is very simple and easy to build. The below one was that image:

As I don’t know any backend development at that time, I went with localStorage to persist the data from the redux store. After starting the development, it was very fun to work with React and SCSS to build the static UI. I just built the UI in few days after my full time work.

Now I have to configure Redux store with actions, action creators and dispatchers. I tried my best to scaffold the minimum redux setup. But I got lots of troubles, because i was following multiple tutorials same time.

I keep on trying with Redux and as I cannot move further as I expected, I started to lose my interest to complete this project.

Then I got some new ideas, so switched to building new side projects. I forget about this for a year. By this time, I was good at Redux. So I thought of continuing the old project.

Then I completed the basic crud of adding, editing and deleting an expense with in couple of days. I felt like I completed something. But still I didn’t feel like sharing it with outside world. I wanted to add more features, managing categories, authentication, saving the data in database, responsiveness, etc.

But I don’t know backend at that time, I was just a frontend developer. I tried to learn Node JS, but I failed following any tutorial completely. Again I started to lose interest to complete this project.

Then I took a course on Node JS in Udemy. I started the learning it. But after completing the 30% of the course, I was not able to watch the remaining course due to my personal priorities at that time. Because I have to learn GraphQL for my work, so I was busy working on side projects related to GraphQL. And then my work needed Typescript, so I learned it too. By this way, the 2nd year also completed.

As days passed, after 2 and half years, I really needed a personal expense manager app for my own purpose. So i thought of integrating the backend to my existing app. By this time I was somewhat good at building rest APIs in Node JS.

So for the third time I started continuing same the project. I checked my old code, it was so outdated. All React components were written as Class based components and Context API looked very much enough for my use case. Then I planned to rewrite the Frontend and completely build the backend from scratch.

I re-wrote the frontend in Typescript, Styled Components and Context. And built the rest APIs in Node JS with express, mongoose and MongoDB after continuously spending all my weekends only on this project for 5 weeks. I really felt that I made something working. It looked like this:

Dashboard

Expense List

Expense Details

Add Expense

Add Category

Category List But still I didn’t feel like I have completed this project. I have got lot of new features to build like reading the user incoming email and post an expense automatically, saving a new expense by voice, lots of analytical graphs on available expense data, etc…

I don’t know when I will feel I am done with this side project. But today I feel like I can share it with outside world. So I have deployed it online and writing this blog post to share my lessons:

Lesson 1:

t’s okay If someone has already built your app or its available in the market. Building one for yourself feels good and proud. And it will also be a great learning.

Lesson 2:

Done is better than perfect. Don’t worry about the design and user experience at the starting stage itself. Just try to complete your project’s core functionality before your interest fades out from the project.

Lesson 3:

Procrastinating side project is okay, you will be able to build it better later. You may be able to learn new technology over the time or you will find what you’ve to learn next.

Lesson 4:

Always have multiple side projects going on. If you lost interest in any one of them, you can move your interest to the other ones.

Lesson 5:

Keep your side project running live and open source the code. You may find people coming to you for a customised version of your app with good pay.

That’s all guys, this is what I wanted to convey. Keep building your side projects. You will learn more, it may help you earn more :p. By the way, if you want check out my app, it’s live at https://spendlogs.ml and the source code is available at Github.