How I used existing technologies to build a 7-day side Software project.
Today technology and “everything as a service” makes it easier and faster than ever to build products. In this article, I wanna share the “leverage what already exists” philosophy, by telling you the story of a 7 days side software project — that even made some recurring revenues for the past few months.
Back in April 2018, I launched a product Leadly, the first application that I intended to sell. Leadly was a landing page app working inside Facebook, which allowed you to generate leads, get emails and send notifications to your leads directly through Facebook notifications… pretty cool stuff.
But after 2 months and the unexpected Cambridge Analytica data scandal, Facebook decided to reinforce its policy. And because my app was using the “game” features without being a proper game, Facebook simply removed it.
Note to myself (and the tens of companies that closed after the scandal): not a good idea to build a product 100% depending on an external platform.
At that point, I wasn’t ready to spend 3 more months creating a new product, but I actually enjoyed creating stuff while traveling as a Digital Nomad.
Randomly browsing new products on marketplaces, I noticed a “photo stock package” that had been sold for $30… and was surprised to see that thousands of people were paying to access “random pictures in zip files” hosted on dropbox…
Well, the sales pitch was right about one thing: free pictures with commercial rights are very limited, and your dream picture on Shutterstock can sometimes cost up to $10.
But still… buying zip files? So inconvenient to find the images you want, right?
So I thought, “If people can buy images in zip files for $30, let’s make it greater. Let’s improve it and build a real media library product.”
I bought the photo stock with resale rights and started to build a product.
Here comes the interesting story. Now that I had the pictures, I had to make a front-end gallery, a search engine, to tag the images in order to make the search relevant (and I didn’t want to tag 50k images manually by myself), to store everything into a huge yet powerful database, and finally add some image editing and filters features.
Coding everything by myself, tagging all the images and so on would probably take months.
So, how could I build a great and reliable product, as fast as possible leveraging already existing technologies?
Yet, one of the big lessons I had learned building personal stuff and working as a tech engineer for the last few years, is that you should avoid as much as possible building something from scratch.
In today’s tech world, there are so many existing tools that make it so easy to build a great product by saving yourself tons of time.
And I’m not solely talking about frameworks or libraries: I’m actually pretty convinced that most of the tools and features that you need already exists somewhere out there, either as an API, an Amazon Web Service, on a GitHub repository, or sometimes even as a $30 script on Codecanyon. Take what you need, or find inspiration, and build on the top of that.
At least when building an MVP or the first few versions of a product, finding the balance between existing tools and things that you may have to build all by yourself is probably the key. The second being to “solve a problem that really matters”. (Which I wasn’t really doing here, but anyway, we might talk about it later… )
Well sure, if you grow, you may have to rewrite some of your code. But it might take some time to get there!
Back to my story, I started to look for scripts, hosting platforms, and APIs to build my solution.
As a frontend media library, I found a great script on Codecanyon. I just made some fixes and modifications in the code, and my frontend was up and running.
I then found an image editing script, that I turned into a module for my app. After 2 days, my script was ready to browse and edit images, and was even providing some “Instagram-like” filters.
To store my 50k high-quality images, I chose to go with Amazon S3, a great, reliable, and affordable storage service.
Because of the irregular number of tags that an image could have, and to retrieve results when searching by tags as fast as possible, I choose to go with MongoDB over MySQL.
It’s important to know that with a large number of rows to browse, relational databases like MySQL can get pretty low if it has to join tables when searching images by tags.
(NB : If I had to pick a tech to fully optimize my built-in search engine, I would probably go with Elasticsearch)
Now that my solution was up and running from back to front, I had to find a way to tag all my images without doing everything manually. If I had to spend 30 seconds per image, tagging all my databases would have taken 415 hours.
My good friend Google suggested me an amazing API-based image recognition API called Imagga, to easily tag all my images. I was actually really impressed by the accuracy of the service.
So, I just wrote a quick script to browse all my images and tag them with the API, let it run for a few hours at night-time, and it was done.
My product was ready.
It took me one more day to write and design a sale page for that product, and I started to sell it on affiliate platforms like ClickBank and 1TPE. (Well, actually people were selling it for me in exchange for a commission).
After 7 days, I had a nice and clean product, that started to generate me a few hundreds of euros per month.
What I learned from building that product?
Aside from the Make Money Online part (which obviously didn’t make me rich), what I wanted to share through that story is how easy it is to use existing technology to build products.
In today’s “everything as a service” world, there are thousands of great web services or APIs, to help you building whatever you want to build. I even recently discovered cyclr.com, an API for APIs #APInception. And keep discovering new ones almost every day.
Now, we need to find a problem that matters, and build great solutions!