Mark Lynch


Blog


How I created a Minimum Viable Product for free (almost)


I wanted to validate market fit for a SAAS product that I wanted to create quickly with as little cost as possible. I selfishly wanted to create Prop-Man.ca to allow me to find someone in my neighborhood to mow my lawn for me during the times in the summer when I am too busy to do so myself. By creating the MVP, I am able to determine if others are looking for the same product as myself. Once product market fit is identified, I'll iteratively add functionality to add value.

Before writing any code, some planning fist had to be done. I determined that the MVP would include authentication for the service providers to log in. It would also support a try before you buy billing model. This will allow lawn care service providers to trial the product before purchasing a monthly membership. Once they are signed up, the application allows the service providers to post an ad offering their services along with their postal code to identify their location. Finally It would also include a page for homeowners to see a map of their location along with listings of lawn care providers that are close to their house.

Once I had decided on the functionality that I wanted built, I began researching the tools that I would use to build the product. Since I was already familiar with React, and I wanted a scalable application with the ability to build fast, I decided to go with the MERN stack (MongoDB, ExpressJS, ReactJS, and Node.js).

With the Software stack figured out, I decided that I would deploy my application to Heroku which is a Platform As A Service (PAAS). Using Heroku allows me to focus on the development without having to worry about the hardware infrastructure. They also have a free tier which allows an MVP to be launched without cost.

In the spirit of getting the MVP developed as quickly as possible, I am always on the lookout for ways to minimize my effort. Setting up Authentication (sign up, login, email confirmation and password reset functionality) and Billing for my membership based site are two items which I identified as being necessary for my MVP, but would take a lot of time to complete if developed from scratch. Luckily I came across Outseta which provides this functionality(and much more). Best of all, it is easy to integrate with any site and is free (up to 25 contacts).

I signed up for Google Cloud Platform and using the Google Developer Console I enabled the google maps and geocoding APIs. The Google geocoding API allows me to find the latitude and longitude coordinates of the postal codes that my customers provide when they create their ads. These coordinates and the details of the advertisements are then saved to my Mongo Database which I was able to set up for free at MongoDB.com . Using the google maps API, I am able to show maps to home owners which include markers that show the locations of the lawn care providers in their neighborhood.

I could have waited to buy a domain and just went with the website address that Heroku deploys your application to by default. However, I wanted to establish trust, look professional and to showcase that Prop-Man.ca is a Canadian company, therefore I decided to purchase a domain name. This is my only cost with the whole setup and is still minimal at $9.99/year. I decided to go with Web Hosting Canada because they had a sale on while I was looking into purchasing a domain.

I went with CloudFlare as my DNS provider. As Heroku doesn't provide SSL for it's free tier, CloudFlare can act as a bridge for SSL for free between the client browser and CloudFlare. Note - This only encrypts the data between the client and CloudFlare, but not the data between CloudFlare and the server. At least this protects the most vulnerable side (client side), but I would highly recommend spending 7 dollars a month for paid dynos with Heroku which will provide you with a SSL certificate so that you can have full end-to-end encryption *.

To go along with the professional image and to allow customer feedback, I wanted to set up an @prop-man.ca email address. After some research, I discovered that Zoho Mail allows you to create free domain email addresses. They have easy to follow steps on how to do so, and after a short period of time, [email protected] was set up.

To manage my project, I am using Azure DevOps. It allows for git-based source control, creation of wikis, and keeping track of tasks and bugs. It helps me plan ahead and prioritize tasks to ensure that I am working on what's most important and provides the most value first.

Note - It appears that Google Firebase allows free hosting and Custom Domain name with SSL, for up to a certain amount of traffic before charging. I may investigate using Firebase instead of Heroku at some point to allow for end to end SSL encryption for free.

Read more blog posts