Awesome tools to use in personal projects
A developer who doesn't work on personal projects isn't a true developer! Just kidding! But working on small side projects is an awesome way to solidify and improve our craft. It is both practice and exploration, this is the best opportunity for you to pick up on something others might not know about! In this blog post, I will walk through some of my favourite tools and what I feel is missing in my toolbox.
I often have crazy product or app ideas, most of which I don't carry through with. Why? It takes too much time to code up and then there's the maintenance later on. In the back of my mind, I'm always looking for awesome products that could solve these problems for me. Luckily over the years, I have found many of them, and each time I find a new tool that makes the process smoother I find myself finishing more products.
What I have found so far
The best part about all the following tools is that they all have a free tier. If you are planning to use them for personal use, it's extremely unlikely to go over the allowance. If you do end up going over, then your project must be super successful, in which case, congrats!
Best hosting & CI/CD tool - Netlify
I enjoy learning about DevOps, but I never intend to become a DevOps engineer. I enjoy creating and building products, DevOps is too far from the customer for my liking. I also found CI/CD of any personal projects to be a pain point, it takes way too much time to set up that's not even mentioning the cost of running and maintaining your CI/CD solution. A few years ago, I found out about Netlify. It opens the door to many of my projects. This blog is one of them, it makes many of the challenges around hosting and deploying so easy. A few clicks later I can start working on my new project.
Development tools - CodeSandbox, Gitpod, VS Code
Isn't it annoying when you just want to brain dump some code and you have to go through all of the project setups? I started using CodeSandbox for any small or app prototypes. All it takes is selecting a template project to get started, then I can just jump in and start coding right in my browser. It is amazing!
Then there are some established projects, making small changes requires clone projects from Github, etc. It is so much hassle and I'd just postpone it time and again. Recently I found this tool called Gitpod which solves this exact problem, it could check out any repository and allow you to work on it straight from your browser. You could run terminal commands, so it is possible to build your projects as if you are developing on your laptop. Finally for any serious projects I normally would git clone the repository on to my laptop and work on it with VS Code. I have a list of extensions which empowers my development experience. But I tend to only use VS Code for projects I know I'll be working on for a long time.
I have written about VS Code keyboard shortcuts since all three tools mentioned in this section is based on VS Code, so most of these keyboard shortcuts can be used with all three products!
CMS - Contentful
For a long time, I struggle to find an effective way of building my blog. Until I found out about Contentful which is a headless CMS. It is perfect for serving data for my blog! I have yet to find another use case to use it in my other personal projects. There are also many other headless CMS out there, I just happened to have picked Contentful when it was the most popular. It has been a couple of years, there could well have been newer and better headless CMS out there!
What is still missing - user data storage
All the above products have been a godsend, they have made my development process so much easier. Since I tend to be the only one working on my personal projects, so their tools make it easy to get started on an idea and release something in a few days.
However, I am still searching for one more thing. There are tones of apps I want to create that could do with some kind of storage in a server (instead of storing in Local Storage). I have created several apps that utilise Local Storage so I have nothing against it. I just find it annoying that all the data were unavailable when I switch between devices.
I would love for there to be a product that could:
- Store individual user's data
- Have some kind of authentication in place so only the user themselves could access their data (maybe me as the developer as well for tech support). It would be ideal if this product could allow client-side direct access, without the need for a backend server doing data validation and authentication.
- Easy to set up, like have a data store ready with a few clicks
- A free tier, yes I'm cheap like that! But seriously, I don't want to be paying for tens and hundreds of personal projects. They will have minimal usage anyway, so a free tier would be amazing.
I have look around and there isn't a product that could do the above well. The best one I have found so far is Google's Firebase. It almost nails all of the above points, with the only exception being authentication. I found it very difficult (and confusing might I add) to set data store rules.
I don't want to spin up a new database and create a bunch of APIs every time I have created a small app. This data storage problem is the last one to solve for me. If anyone knows any products I am not aware of, please get in touch I would love to know!