Across SaaS offerings there are some common functionalities that must be built but as a solo developer my time and resources are limited.<p><pre><code> * Authentication / Authorization
* Usage monitoring
* API Gateway
* Billing calculations
* Invoice generation and sending
* Customer support (including portal to manage account)
</code></pre>
I have left the specifics of the software out on purpose however it is primarily REST API based.<p>So far I have looked at building on top of Kubernetes with Keycloak for auth; Kong (free) for API gateway; cron jobs to calculate daily bills, update a database and send monthly invoices. It's ugly, takes more time than I would like to spend to maintain and develop and means I lose time spent working on my core business.<p>Are there any best practices/design patterns/architectures for building a small-medium scalable SaaS platform?<p>I am open to experiences with managed services and heavy vendor lock-in as previously I tried to avoid it but the flexibility (that I have not used) is a tradeoff with time and effort required.
These are the things that gave me (a solo developer) a <i>huge</i> speed boost:<p>- Use React with NextJS. Stopping messing with state and routing issues.<p>- Use GraphQL instead of REST. Stop spending so much time writing well-structured API endpoints.<p>- Purchase TailwindUI [0]. Stop pretending to be a UI designer and start implementing features.<p>- Put everything in containers and host on Render [1] or Heroku. Stop spending time managing infra before you've found product-market fit.<p><i>Remove everything that stands between you and solving a business problem</i>. Everything else is completely irrelevant. Do whatever you can to get to market.<p>It makes more business sense to pay $50/mo for Heroku and Auth0 than spending a month building infra and authentication, which you'll probably get wrong anyway.<p>If I were to do this all over again, I'd probably go with PHP+Symfony/Laravel or Ruby on Rails. Something hyper-practical. I thought I'd never say this, but it's true. Development is fast. Recruiting is cheap. There are builtin patterns so it's easy to get help online.<p>That being said, I do love React.<p>[0] <a href="https://tailwindui.com/" rel="nofollow">https://tailwindui.com/</a><p>[1] <a href="https://render.com/" rel="nofollow">https://render.com/</a>
What is the application stack you are using? Something like Laravel or Symfony (PHP) or Django (Python) would come with auth stuff already and it wouldn't take too much effort to make it API-oriented.<p>Connect it to something like Stripe, deploy it on e.g. Heroku or so (I personally use AWS Elastic Beanstalk for almost all my projects, mostly because I feel most comfortable there) and you should be almost there.<p>I have 2 side projects where I'm the solo developer, one runs on Symfony, the invoices are generated, but after they're sent, I need to manually check them (but each invoice is 100-200 US$, so it's ok).<p>A second project runs on Django and is subscription based, here the invoices are higher in volume but only 5 US$ each. There billing goes via Stripe (among others) and is handled automatically.<p>Check out <a href="https://www.indiehackers.com" rel="nofollow">https://www.indiehackers.com</a> as well for some inspiration.
I think JumpStartRails.com offers a lot of what you are looking for <a href="https://jumpstartrails.com/" rel="nofollow">https://jumpstartrails.com/</a>