As with most of my side-projects, this one started off as a solution to my own problem.
I built it, made it scalable because why not, added billing, and published it on ProductHunt where I had exactly 3 followers.
I never expected it to reach 10 upvotes, let alone 500. I could not have imagined it ever reaching Product of the Day, but that's exactly what happened.
I had built this website with around 50 thousand pages around 3 years ago. I had always hoped that it would get indexed eventually by chance but that wasn't happening.
I went to the Google Search Console, and started requesting indexing for my pages. I thought I had cracked the problem, so the next logical step would have been to either build a Selenium script or go all-in with a headless browser automation.
As I was clicking on that "Request indexing" button happily and contemplating possible edge cases for my headless browser automation, a horrible popup appeared. I had reached the daily limit of 10 indexing requests.
Roadblock. Go through it or go around it.
So I looked for a solution and I found the official Google Indexing API.
I took the entire day to create an overview of the architecture needed for my new project based on Google's documentation; no fancy software, no Domain-Driven Development, just a ton of sketches on a few pieces of paper.
The core solution itself is really straight forward: assign a Service Account to your GSC, have it run every 24 hours with at most 200 URLs in a batch, then regularly check for updates.
Where things get kind of tricky, though, is building this thing in such a way that thousands of users communicate with Google's servers without any race conditions, networking bottlenecks, time or space complexity issues, security issues and it all needs to be fully transparent.
I chose PHP as the backend language because I've missed it. It's been a while since I last wrote something in PHP and I wanted to see how 8.x is treating me. I'm quite pleased with how the language has evolved over the years.
The proof of concept was an incredibly ugly command-line interface script that only did one thing. It sent batch requests to Google. And it worked!
No website, no SOLID principles, no test-driven development - nothing. Just a horribly beautiful working piece of software that didn't scale at all and had zero documentation. But what it did was prove there's a fix to my problem.
It obviously didn't take the whole day to think about a domain name, but that's all I did on day 3.
I went on GoDaddy, typed a few queries, and picked one that looked kind of funny. The nice thing was the domain was on sale as well, so I could justify this purchase to myself more; because, you see, like many of you - I have bought way too many domains over the years.
So "add to cart", purchase, done. I spent the rest of the day trying not to thing about whether I'd let this domain expire as well a year from now.
A little bit of context is probably required here. I've been writing software for about 15 years now. I've built many things in many different languages, and "I have a particular set of skills" - insert Taken meme here -, and a few ready-built components.
I was very jealous of my time so I ordered myself to reuse building blocks from previous projects as much as possible.
If you spend just 1 month building something, it doesn't get old yet. It still feels like fun, it still feels like play.
I had built many project before that spanned years and after a certain point you begin to feel like this thing is a black hole that will eat-up all of time and it will never be done. They say "all projects are always at most 80% done". Funny until it's not funny anymore.
Forcing yourself to keep the timeframe really short for a project is tough, but it guarantees the project will be fun.
So what do I mean by fun, here's an example: the cron task manager that spawns every minute decides which tasks to execute in that slot and then launches the appropriate threads (or processes, in some scenarios) to handle the workloads.
The fun thing here is that all tasks use something that I called "epoch" - borrowing the term from web3 -, which is nothing more than an integer between 0 and 1439, the "minute of the day".
The fun and interesting thing is that it's really difficult to really get the true minute of every single day because of: DST, time zones, leap years and random acts of God. So the solution here was to calculate the "epoch" starting from 0, using the Unix Timestamp as reference. That way there are no leaps, no gaps, and no race conditions. Isn't that nice?
I know - your definition of fun may be different, but I like the simplicity here.
I didn't publish on ProductHunt right away. I really didn't think it would make any difference since I don't have the following I've heard is necessary to have a successful launch.
After the project was done, I used it for my own websites. And it worked!
A few days had passed and I had convinced myself that nothing was truly, horribly wrong. So I published my thing on PH and went for a walk. I was notified that the launch would happen the next day at 10 AM my local time.
So the next day I refreshed the page expecting to see 0 upvotes. Shockingly though, 9 people had already voted for my tiny SaaS. One hour later there were 50 upvotes. Then 100.
The startup finished on the 3rd place, earning a badge for December 9th 2023.
Before this SaaS I had built a game engine from scratch in 2 years; I launched that on PH as well and got only 6 upvotes.
So let's recap: 2 years of work yielded 6 upvotes and 30 days yielded 500.
The conclusion here is that effort does not necessarily correlate to perceived value, I would say. What do you think?
I would love to hear your thoughts and, of course, any late votes still count - so click on that upvote button 😉.
How many sign-ups and actual paying customers did you get from your PH launch?
Thanks for sharing. I am about to launch my service, Product Hunt. On Monday. I hope I have the same level of success as you did.
I wish you all the best. Let me know when you launch - let's connect on x: @markjivko
Hey Mark, thanks for sharing your epic journey! Your hard work has already been paying off with how it just got featured on Product Hunt. Well done buddy! :D
Thank you so much!
Hi Mark
But what is the main idea of your saas? Just pushing urls to GSC? Why don't you try to understand why they are not accepted by Google? Have you generated sitemap? Do you have inner links on your pages to link each other? Have you tried to make SEO?
I just added my project to GSC about 1 month ago and already got 1.5k visitors. Also, the number of indexed pages are constantly raising.
Thanks
Requesting indexing is just one of the tools you need to grow your page, but obviously it's not the most important.
Link building and quality content are still king.
That's true!
I promote my product on ProductHunt and asked users to go here to write reviews. When there are updates to my product, such as the release of voice clones last week, I will release this launch, which brings me upvotes!
Deadlines sometimes work great. Do you have any revenue goals?
I don't have revenue goals but fingers crossed it reaches $10k MRR, right? 😂
That's a good one.
But do you know how to design? or you used a library?
I've been doing UX/UI for years but I always prefer using libraries when available.
In this case I used the Material UI framework https://mui.com/