Building a product in a week (Part 1)
Too tired to read? Listen to this article insted:
I woke up on Monday with a strange idea. After working on micro-products (I built two chrome extensions in less than an hour each) and small products (products whose development lasted less than a day), I wanted to build and release something new. But I didn't want it to take me a year, as the last time. That's when I decided I wanted to build something, in a week. The only thing I needed was an idea.
Day 1 - Read or listen?
I started thinking about the maker community, and how people say the maker's market (makers building for other makers) is crowded. I was browsing the Makers Kitchen community when someone posted an article they'd just wrote.
I spent five minutes reading it. It was a good article. But then, someone posted another one. And I'm sure it was also a good article, but I didn't have the time to read it.
And I realized something. There's new awesome content out every day, but we can't multitask reading something. But there's another content consumption method: audio. And we can do other things while listening to audio.
This is one of the factors that has lead to the increasing popularity of podcasts. You don't need to stare at your screen to consume content. Instead, you can walk your dog or do the dishes, or any other activity that doesn't require listening to something.
And I asked myself, wouldn't it be awesome to have a podcast feed for every article out there? Or better, wouldn't it be awesome if there was a tool that automatically generated audio versions of articles? And that's where Blogcast was born. I bought the domain blogcast.host and went to bed.
Day 2 - Validation
I started by getting a feel on transcribing articles manually, to figure out how many hurdles was my product removing. I had to first get the text from the article, then call a text-to-speech API (that billed per-character), retry the call a few times to check progress and then download the audio and upload it to a publicly-accessible server. There was definitely room for improvement.
I also looked if someone else had already solved the problem. There are already a few apps that provide the same functionality, but all of them were focused on the readers, so I decided to take a different stand: I would focus on the authors and publishers, helping them increase readership (or listenership) by allowing them to provide audio versions of their articles next to the words.
It was finally time to code. I created a new Laravel app and started typing in my editor. A few hours later, I had managed to make an artisan command that generated audio versions or articles.
I used my command to transcribe articles from some friends and asked them for feedback, and they loved it.
But in order for others to use it, I needed more than a command. I needed a platform.
Day 3 - Blogcast all the things!
This was probably my most productive day, and it focused entirely on coding. I started by abstracting the command functionality to a class I could use through the application. Then, I did some database work to persist transcribed articles to the database and made the process async (in the PHP world, this can be achieved by using queue workers to perform operations outside the request-response lifecycle).
It was time to focus on the user-facing part of the application. I designed the authentication views and a very simple dashboard using Tailwind CSS. I also customized a template I found for the landing (I'd normally design the landing from scratch, but my time constraints didn't allow it this time) and wrote some copy for it.
Finally, I worked on billing. I wanted to have two plans: a periodic subscription and a pay-as-you-go subscription but wanted the user to register with its credit card. This turned out to be a little more difficult than expected, but after an hour of fiddling, I managed to get it right.
Day 4 - Barely Backend
I don't think I touched the backend except to set up some routes for the dashboard. This day was dedicated exclusively to making the dashboard work and look good on all screens. I designed a nice table with options to download or embed the audio, and also added an option to gift the audio to another person (I'll talk more about this feature in a moment). Making all of these UI elements took more work than you'd think of, so I ran out of time just after finishing.
Day 5 - Gift-Driven Marketing
While building a product, you have to build interest and get people excited about it. This is already difficult when building a full-fledged product, but the short timeframe I had made it even more difficult.
Remember the gift feature? It allows you to share a modified version of the landing with an embed of an article. I used it to let others know about Blogcast by gifting audio versions of their articles.
This got a great reaction, got people interested in Blogcast and, most importantly, made people happy 😁
I also spent some time making a settings page, allowing users to change credentials, update credit card details, change plan and view invoices.