Note: Since the release of the app, Thuisbezorgd changed how their website works and therefore Thuisbezorgd Roulette is no longer working.
To learn web development I created Thuisbezorgd Roulette. I was happy it worked. However, I didn’t imagine 32,303 other people would also use it…
The concept is simple. Due to Corona, you tend to order more food as restaurants are closed. But usually, you end up eating the same 2-3x dishes from restaurants nearby. You don’t discover new ones and the recommendation engines all suggest the same.
To solve this I build a web app that would connect to Thuisbezorgd and make a random order from a restaurant nearby.
Index
- Sending it to friends
- Do you want to be on TV?
- My server put in the work
- Show me the stats!
- How it’s made
Sending it to friends
My intention was: “Hey this sounds like a fun idea, I need to build something to learn web development anyway, let’s give it a go.”
I tried it a couple of times and was happy to see it worked. This was my first web app that actually did something useful (debatable). So I send it to some friends, shared it on social media, and called it a day. I got positive responses and was happy to see people thought it was a cool idea.
Internet entrepreneur Alexander Klöpping saw it in a group chat and posted it on his Twitter with 500k+ followers.
This was already more than I expected. One problem, my server blew up within 5 seconds.
I was hosting Thuisbezorgd Roulette on a €5 a month server… because why not, it’s a hobby project right? I quickly increased the resources of the server and everything seemed to work fine again.
Afterward the CEO of Thuisbezorgd tweeted about it! It was nice to see that he appreciated the idea.
Do you want to be on TV with your app?
The media slowly picked it up. Someone send the app to a food blog called Culy which wrote a nice article about it. The next day a journalist from RTL Editie NL called if they could make an item for it for the TV show EditieNL.
Ehh sure…? At the moment I didn’t really believe they’d actually show up. Usually, they plan 10 items, shoot 6, and broadcast 4. So to my surprise, a TV crew did show up and recorded an item.
Only 5 hours later an article went live on the front page of the website and their Facebook page. RTL Nieuws is one of the most visited news websites from the Netherlands so my traffic exploded instantly. The cat was out of the bag and now I got called by multiple publications, radio stations, and websites.
My server put in the work
At night the TV item would broadcast. I was afraid the website would go down. The plan was to spin up a load balancer and put 3 big servers behind it. Because I could pay per hour I’d just delete 2 of them right after the biggest traffic spike. But I didn’t have the time to learn and deploy a load balancer. Also, I had to change the DNS settings of my domain which could take up to 48 hours to change. I hadn’t really done this before so I had to learn quickly.
In the end, I decided the best bet was to keep the same server, without changing the config. I’d just it to its max setting. You could rent it per hour which made the $1200 a month price tag seem less scary.
To be honest I used to dunk a bit on people using AWS, Kubernetes, and serverless for small projects. But scaling servers up and down gets old pretty quick. Especially if it’s a side project. The best way to learn is to get confronted with your own ignorance I guess.
When the item got broadcasted approximately 1000 people tried to use the app at the same time. Even my specced out server had trouble with this. After 20 seconds the server was able to handle all the requests again.
Show me the stats
Thuisbezorgd Roulette got featured on TV, Radio, and in news articles online by the following publications.
So now I can add this to my website and start selling media courses. Just kidding.
I’ve always wondered how many views you’d get from media companies. Now I know and I’ll share it with you as well…
Views are a bit of a vanity metric. It’s nice… but mostly for your ego. After a while, you are just watching a counter go up for hours on end.
As you can see below it doesn’t directly relate to anything substantial. Which I also didn’t expect because people come to check out the app. There’s little incentive to care about anything else.
Medium | Extra Views |
---|---|
Personal Website | 2362 visits |
LinkedIn Post | 30.539 views |
Newsletter | 12 subscribers |
Likes and comments on social media | A lot |
Let’s just say I won’t be asked for Temptation Island VIPs anytime soon.
How it’s made
I wanted to practice Javascript so I decided to build Thuisbezorgd Roulette using Node.js with Express.js for the backend server and vanilla Javascript for the front-end. For the styling I used TailwindCSS.
The biggest challenge was scraping the restaurant and menu items from Thuisbezorgd. They don’t have a public API and because it’s a small hobby project with only a couple of users (or so I thought) it might be easiest to just scrape the page.
The website is dynamically rendered by Javascript. So I have to use a headless browser such as Google Chrome. I decided to use Puppeteer to handle this on the server. I got it working after lots of trial and error.
Of course, when I deployed the app to a server I found out that the app got blocked. Thuisbezorgd uses Cloudflare to serve assets as well as protect them from bot traffic. It probably detected that my server IP was coming from a data center instead of a residential IP address.
After… again… a lot of trial and error I found out that all the static assets on a subdomain were served a captcha. However, the HTML and embedded Javascript on the root domain did not. Probably Cloudflare protection was configured differently for the subdomain?
Anyway, I decided to just go with the HTML-only page without requesting CSS, images, and others that were getting blocked. This was enough for my purpose as the restaurant and menu items were in these files already. At this moment I had sunk more hours into than I’m comfortable disclosing so I called it a day.
Why did it go viral?
I have no idea haha. The app itself wasn’t that complex from a technical point of view, but the idea just sounded funny and easily shareable I guess. A lot of people shared it on Facebook or tagged their friends.
The lesson learned is that people don’t care how something gets on their screen as long as it elicits an emotion. So I shouldn’t overthink the technical part as long as the idea and story are fun.
What’s next?
Not much, I’ll tweak it a bit but I see it as a nice side project. I’m not turning it into a business. It was fun while it lasted. I have some other side projects lined up which I might build in the future. The reactions on it were nice but I’m also glad it all fizzled out after a week and everything is back to normal.
Anyway… back to work.
If you want to follow what I’m working on. Follow me on Twitter or subscribe to my newsletter down below.