Acquiring a Micro-SaaS; FeedMirror
Last December I decided to buy a pre-existing Micro-Saas with the goal of growing it into a profitable side project…
Last December I decided to buy a pre-existing Micro-Saas with the goal of growing it into a profitable side project. I settled on a micro-saas called FeedMirror which enabled users to embed their Instagram and Medium feeds on their websites using a lines of HTML code.
The acquisition overall went pretty quick and included the domain, all the github repositories and various social and platform accounts (i.e Facebook developer account).
Having a proper gander at the assets
Once the acquisition process was over, I started to have a look around at what I’d acquired and make a plan on how I’d move forward (having already had a few ideas on things I’d want to change). The project was a big mono-repo that used Firebase and GCP functions for authentication, database storage and hosting. As I’d had little experience with both of these, and the monthly cost to run GCP services were quite high, I figured I’d move the project over to AWS and take advantage of their free-tier quotas as well as already being quite comfortable with their cloud platform.
As for the actual SaaS, it was a simple Vue 2 app that let users add their feeds and an admin panel that listed Users and Feeds. A cron job would run daily, collecting each customer’s Instagram or Medium feed and saving them into GCP’s version of S3.
Overall the code was a little all over the place and would benefit from a rewrite so I could add new features without breaking existing code. The other big asset I needed to check was the Stripe account. There were already a few paying customers and I needed to figure out how to get those subscriptions redirected to my business account. Unfortunately, Stripe wouldn’t let me change the account details, so the sort-of-easy solution was to setup another account and eventually move customers over to the new account.
Starting the move and rebuild
Before I made any changes to the code, I did some database work. There were over 2000 feeds and 1300 user accounts, some of which were over 4 years old and had never created a feed.
My goal was to find the paying customers and export their data so I didn’t have a bunch of dead data in the new databases. This was relatively easy, as Firebase supports exporting databases as JSON files and with a bit of scripting, I could sift through the files and pick out the data I needed.
With database work done, I moved onto rewriting the API code. At this point, I decided I wouldn’t move to AWS Lambdas as I already had a VPS running and knew I could complete the rewrite faster using Express so I fired up a new Express project and got to work.
One problem I ran into here was that I’d still have to use Firebase for authenticating users. This also meant I’d have to include Firebase on the front-end too because of how Firebase works. However, once I followed some docs and guides, Firebase was setup and working again on the rewrite. The last part of the API rewrite was moving the cron jobs to AWS. For this, I had a 3 Lambda functions and setup 2 EventBridge rules to ping the main Lambda function either hourly or daily. This main function would call the database function which would return all feeds with
hourlyupdate frequencies, and then call the third function to collect these feeds data from Instagram or Medium and save them in S3.
The front-end was the simplest bit, a combination of Vue 3 and Tailwind made rewriting this super quick and with a bit of tinkering, I got Stripe setup for managing subscriptions too. This was deployed to S3 and distributed with Cloudfront, along with the marketing site.
The day had finally come to relaunch FeedMirror, It had been a couple of months since I started the rewrite, and I thought the project was 99% done. At this point, I got a little anxious with launching it properly as it was my first real project with real customers I was putting out into the world and so I decided just to tweet it out as a sort of soft launching of the project. Since the soft launch, a handful of users signed up every week through March and April but wouldn’t convert into paying customers. As I was sort of burnt out at this stage, I decided to take a break for a few weeks and then investigate the lack of conversions.
Returning to the project
As April ended and May begun, I decided I’d return to the project and rewrite it properly. I had new and old ideas ready to add to FeedMirror and I hadn’t even tried marketing it yet (a classic maker’s mistake). This time around, I decided to focus on Instagram feeds only as the Medium collection code was quite buggy due to there being a lack of an API. I also replaced Firebase completely by moving the authentication system to a password-less login page which emails the user a login token. On the front-end, I gave the dashboard a new design and gave the marketing website a facelift including adding a blog for integration guides.
Now that everything is launched properly, I aim to market FeedMirror with tweets about upcoming changes, articles on integration guides and answering related questions on Quora and other forum sites as this was a huge channel for the previous owner and worked to attract customers. Conclusion
In conclusion, I made a few mistakes a long the way including focusing too hard on rebuilding everything and almost no time on marketing. Currently I think the goal of making it profitable is still very much possible, and now I know that everything works, I can focus on marketing through various channels and adding features in due time once I’ve captured a few more customers.
📸 FeedMirror - Embed-able Instagram Feeds with 2 lines of code.