How I created a MVP in 1 week for $10 having a full-time job
A story about how I managed to create a MVP with almost no (maintaince) costs having a 40 hours job and learn from it in just 1 week: Simple Pixel.
Some background
For a few months I have been working in a multinational company where I am a software engineer. I must admit, the job is great, people are great, the manager is great but still I don’t like the idea to be bound to a place and a company were you being told what to do and how to do it and getting paid per hour. One of my goals for 2019 is to be independent from all of these things.
I know if I want to achieve this goal, I must learn how to make money while I am sleeping and this will be hard and perhaps impossible. But as Dutch say: Niet geschoten is altijd mis, which kind of means nothing ventured, nothing gained.
The Minimum Valuable Product
Enough about me, lets talk about the MVP.
I must admit I am not a creative person which has new idea’s every single hour. So sometimes I just scan the internet to see what other people create and what idea’s are already validated. There are actually 2 sites which I visite every day for new ideas. One is Producthunt, other is Hackernews.
Personally I think that e-marketing will keep growing as more products and services are bought over the internet. So I wanted to create something that has something to do with e-marketing. Some weeks ago I came across a product which is called PixelMe. It is an url shortener which creates a proxy page where the tracking pixels are placed. I went looking for alternatives to see if this kind of product has competition and if so, how marketers are using it (by watching youtube videos). It seems to me it is being used by some decent amount of marketers so there is a market. One other thing that I did found is that all of the services are in my view over-priced. In the end I did set a goal for myself to (clone) create a MVP which shortens url’s and places a fb/google analytics tracking pixel in the proxy page and it must be initially free to use. And one other constraint: it must be fully production ready in 2 weeks.
The Tech Stack
Back-end
I am big fan of serverless, as Coca Cola states: “The Serverless Framework is a core component of The Coca-Cola Company’s initiative to reduce IT operational costs and deploy services faster.”
Which helps me with my constraints of releasing the product fast and having almost no cost, thanks to the free tiers. However as you might think, I am not using AWS lambda but Google Cloud Functions. This choice has been made because I have never worked before with AWS and I didn’t have time to learn it. I also think Google Cloud Functions are more out of the box which gives more time on building the MVP instead of spending time on the configuration and discovering features.
Currently there is only 1 cloud functions which is a express.js app which has 2 routes. One route is to convert an url to an short url, other is to generate a proxy page and serve it to the user. As persistent storage I am using Firestore which works great with cloud functions and also has a free tier. One drawback of Firestore is read performance and as far as I know there are far better alternatives for having higher read speed, which is kind of important for serving fast proxy pages.
In the end using the firebase free tier, the total costs are ZERO. I also don’t need to manage any infrastructure or have any security concerns which is a great win when you having a time limit. Creating back-end probably took me at max 6 hours of work.
Front-end
Most of my time I spend on creating the front-end. At start I wanted to use a NextJS framework to create a front-end. I spent quite some time with setting up the project to work with cloud functions to have SSR web app. However in the end I realised that I spent to much time on creating something which wasn’t needed for the MVP. So I actually wasted some time but atleast I learned something from it: Don’t follow the hype, be practical and use the tools that will get you asap to have a decent MVP. Next I found a site which provides free HTML templates which are almost epic: https://cruip.com/. I must admit, the templates are looking great, one drawback of them is that performance wise a lot of improvements can be made. Thus many items were stripped or were improved to have better loading performance and better first time to interaction (see https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fspxl.me%2F). All the javascript that was needed for the MVP to work was written in vanilla javascript, without any fancy frameworks.
For hosting I am using Firebase Hosting which again has a free tier and has one of the best connection latencies (see https://performance.sucuri.net/domain/spxl.me) compared to alternatives (github pages, etc).
In the end, the site costs are again ZERO. The website currently contains one simple html page with a small vanilla javascript file. The price of the domain was $10 for a year. The time spend on the front-end was more like 3 times the time spend on the backend so somewhere between 15–20 hours, which could be far lower if I didn’t go with NextJS.
Summary
One of my goals of building this MVP was to create something quick without focussing and spending to much time on technology which is being used to achieve the goal. As many times I again kind of fell in the same trap of trying to use new technology which is far to complex for the MVP. However I am proud of releasing a simple product in a short time span. I know that I probably just made a bad clone of existing url shorteners which provide pixel tracking abilities however it is still better to create and release something than do nothing. I managed to create full product in just 1 week which can scale well and have very low maintenance cost. Even if I am the only one who is going to use this product for online marketing, it is still far cheaper than having an external service doing it. So for me it is a win win anyway. Feel free to try out my (clone) product: https://spxl.me/l/UN3cK.
Thanks for reading and feel free to ask me any question. I also appreciate suggestions for improvements or other ideas.