- Published on
How I Prototype SaaS Apps Quickly
- Authors
- Name
- Schoon
- @DanSchoonmaker
It’s important for Indie Hackers looking to build micro-saas products to have a reliable tech stack that they feel comfortable with. Here’s the tech stack that I currently use to prototype new projects quickly…
Boilerplate
- Serverless SaaS
- I also highly recommend checking out DivJoy by Gabe Ragland (Twitter)
- You may also want to read "37 SaaS Starter Kits & Boilerplates Based On Your Favourite Programming Language / Framework" by Iszuddin Ismail (Twitter)
Frontend
- Next.js / React.js for frontend
- I’ve been using React since 2014 so I have a ton of code that I reuse regularly
- Next.js is newer for me, so I occasionally need to read documentation, but the performance boost over standard React is definitely worth it.
- Tailwind CSS + Tailwind UI
- I can’t explain what an impact Tailwind has had on my side projects. I was initially hesitant to move away from CSS & SCSS because I was so comfortable using it, but Tailwind UI (and now Tailwind Templates) has completely revolutionized my workflow.
- Vercel for frontend hosting
- I love what the people at Vercel are building. When using Next.js, hosting on Vercel is a no-brainer.
- SchoonBlocks
- This is a private NPM repo I’ve been adding to for years. It has a bunch of common React components and utility functions that I seem to always need.
- I highly recommend creating your own component library. I’m working on a Udemy course to share my approach with others. Email me if you’re interested in getting early access.
Backend
- Typescript
- After years of Javascript it took me a bit to get used to Typescript. The main benefit I’ve experienced is the ability to quickly jump back into a codebase and have the data types remind you of certain dependencies. The stability this adds to your codebase is well worth the extra time it takes to define the types.
- Google Cloud Functions for backend serverless functions
- I sometimes HATE serverless architectures and their horrible logging. For some reason I have a hard time organizing my backend code when they’re just individual functions.
- The main advantage I’ve found here is not needing to monitor and scale servers. For the most part I just deploy and forget about it.
- Google Firestore NoSQL datastore
- I sometimes use Amazon’s DynamoDB if the project is more “enterprise” focused. For quick prototypes, I find that Firestore is much easier to integrate with quickly.
- Firebase Auth / NextAuth.js
- Depending on the project it’s sometimes easier to skip the Firebase step and just use NextAuth to integrate with a social authentication provider. NextAuth also has a Firebase provider, so it works either way.
- Elasticsearch
- I’ve used Elasticsearch at work for years. I love how powerful it is.
- Google Sheets
- I regularly use Google Sheets as a quick data Content Management System (CMS) in my projects.
- I wrote a blog post about using Google Sheets as a CMS.
- Stripe payment processing
- I never really looked into anything else. Stripe just seemed to be the easiest.
- Postmark email delivery service
- I’ve gone back and forth on this one. I previously used Amazon SES, but since I don’t use any other AWS services now, I didn’t want that extra overhead.
- Now I typically use Postmark now because it’s built into the Serverless SaaS boilerplate.
- Twilio
- Twilio is great if you need to add some sort of SMS verification to your app.
- I’ve also used them a few times to quickly prototype video conferencing apps. I have one that I’m still working on.
Web3
I’ve been experimenting a ton with different Web3 tools. Here are some of my favorites:
I cannot stress enough that the most important thing here is that YOU feel comfortable with the tools and languages you’re building with. This is what allows you to reuse common code snippets, iterate quickly, and get feedback from potential users before investing too much time.
A great example of this is my story about "That time I wasted a month of my life trying to fit in" by switching my code IDE from IntelliJ to VSCode because it was what every other YouTube tutorial was using. Don’t fall for it. Stick with what you’re comfortable with and allow your progress to compound.