π If you would like to see more in-depth content on the end-to-end process of building a micro SaaS with a basic automated deployment process using Laravel reach out to me! π₯
In recent months it has been a pleasure to speak with new developers starting their remote journey.
One common theme that keeps coming up is how to get work, how to stand out from the crowd, how to get someone to take you seriously.
It is overwhelming, to even know where to start.
Starting your career, you will feel overwhelmed, there is no clear method to the chaos.
My recommendation is always to start to create a professional website, create a consistent narrative between communication channels, like LinkedIn, and create/contribute to projects that you can attach your name too.
All prospective employers just need to know that you are capable of creating a product and delivering.
Be empathetic to your prospective client or employer they are likely to be in a harder position than you. There is a higher risk connected to early hiring decisions, and if managed incorrectly there is the potential significantly hurt business.
Architecting and delivering on your own projects can be beneficial to clearly prove your value to the outside world, you'll have complete ownership.
If there is a problem that you feel passionate about it is easier to dig deep and find the motivation to finish. There is always a moment in every project where there feels like a wall of doubt in front of you, where you'll question yourself if the work is really worth it.
If you are solving a problem you care about, that you would actually use, start to build.
Below is one such product of mine, I hope it provides insight into my thought process and highlights the elements you'll need for a simple MVP.
Remember the MVP isn't just about the code.
The product is also the landing page, the documentation, support, and anything else you can do to make the lives of your customers easier.
Without support, software would cease to exist.
Photo by Neil Thomas / Unsplash
Introducing Safe Streaming
Safe stream is a tool that provides context-free guidance warnings of explicit content present in movies and TV shows in a standardised format.
We build tools that enable streaming services to integrate aggregated warnings in a single place. To empower their customers to check if there is damaging content at an individual level.
To give all content consumers a safe choice before they click play.
Our big aim is to provide these services to big streaming services such as Netflix and Amazon Prime. This data is encouraged used in a completely white-labeled fashion to meet with the design guidelines of a given brand.
Any developer can start using the API for free, the documentation is comprehensive.
The problem
Every one of us has a personal history, some of us have been through trauma in our lives and there could be particular issues present in content that we want to avoid.
There is a range of websites and blogs which provide such information, some of these include.
- Common Sense Media
- Kids in Mind
- Unconsenting Media
- IMDB, parents guide
- Does the dog die
- Parent Previews
In addition to this, there are many blogs that provide such information but each site tends to skew for content warnings for a given type, sometimes the warnings miss the mark, sometimes there are conflicts.
As a consumer you need to visit multiple sites to get a clear view, to understand the issues that could affect you to make a safe choice. Imagine doing this for every movie, TV show, or at a granular level episode.
The big problem is in some cases content warnings are written as a generic form, details can be missed or overlooked, for an individual, the details matter and sometimes the context of a situation.
An individual should be able to make a choice, with evidence in front of them without needing to waste time checking that content is safe.
The Safe Streaming system collects and aggregates this data from multiple sources with the goal of reducing bias and providing a neutral perspective.
Photo by Robert Bye / Unsplash
The process of building the SaaS
The core of the product is data, the system needs current content guidance data to be useful.
In simple terms this of the overview of what the service does, collect and deliver data:
- Collect, parse, format, and merge data.
- Provide a documented API to access the data.
- A portal to access the requests and history (a cherry on top).
As such, I began with the process of scraping data from 3 of the sources as listed above, one of which I used Unconsenting Media that provides a CSV which is open to use. As all of the sources had a different format the difficulty came from merging all of the films together that had the same name and year.
The process of data retrieval and standardised formatting took the longest time for the entire project.
In addition all of the ratings from each source where aggregated and averaged into a consistent format out of 10, in this case, this is the ratings for Knives Out on Kids in Mind and Common Sense Media.
Web scraping of sources becomes much easier when plucking the CSS selector using the web inspector on modern browsers. A scraper needs to be modified to fit all of the edge cases that could occur, even when a template used to show review information isn't always completely standardised.
The gathering of the data was the most complex part of the project, the other components were relatively trivial with the development of a couple of API routes and developing a free tier for prospective users.
The focus the entire time is to spend the minimal effort writing code and using tooling to hit the ground running.
Putting everything together these are the main items of the product:
- A landing page focusing on our target market with hidden landing pages to focus on a single client, using Landen.
- The safe stream API with a limited free tier, Laravel & Quick Admin Panel.
- The portal that enables developers to check limits, track what content guidance has been queried with export functionality.
- Documentation for the API with guidelines using LaRecipe, a Laravel library, and Postman documentation, a standardised tool for developers.
The infrastructure and continuous deployment
Part of this project was finding an excuse to justify the price of paying my own personal infrastructure. It wouldn't be a huge monthly cost but otherwise, it would have been wasteful.
There are 2 elements for the infrastructure.
Laravel Forge is a service that helps with the automatic provision and management of servers, the time savings and cost compared to other solutions like AWS is incredible.
On the lowest paid tier and coupled with Digital Ocean you can start with a single server (droplet) and deploy as many Laravel, HTML, and WordPress applications as you wish. For developers that have an itch to share their work and create side projects it really is a no brainer.
Don't even start to worry about scale, don't worry about AWS or Google Cloud until you have over 100k monthly users in your database. Focus on the product, focus on value creation.
Imagine being able to reduce the amount your time dealing with servers and focus on building your application. To get a product out to test sooner, and to lower the barrier to entry is a cost worth paying.
Get a deeper understanding of Forge and the features that are on offer take a look at this video course from Laracasts.
Timeframes building the product
Below is the task overview of the project, in different stages of development with some rough time estimates. The largest portion of time was preparation, in particular, the gathering and successful aggregation of data.
I hope this gives you an understanding of the technical steps to take to get an MVP project from concept to completion. I am conservatively estimating that 10-15% of the project timeframe ended up being wasted effort. The earlier these experiments are conducted and direction pivoted the less impact you'll experience in the medium to long term.
Concept
- Initial landing page creation using Landen (2-3 hours)
- Research and purchase of the domain name (1/2 hour)
- Explored options for migrating the landing page with Laravel Spark, as it comes with Stripe integration (2 hours)
- Experimentation using the IMDB data set for importing all movies as a starting point, then pivoted as the approach wasn't effective. (1-2 days)
Technical preparation
- Writing, modifying and running web scrapers for 2 sources (2 x 1 day)
- Importing and formatting of CSV files (1/2 day)
- Formatting of all data to aggregate into the common movies by year, plus logic to handle edge cases. Most of the raw and aggregated data were stored as seeds at this stage to provide experimentation. (2-3 days)
Implementation
- Using QuickAdminPanel to generate a scaffolded Laravel Passport OAuth API with a portal, an unreal time-saving. (2-3 hours)
- Creating the API, searching by name of a piece of content then getting the guidance details of content (1/2 day)
- Researching and implementing the free user access, 1000 requests a month, at the middleware level. (1 day)
- Tracking all requests and limits for content as jobs. (2 hours)
- Using Laravel Horizon to handle the Redis job queue, Redis is baked into Forge installations by default. (1 hour)
- Editing the portal to show global stats, requests remaining for user roles (2-3 hours)
- Adding Redis for caching, caching requests for 60 minutes, reduce load to DB. (2 hours)
Deployment
- Laravel forge setup, linking with Digital Ocean account and deployment of the project, including the Horizon job worker. (2 hours)
- Setting up a Managed DB from Digital Ocean, decided to cancel it shortly after due to incompatibility with SequelPro. (1 hour)
Support Items
- Research into a suitable documentation tool or library (2 hours)
- Writing documentation with recommendations on how to display the guidance to consumers (1.5 days)
- Creating a Postman collection to help developers use the service (1 hour)
The cost of the project, the services used
These services are being directly used with Safe Stream.
- Landen (Startup) $29 / month
- Laravel Forge $12 / month
- Digital Ocean (4GB / 2vCPUs / 80GB) $20 / month
- Domain Name Β£10 ($12)
In total the current cost of the project is $61(Β£50) per month. It is worth noting that the Forge and Digital Ocean cost will be used for all future side projects, a personal infrastructure.
Photo by Nicolas Hoizey / Unsplash
If you are starting I would always recommend using Forge due to the time savings but you can start with a $10 digital ocean droplet.
The basic Landen pricing allows up to 3 sites, so I have some flexibility going forward. There are much cheaper and free alternatives for deploying landing pages such as Netlify and AWS S3. For my needs I was less concerned with the price, I wanted a landing page which I didn't need to develop, had responsiveness baked, professional-looking, and is generally mature. I didn't want to worry.
Cold outreach, the next steps of the project
There is still a lot to be done, and as the dust settles on my code in the cloud I pry my fingers away from the keyboard. I need adoption.
All development must be halted. Outreach is key.
My next goal, compile a list and reach out to at least 100 people who are involved in the video streaming guidance space and start building relationships. It is a tight niche but the goal is to find decision-makers that either is part of:
- A movie and TV show database (IMDB, TMDB)
- Content guidance sites (Kids in Mind, Unconsenting Media, Parent Previews)
- Streaming sites - probably the hardest (Hulu, Amazon Prime, Netflix)
- Services for managing guides and recommendations (Just Watch)
Unless I talk to these people I won't know the feedback, I won't know if the project is commercially viable.
The big question, is B2B the answer here, or are consumer-focused apps the way forward? Only time will tell.
The cold email
This is the form of the email that I am sending to all new contacts which I feel could be interested in this project. The format stays the same although the email content is different based on the person for a given company.
- A subject line that solves the problem
- Who I am and my experience.
- The problem to the consumer.
- How the product could help them.
- A CTA asking for a reply, starting a conversation, to build a relationship.
Initial response and feedback
As of 19/5/2020, I've reached out to 5-6 cold emails directly, a couple have been sources using Rocket Reach. I've had a strong reply rate of 33% with 2 strong and thought out responses. One of which resulted in a video call.
I've shared this project on various developer forums including Dev.to, which resulted in incredible feedback that proves the need from a consumer point of view.
Depending on how the next couple of weeks and months transpire we will see if we can gather a handful of companies to partner with, to help with social proof when approaching media outlets and magazines to create a piece on the service.
So what does this mean for you?
I could keep talking about the roadmap and what my hopes and dreams for the future but that'll do nothing but keep us in the weeds.
It is easy to get distracted, writing code, and worrying too much technically sometimes isn't the most productive course of action.
For us, developers, code gives us comfort. To take a moment, stop and assess that building relationships with real people is what makes a business work and there isn't any other way around that. That is what you need to do.
I've worked with many startups (one that had over Β£250k in funding to start), and as most fail, around 90%. Burn rates of organisations can easily get into 5 figures a month, and if a developer isn't being utilized you are effectively setting fire to cash.
Why is this?
In many cases, the focus was on products and assumptions from a limited view of the world.
It all comes down to idea validation, we need to understand our customers and how we can serve them.
My recommendation to you, don't build anything substantial upfront, understand the problem, and what you need to prove a concept. Give yourself a week or two, no more, and otherwise focus on research, writing emails, or content.
Explore capturing feedback with no-code through different websites, landing pages and formats such as Landen, Google Forms, Webflow, Carrd or even Squarespace. For other free tooling to help developers look at this resource.
Don't worry about automating any systems at this point do things that don't scale.
Limit your exposure, build a data bank of proof, and ingrain the feeling in your bones that your solution will actually help real people.
You need to believe, powered by data and feedback, that if you build your product you will make your customers' lives better. Moving the needle forward.
Top comments (1)
Hi Matt.
Thanks for this! Your article is pure gold to me. I find myself in the same boat many a day, trying to get all the "noise" filtered out and start making something. Apart from the handy advice you gave here, some valuable resources are also shared!
I find it odd that you got very few likes on this post; really strange...
I guess people scan past stuff that doesn't have one of the main keywords in the title, thinking that it is probably not worth it to look at "content", rather than what's on the "covers" ;-)
I searched for articles on Laravel Forge and yours came up about twentieth in the list. Then a quick scan of the "time to read" numbers tell me many times where to start if I'm in a bit of a rush to get direction.
Thank you again.