Building a modern, scalable SaaS web app in 2024: services I recommend + costs
Setting the stage
As an indie hacker, I see lots of advice about shipping fast, but I truly think the expectations for products have changed, especially due to the new AI-era we are in. Can you actually ship something in a week that's quality? Sure, web frameworks have evolved, tooling is robust, and deployment is now a service you pay for, which makes things a hell of a lot easier, but that's not all. In this article, I want to outline the key components & services I'd buy and/or integrate to create a modern SaaS web app, so you can start strong from the get go!
Core SaaS web app components
These are the ones that every app needs and are considered basic. Yes they can get complicated and expand from here, however you'll need these pretty early on, even if you don't think so!
- Authentication: Login, register, forgot password, 2fa
- Emails: transaction and marketing emails
- Data storage: Relational databases, in-memory caches
- File storage: Store user uploads for images, CSVs,
- Backups: Database backups on a timely interval (hourly, daily, weekly snapshots)
- Payment processing: secure integration to accept money in one-off or recurring subscriptions
- Security: TLS 1.2+, HSTS, DNSSEC, dependency upgrade workflow, ...
- Error reporting: fatals, exceptions, warnings, logs
- CDN: Cache static content, caching headers, TTL
- Sanity tests: Can load home page, can login, can register
Non-core but essential SaaS web app services
These are the ones you will need to build a data feedback loop, to help you manage customer feedback, answer support emails, see how users are using your app, and ensure deployments and performance are smooth.
- Performance monitoring: Query latency, page load times, Google page scores
- Uptime monitoring: see when your site goes down, domain expiration, broken links
- Behavior analytics: Seeing user journeys from sign up to payment, logging custom events
- Page view analytics: What domains are referring to you, views, session duration, etc.
- Customer support: Live chat or help desk software
- CI/CD: GitHub Actions to build, test, and deploy
What I choose to run my one-person businesses in 2024
Depending on your budget, app performance requirements, and location, you may choose different services that suit your business needs. I'm in the US & this is what I choose as my service providers for low cost and high value:
- Servers: Hetzner or Vultr (self managed)
- Deployments: Both Laravel Forge and Envoyer
- Payment processing: Stripe
- Emails: Postmark has a affordable tier
- Database: on machine MySQL 8 and Redis 7
- DNS + CDN + Security: Cloudflare (FYI: free plan is super worth it)
- File storage: Amazon S3 but costs can be high here with lots of traffic, so try others!
- Backups: hand rolled via Spatie's laravel-backup package
- Error reporting + performance monitoring: Sentry is the industry leader, has support for web and mobile apps with generous free tier!
- Behavior analytics: PostHog has user session replays, analytics events, dashboards, etc. also a great free tier and supports many platforms!
- Customer support: Crisp is a good starter chat platform for $25/month, but there are many tools out there, some even free (Tawk)
- CI / CD: I use GitHub actions and pay for GitHub organization, so I can host my code and deploy with their built in automations with ease
- Uptime monitoring: I use OhDear which provides a indie friendly plan: low cost & high value, monitor multiple sites with ease and great SDKs
- Pageview analytics: I use Fathom Analytics so I can get away from Google Analytics, but it does cost money compared to GA
Costs of running a web app
It's no secret that lots of these services cost money, but it's important to spend money where you don't want to waste your time. At the end of the day, you're building a product with business logic. Would you rather build out a complicated email sending pipeline and manage IP reputation, spam, etc. or just plug and play with Postmark and call it a day?! I try to save money where I can and where I have expertise -- if you are comfortable handling some of these things yourself, it might be worth managing it, but for the majority, I think lots of SaaS web apps fall into similar spending patterns and required add-on services to run a business.
Example for SplitMyExpenses.com
Monthly costs related directly to the web app:
- Server costs: ~$50 on Vultr
- Live support: ~$25 on Crisp
Yearly costs:
- Domain: $13 on Hover
Monthly costs shared on the business side (can be used by SplitMyExpenses and other apps):
- Page view analytics: $15 on Fathom Analytics
- Uptime monitoring: $15 from OhDear
- CI / CD: $10 for a GitHub organization & included GitHub Actions budget
- Emails: $15 on Postmark
- Deployments: ~$30 = $20 for Laravel Forge + $10 for Envoyer
So in total, it costs ~$150/month to run SplitMyExpenses but most of the costs are shared (which is good), enabling me to run Chatty Butler for cheaper since lots of the services allow multiple domains or accounts/billing.
Starting from scratch today
I would pick up a seasoned web framework like Rails or Laravel, since so much stuff comes out of the box. I'd try to move fast and build an MVP, but not skimp out on the required items, you never know when you are going to drop your production database on accident, or you deploy a change and break your whole app (hi tests).
The overall costs to run both SplitMyExpenses and Chatty Butler combined, come out to be under $200 per month, since there are tons of shared costs and free services (thanks Sentry, PostHog, Cloudflare)!
Take your time, research your market and customers, don't get into B2C apps (you'll thank me later), and move fast! Rely on trusted tools, frameworks, and services so you can focus your time on building out your custom business logic while leaving the "hard" parts to the companies specializing in it. You never know when you're going to blow up and reap the rewards :) now go build something!
Disclaimer: As you scale up, you'll eventually need more nuanced infrastructure, tighter security, more robust tests, and more beefy servers (duh). What I've outlined here is a good starting point, but YMMV, so do your own research and adapt solutions to YOUR needs! There is no one size fits all approach!