My first post here, I hope it’s alright to publish such content on Saturdays. If not, sorry in advance.
Here it is: https://pingr.io
I want to tell you my long story, but I’m pretty sure not everyone likes long reads, so TLDR first
What it is
Basically, it checks that your site is online. If it’s not it notifies you via different channels, like email/slack/Telegram/SMS/webhooks.
– VueJS 2 for the frontend
– Laravel 7 for the backend
– MySQL as database
– Redis for queues
– 7 VPS from Digital Ocean
Now, the long story
I’ve been building my product from September 2019 to May 2020. Then I got burned out, and returned to working on it in August. I spent more than 800 hours, working at cafes, restaurants, home, work, gym, Starbucks, furniture shop, at parents. I worked at nights, in the morning, during the day. I even lost 8 kg of weight 😀
Spent up to 1000$ in total on servers and services.
While others have built the same thing in ~3-5 weeks and spent no money. How come?
How I came up with the idea
I’ve been always looking for ways to make some money 🙂 However, not every way suits me. I don’t want to open a store or sell fridges. Everyone has some preferences, some weak sides, and strong sides. Something they love and something they hate.
So I’m in love with making a product which looks good and pleasant to use. I’m in love with interfaces, how they look, and how feel. I’m the one who gets irritated when the text margin is 7px but it should be 8px. But somehow it turned out that I’m not a designer, I’m a developer who loves design.
Once I was talking in a chat and someone mentioned https://uptimerobot.com/. But I went to the site and was shocked: what an ugly UI it had. The idea thought was super clear and looked easy to implement.
So I immediately liked the idea to implement something I understand and something which can be done better. Also, at my full-time job I’m not always able to implement things how I see them. Besides I’m not the only person who affects the product. So I really wanted to make something.
Yet another uptime monitoring? Why?
Because why should I spent time making some vague things which I should validate first and there will be a big risk they won’t be used by others? In my opinion, there are two ways: you build something unique and take the high risk (as well as the probability of high success), or you build something which is validated and used by others, with low risk (and probably not that high success).
I also wanted to make something which is better, which I’m responsible for and which I understand.
Why it took so long?
First of all, let me say that I’m not claiming I’m a good specialist, even though I worked in IT for quite a long time. I think that the experience you get in IT is never enough and you always learn. I learned in every project I worked with, all the time.
At the first glance, the task itself looks easy: you just need to ping the site, basically, send HTTP request and check if the request was successful.
But the more I worked the more I came across lots of pitfalls, lots of things which are not obvious.
How do you ping 1000 URLs in a minute from many locations and put all this in a database, calculate all these indexes like average response time, uptime etc? In a couple of days, you have like 2 million checks in the database. How long should I store them? A year? Will I end up with billions of rows?
How to maintain many servers? What if something goes wrong with one of them? How to fix all the CPU/Memory issues, which happens occasionally and you cannot easily reproduce this?
How capable the server is, how much checks it may perform per minute? Did you know that server in India makes fewer checks than in New York, because the Internet connection is slow in India?
Should I notify users if the site goes down? Of course, I should. If it goes down from one server or multiple? How should I notify them? Which server should notify them?
I spent a lot of time working on the UI. Like, really a lot.
Here is some history of changing the UI.
First Screen (Monitors list)
Removed some noise
Adding a new monitor
Ugly complex form
One input only
Icons take all user attention
All in one place
Again, everything on one page
Separated in tabs
Btw, Here is the places I worked at https://firstname.lastname@example.org/places-i-work-at-on-my-side-project-c7ae5d30c7a9 🙂
If you have any questions or want to chat DM me here https://twitter.com/vponamariov