Four Sub-Systems Most SaaS Apps Need

If you're a frugal indie maker whose time is extremely limited and spread thin by multiple projects, there are four core services you can automate.

Most SaaS applications are built-upon those sub-systems. If you manage to build one micro-service for each and host them on a personal subdomain, you save yourself countless hours re-developing them for your next project and tons of money on recurring costs.

  1. Authentication/authorization system: Auth0 is nice, but spend three days learning about OAuth, JSON Web Tokens, and reading your back-end web framework's documentation and you'll be able to roll out your own customizable distributed login/signup workflows across your different projects. Just don't forget to encrypt passwords, implement a CSRF token system, and always use HTTPS.
  2. Text editor: A text editor is necessary to create rich content. Refer to my quick overview of what you'll need to build your own.
  3. Mailing service: Emails remain the only way for a user to perform sensitive transactions outside of the app. For example, to change passwords or to confirm an email address. It's also a must-have to inform the users about what's happening: in-app notifications, newsletter, subscription renewal, etc. The problem is that email SaaS bills quickly stack up too if you use services like Mailchimp. As an indie maker with no MRR, you can't afford that. The best way to reduce your email bill is to use AWS Simple Email Service's API. You have to code everything, especially the email editing interface and the tracking features if you need them, but it's simple to get started and the API allows you to do anything. It only costs 10 cents for 1000 emails, you pay for what you actually use, and there is no limit to how many subscribers you can have. Personally, I don't track my users and I prefer plain text, so it's a no-brainer.
  4. Online payment system: Stripe is a game-changer for indie businesses. The API is well-documented and gives a lot of freedom. You still need to code a lot of things though: an interface for your users to visualize their payments and manage them, buttons to connect Stripe accounts to your marketplace, and buttons to receive payments, among others. I use Stripe Checkout and back-end generated session tokens to secure my transactions, but implementing a dedicated micro-service somewhere in my webserver would save a lot of time and reduce code redundancy.

There are possibly similar services you might want to centralize. A web-socket server, for example. But if you manage to automate those four core parts and the way you generate the SCRUD logic of your application, I'm pretty sure you can save 70% of the time you spend developing minimum viable products. The remaining 30% is where the value comes from, so it's in your best interest to free up time for it.