Building a web app is fucking hard. I found this out by trying to build one in 60 days in a programming language I never used before. (Ruby, in case you nerds were wondering.)
And I’m not a programmer. Sure, I know how to code a mean WordPress Theme, but I was in way over my head. However, I was determined to build this app myself or die trying.
Like My Sex Life, It Started with Spread Sheets.
At the end of September 2016, I was updating a spreadsheet that Jason Zook and I used to track our website growth. And when I was finished, I sent it to him.
The spreadsheet tracked web traffic growth, email subscriber growth, traffic-to-email conversion rates, subscriber churn rates, and revenue growth month-over-month (to name a few).
We used this to pinpoint areas of the business we needed to focus on. I loved using it!
Jason loved it, too! Actually, he loved that I was updating and sending it to him every month automatically. He said something like…
Dude, it would be awesome if we could turn this spreadsheet into a software product that automatically pulls this data in for you. But I’m so stupid and dumb that I don’t know how to build something like that. Matt, you’re the smartest and most handsome person I ever met, can you build it?
Paraphrasing aside, I said yes because I loved the idea that I didn’t have to manually add shit to our spreadsheet every month. So without planning, I challenged myself to do it in 60 days.
30 Days Later…
I lost my shit, had a mental breakdown, and couldn’t write another line of code. Turns out I died trying, but at least I had a “prototype.”
The app I built allowed users to create an account, log in, add a website, and manually add their traffic, subscriber, and revenue data for the year. Then, it displayed three data points in giant, colorful circles.
We had a product but the software still worked like a spreadsheet having to manually enter your own data. My breakdown started because I was trying to write code to automatically pull data from third-party integrations like Google Analytics, MailChimp, and Gumroad.
And I didn’t know what the fuck I was doing!
Lesson #1: Don’t give yourself 60 days to build a complicated web app in a programming language you never used before.
The Third Co-Founder
I wanted a challenge, but the crazy amount of stress I put myself through was just not healthy. For instance, I like beer, but I’m not going to try to drink as much as I can in 60 days. Or maybe I will.
Ok, bad analogy.
I couldn’t handle the stress of coding anymore. So we added another co-founder to handle the programming and get those sweet-ass automatic data integrations working.
Welcome to the middle of the post. Now can I please have your email address?
The First Redesign
Now that I wasn’t coding the software anymore, I used my time to redesign the app.
I was trying to make things look a little better while we were working on good, solid code and a handful of third-party integrations.
90 days after this project started, we were finally able to launch Spruce to “Founding Members.” These were our first customers who paid $299 for lifetime access to shoddy software that would improve over time with their valued feedback.
We gained 40 Founding Members in the first week! That was the most money I had ever seen from a product launch.
Things were looking good…except me.
It was early December 2016 and we now had software that works. We had customers who trusted us and paid good money for our product.
Of course, the next step was to completely rebuild the software in a new programming language. (Go, in case you nerds were wondering.)
I don’t have to go into detail here because it didn’t work. The rebuild was taking too long and we didn’t want to disappoint our customers by not frequently adding new features and integrations.
Lesson #2: Don’t try to rebuild your software in a NEW programming language with only 40 paying customers.
In late January 2017, we parted ways with our programming co-founder and brought on a NEW programming co-founder. (His name is Conrad and the current team is Jason, him, and I.)
Of course, the next step was to completely rebuild the software. But this time, in the ORIGINAL programming language (Ruby). See the difference?
This took about four months to complete the rebuild. And in late May 2017, the software was ready to relaunch! It allowed users to create an account, log in, add a website, connect to FOUR third-party apps (we added Stripe), automatically import your data every day, and show you all those simple, but useful analytics.
The “All Hope Is Lost” Moment
On June 1st, 2017, we launched the rebuild of Spruce to our active users. But because we only had four third-party apps, Jason and I couldn’t use the software for our own businesses yet and we didn’t feel comfortable promoting it.
Of course, that was a problem.
We all wanted Spruce to be amazing, but we knew it would take a lot more work. This demotivated us to continue building and the team communication deteriorated.
So in July 2017, I decided to code ANOTHER redesign, hoping to revive the project and get things back on track.
The redesign illustrated what the future of Spruce could look like. But building it would take MORE time and push back the marketing schedule to acquire new customers.
We all jumped on Skype determined to create a detailed plan for this new version (what we dubbed v1000). We spent three days going over every detail.
We wanted to create story cards, build out a wireframe, hire a UI and UX designer to get it right. You know, the things Jason and I should have done a year ago!
But even after all that planning, things stalled. There were no active paying customers to motivate us and a mountain of work ahead of us to get to v1000.
Lesson #3: Don’t start a massive software project without a plan.
In early October 2017, after the one-year anniversary of this project, we had a do-or-die moment. We jumped on Skype to decide how to continue moving forward.
After what felt like 10 hours of talking things out, I asked a question that kicked off a new conversation.
What’s one thing that Spruce must do in order for us to feel comfortable sending a promotional email to our lists?
Jason wanted a Drip integration. I wanted manual data entry. And we all agreed that the price should be $19 a month.
So we came up with a 2-week plan to get Spruce to where we feel good about selling it:
- add new third-party data integrations including ConvertKit, Active Campaign, and Drip.
- add a manual data entry feature.
- and lower the price to $19 a month.
This seemed so simple and doable. And once we started marketing it and getting new paying customers, we would continue to add new features, integrations, and design features to get us to the v1000 version we craved.
Lesson #4: Don’t bite off more than you can chew. The only way to eat an elephant is one bite at a time.
This is something my dad has told me a bunch of times throughout my adult life. I have to constantly remind myself because I often get overwhelmed by large projects.
The Moral of The Story
Building a web app is fucking hard. BUT IT’S WORTH IT!
Two weeks after our do-or-die moment, we cranked out all the app features we wanted, created all the marketing material needed to kick things off, and launched Spruce for the third and final time.
This was a huge learning experience for me. I jumped into something I wasn’t prepared to handle. But I took my lumps and rode the roller coaster all the way through when most people would have given up.
The reason? I need Spruce!
It’s the heart of my business. The spreadsheet was the reason I was able to grow my traffic, email subscribers, and revenue over the last two years. I wouldn’t be where I am without it.
And now, it’s a tool that I can share with my friends and other website owners like myself. I’m proud of what we built, and I’m crazy excited about what it will become over time.
Our mission was to make business analytics simple, to uncomplicate everything. And even though it took a year to bring it to life, it was worth every failure, every fight, every win, and most importantly, the FUCKING STRESS 🙂
I have to thank Jason and Conrad first and foremost. They deserve all the credit for Spruce. They had to deal with all my crazy east coast Italian emotions, and I wouldn’t wish that on anyone.
I want to thank all my friends for paying money to be a Founding Member of Spruce and sticking with us while we figured it all out. They made a good bet.
Finally, I want to thank every person who had to deal with me during the stressful moments in-between coding and calls. I’m talking to you, Steph.
Thank you ♥️
LAST CHANCE To Give Me Your Email Address. Please!
At this point I've tried every tactic I know to get your email address. This is the last time I'm going to ask you...until you try leaving. Then, I'm going to ask you again! Don't even try going to Facebook or Instagram after this. I'll be in your feed too!
Build and Launch a Web App in 60 Days
An amazing race to build and launch a web app from scratch with Jason Zook, by learning Ruby on Rails (and other programming skills) in only 60 days.
Create and Sell a Premium WordPress Plugin in 40 Days
Is "scratching your own itch" the best way to build a successful product? I'll find out by selling my custom affiliate Wordpress plugin I've used for years.
Launch a SaaS Product on New Year’s Day
We're accelerating the launch a year-long SAAS product (still in development) in just 30 days. Can we narrow our scope and get something to market by then?
The Small SaaS Makeover Experiment
Can we increase revenue on an existing small SaaS product by giving it a total makeover? Will a new name, logo, sales page, and pricing model be enough?
Reach $15,000 Monthly Recurring Revenue (MRR) in 6 Months
We're launching our SaaS product on June 1st, 2019 and trying to reach $15,000 of monthly recurring revenue in six months. Can we pull it off? Let's see!
Extreme Makeover: SaaS Edition
Will completely redesigning and restructuring our SaaS app from scratch attract more paying customers and provide a better overall user experience?