
Show HN: SaaS application boilerplate - KRains
https://github.com/saasforge/open-source-saas-boilerpate
======
Thorentis
I appreciate the efforts being done in this space, but I don't think this is
launch ready yet. It doesn't include some of the things that make a SaaS a
SaaS, and not a typical user sign up web app with admin panel.

For a SaaS framework you usually need at least: integration with a billing
provider (almost always Stripe nowadays), web hook handling for a bunch of
services (or a generic way of handling webhooks easily), some kind of social
auth integration framework or ready built integrations for a bunch of
services, bulk email support, a modular dashboard (seems you have the start of
this?), a landing page generator with pricing tiers that integrate with the
backend somehow, a team management option for users.

Have a look at Laravel Spark, or some of the other premium SaaS frameworks
available right now for what people a now expecting of these frameworks.

Also, I'm a little dubious about your license (seems to be fixed now?). You
need to be crystal clear about whether or not this is open source, or if you
are trying to sell a product. "SaaS as a Service" (or SaaSaaS as I like to
call it) seems to have blown up recently, but I'm usually wary of things like
this. When making a SaaS, I like to keep margins and fuss as low as possible,
and including a piece of software that might cause me legal trouble down the
track is a big no-no.

~~~
gremlinsinc
I agree, i'm working on my own SaaS boilerplate in laravel debating oss vs
paid, might be a cheaper Nova/Spark combo alternative. $99 per project is
pricy, esp when a lot of projects are just testing ideas and things.

SaaS needs to have teams, projects, payments, auth, invites, and possibly be
configurable for different 'types' of scenarios... projects could be optional
for instance if they don't group actions by project, invites could be optional
if anyone can join any team, heck even teams can be optional if you can't add
multiple orgs but it's nice to have, say you run multiple brands or
something....and want separate invoices with separate logos... etc...

I'm getting close to launch, thinking I might do it as a paid $9.99/month gets
unlimited access to everything I do in the scope of the project. Might raise
prices eventually but grandfather people in for a time. Or might do FOSS with
addons that are pricier, but I don't like apps that do that -- I'd rather pay
small fee monthly and use what I need depending on client.

~~~
KRains
Thanks for sharing your thoughts and experience! Honestly, I don't know if
teams and projects should be a part of SaaS. If so, in which context?

I wonder, how are you going to charge? Is your product is app or it's SaaS
itself? And I think $9.99/month is very low price.

Any link to share? ;-)

Good luck!

~~~
gremlinsinc
Look at some apps like Clockify, Slack, Trello, Jira, Asana, all have teams,
-- I really like the way clockify does workspaces, and then you clients, and
projects per client. All organized nicely. This sort of model of
teams/projects would probably be quite common in SaaS...think anything
tagetting SMB's that need to give access to parts of the app for their
employees or contractors, or use it to organize, etc...

~~~
KRains
Ok, thanks! I will consider adding teams.

------
adamfeldman
I am a fan of opinionated full-stack frameworks, in particular for building
B2B web applications which contain lots of CRUDL views.

For an open-source solution that largely revolves around the React frontend,
consider react-admin [1] + its adapter for Hasura [2].

[1]: [https://github.com/marmelab/react-
admin](https://github.com/marmelab/react-admin) [2]:
[https://github.com/hasura/ra-data-hasura](https://github.com/hasura/ra-data-
hasura), [https://github.com/hasura/graphql-
engine/](https://github.com/hasura/graphql-engine/)

In Ruby/Rails-land, there is [https://bullettrain.co](https://bullettrain.co).

~~~
benboughton1
Anything full stack with Python/PostgreSQL/Angular?

~~~
adamfeldman
I've previously found this site helpful for a high-level view of the
ecosystem:
[https://www.fullstackpython.com/angular.html](https://www.fullstackpython.com/angular.html)

~~~
benboughton1
Nice thanks - I had not been here. The first two tutorial links are pretty old
there are to AngularJS.

------
antsar
Having "Open Source" in the name is slightly misleading...

> License

> Copyright (c) 2019 SaaS Forge Inc.
> [https://www.saasforge.dev](https://www.saasforge.dev). You can use this
> template for any purposes except reselling or purposes prohibited by law.

~~~
KRains
Fixed! But I still left the part about not using the code for purposes
prohibited by law...

~~~
e12e
It's (presumably) redundant for what you intend it for (you can't grant a
right to break the law..) - but can still be troubling. Which law(s), which
jurisdictions ?

Copyright law is fairly international through trade agreements - which is one
of the reasons copyleft was such a great hack.

~~~
KRains
I changed all those words to just MIT :)

------
anandchowdhary
Looks great! I also recently worked on a similar project, Staart
([https://staart.js.org](https://staart.js.org)) but with a Node.js and Vue.js
stack using TypeScript.

It has typical SaaS features like onboarding, API gateway, social auth, Stripe
recurring billing, teams, etc.

~~~
KRains
Thanks for sharing your link. It looks pretty mature to me! But I see you put
all parts separately in Github, is it more convenient?

------
mfrieswyk
Reminds me of [https://spark.laravel.com/](https://spark.laravel.com/)

~~~
KRains
We all are part of the family called "boilerplates" :))))

------
HNLurker3
Nice effort but I don't like it.

You could replace everything here with Django. There's nothing in here that
supports migrations, deployment etc (Django can).

I've used React and Webpack and loath it, it's extremely opinionated,
saturated with pure JS developers, has an enormous learning curve and load of
gotchas.

Django also has API support and a wealth of add-ons for services like
federated auth, ElasticSearch bindings, bindings for S3, Redis, discovery,
Cassandra, NoSql, etc etc.

The architecture here is also really unscalable. There's nothing in here that
can be horizontally scaled, and Jinja or Django + bootstrap is 10x faster for
prototyping before you hire a dedicated dev to maintain a React nightmare.

Modules are not a feature of this app, they're a feature of the Python
language. Putting that in the README is misleading IMO.

~~~
KRains
Thanks for your opinion! It's probably more valuable for me than from people
who like it :)

But you are a little bit wrong. Currently, it supports migrations and will
support deployment very soon.

I don't agree about ReactJS and Webpack. I start using both in my projects and
it didn't take too much time to learn them. Even if I don't know them deep I
know them enough to use in the real projects.

I agree that currently, Django is more might than this project but it's just a
beginning.

You are not right about modules too. It has nothing to do with Python's
modules, I "invented" my own "modules" \- it's just a combination of front-end
code and Python API in one folder. And I created them to make the project more
scalable. I don't know though if I gained this goal or not - yet.

------
matt-p
I have briefly evaluated a few of these in the last month (focusing only on TS
or Python) or so and have ended up convincing myself I need to go down the
path of building bits I need in my own way. Consider this only constrictive
criticism and I massively applaud the hard work that has gone into these
projects:

    
    
       https://github.com/async-labs/saas 

Good:

-React Material UI Front End

-Book showing how you how to build it, really cool way of funding OSS!

-Simple but scalable enough architecture, not too much cruft.

Not for me:

-MongoDB/Mongoose, where SQL (sequalize ORM or plain postgres) would have been a much better fit for a SAAS boilerplate in my opinion. Quite a big user document in the mongodb schema.

-Quite tight integration with AWS by default (s3,SES,Lambda) not hard to replace but the principle of OSS with defaults to one vendors IAAS feels uncomfortable to me.

-No password based login, not a big deal but an interesting choice.

-No Delete on team members and some other simple things that are needed to make it functional.

-Missing a few key features (permissions, master dashboard ect) that are addons by commercial licence which is fine, but these add up quickly to ~$1000 for something that would still be a fairly basic boilerplate.
    
    
       https://github.com/staart/api
    

Good:

-Awesome features: landing page, RBAC (although roles are hardcoded so take a look at these before you build your app), TFA, Api Gateway, Auto Join company based on domain. Everything you need (and some you wont)

Not for me:

-While there are lots of features, some don't actually work out of the box and require fixes. Some features you will not need and may have to strip out. If more time was spent on getting fewer core features absolutely perfect this would be the best SAAS starter out there in my view (in TS/JS).

-Again integration with AWS by default (SES) with no SMTP or second option, easy to replace though.

\- Would personally have chose postgres with knex (rather than direct mysql)
for the DB and react for the front end over vue but these are personal
preferences.

\- UX on front end could do with a little work.

SAASForge seems interesting but missing alot of features like companies/teams
master dashboard ect.

~~~
KRains
Thanks for your great comment.

You are not the first person who wants companies/teams. But I'm not sure I
understand you well, guys. Can you give more details, with some examples, why
and what it could be useful for?

------
ci5er
Ha! This is awesome! I did something similar in 2016, and called it something
silly like SaaS-in-Box, but after integrating security, and Blueprints and
multi-tenancy and caching, and ... (I do think I ran into some problem with
blueprints, actually), ... I finally decided I was inventing Django-on-Flask
and that it probably didn't solve as many problems as I originally thought it
would.

BUT! That said - I think there is a solution gap here. Keep it up!

~~~
KRains
Thanks! It's a pity you gave it up, maybe you could create something really
cool.

------
leetrout
> If you experience such errors:

> In the database remove the record from alembic_version table

> Remove any files from your computer under app/migrations.

I'm not sure advising users to delete all their migrations is the right thing
to do (which is what this appears to be doing).

~~~
KRains
To be honest me either. The problem with these files is if you keep them you
will not able to update the database because your last file has one version
and database does another. You could just remove the last migration file, that
would work too.

As for the problem overall, I didn't find a good solution for it. Maybe you
can help?

------
potta_coffee
Nice! I have a similar boilerplate that I've built for myself (there's no
client-side), Flask with JWT, login, logout, etc. The React UI looks really
nice here.

~~~
KRains
Thanks! Do you have your boilerplate on Github or anywhere else?

~~~
potta_coffee
No, I haven't felt like it's really ready for anyone else to use. Just
something I use as a shortcut when starting new projects. I ought to go
through it and clean it up and put it out there though.

~~~
KRains
Yeah, I understand you. But you know what - I found if you would like to share
your work with people in any way (open-source, commercial or whatever) it's
much better to show it as soon as possible even if you think it's not ready
yet.

Quote: If You're Not Embarrassed By The First Version Of Your Product, You’ve
Launched Too Late :))) (Reid Hoffman, founder of Linkedin)

------
elt193
This is great. Thank you so much!!

One request is to include some recommended production deployment. I have spent
way too much time on devops every time I start on my weekend project.

~~~
KRains
Thanks! You know, deployment automation is one of my highest priority tasks. I
even wrote a book on it ([https://www.saasforge.dev/books/the-book-on-
deployment](https://www.saasforge.dev/books/the-book-on-deployment)) but I
think it would be much better to add some scripts/automation into the
boilerplate.

~~~
teah10
thanks for the link. I long for the day where I can single click and have
Flask/ReactJS boilerplate setup with functional public www and local dev
environment setup. I only want to focus on business logic. Sorta like Heroku
on steroid? (read: I would pay for that)

~~~
KRains
Thanks for your idea! Btw I created a simple script that literally does the
same - you just provide comments and it's sending to GitHub, rebuild the
frontend and send command to deploy to AWS. But it's when I already set up
everything. I'm thinking to automate much more - the WHOLE process of
deployment, from the beginning, and actually, I already did it partially (you
can find working snippets in the book). So, stay tuned to know when I
implement it :)

------
JoblessWonder
I remember when there was a Rails one... It worked great, until it didn't. It
was, however, a great learning tool on how you could role your own Rails SaaS.

~~~
KRains
What happened to it? Was it open-source or commercial?

------
adibalcan
Nice, but I think you need also an ORM. I used Flask with ORM from Django
after I tested SQLAlchemy, and now I think that was a good choice.

~~~
KRains
ORM is used in this boilerplate, and it's SQLAlchemy. I need to mention it
somewhere.

------
VonFuchs
I am working on the same idea, on a different stack. Hope to finish it soon.
Good luck with your project!

~~~
KRains
Thanks! Which stack do you use?

------
jckblckch
NoGo criteria NR1. No test/test frameworks included.

~~~
KRains
I know, I know!! I will include unit tests... some day... soon.

------
PlanetRenox
Does anything exist like this that uses a Java backend?

~~~
ryancp
Maybe try [https://www.jhipster.tech/](https://www.jhipster.tech/)?

~~~
KRains
Looks interesting although it seems to me not SaaS-oriented.

------
ishyfishyy
Any plan to add job task management like RQ or Celery?

~~~
KRains
YES! As soon as anyone will ask for them :) You can add your request (with the
use case) as an issue in the repo.

------
KRains
Update the license, now it's MIT.

