This is cool but very opinionated on which frameworks to use, etc. it’s a good start but I want to see one with Golang + fiber + htmx + templ. Or bun, or with svelte or vite, but these can be changed out if you already know. Starred, looking forward to see where this goes as I think we need more “baseline” stacks to help people navigate sprint 0.
Being opinionated is a core feature of a boilerplate.
The problem is how it's labelled as a true generic solution instead of being a JS SaaS boilerplate. Developers often either have specialisations or preferences, and luckily we have more than one option for each kind of application.
See SaasPegasus for a good example. Clearly Django oriented. I have my own boilerplate for my work in Laravel, but I don't brand it as the new saas kid on the block.
No gripes against OP, looks like a neat setup. Just the messaging reads to me off. Like it's focusing on the OSS side of it in a weird way. Plenty of boilerplates exist out there that aren't paid solutions, and all stack their own preferred dev tools that are majority open source. It's as if this were a product called "peanut flavoured peanut butter".
Thanks for the feedback! I see your point; we could make it clearer from the start that it is JS-oriented. I'm coming from that world, so it seems like I took it for granted.
Also re OSS positioning - I'm actually not aware of modern (but maybe I missed it), polished SaaS starters such as the paid ones that got really popular lately (e.g. supastarter, shipfast), so that's what prompted us into that kind of messaging. We'd like to create a community-driven starting point for developers of equal polish and quality.
I'm a bit blindsided by "got really popular lately" - these projects would be relevant to my work but they've completely slipped under my radar. Whereabouts are you hearing about those projects? Or (alternatively) where else are you talking about your project?
Also heard about shipfast on twitter and reddit. Twitter is big for promoting solopreneur stuff like this.
On a side note, LinkedIn has a lot of frequent posts if you follow certain projects. LlamaIndex is killing it on this front. Lots of great stuff and they even teamed up with Andrew Ng with advanced RAG techniques on deeplearning.ai
I like opinionated boilerplates. I can adapt to working in different ways. Having someone else decide a reasonable architecture is something I don't mind at all.
Wasp generates code. It's a bit odd how even with such a big layer of indirection, you only have one choice of backend language. Though I'm personally happy with JS and want to give this a try.
Wasp is actually being developed with a vision of being stack agnostic. Currently, it's only React/Node, but we've already been playing with Python and Rust internally.
If you - or others here - are interested I can spend some time to clean-up my own "boilerplate" a bit.
It's using Golang + Chi + Templ, uses SQLite as its database and has a multi-tenant-multi-db setup by default (i.e. 1 master database for user/tenant management, and "stem-data", 1 sqlite database per tenant), and uses passkeys for authentication. I'm using some HTMX + Hyperscript + a really small amount of plain-js for passkeys in the apps themselves.
I reckon that switching out Chi for Fiber - for the boilerplate only - would take about 90 minutes.
Edit: Forgot to include TailwindCSS. So for completeness sake.
Generally I hew to the htmx + alpine, as I'm a djangonaut but pure vanilla js without library would be excellent too. Because I otherwise like the choices of technologies you've used. Astro is cool and been meaning to tinker with it, stripe of course (though I'd argue you should incorporate getlago instead so people aren't vendor-locked to stripe / getlago you can still use stripe just helps adaptability in case stripe goes weird). Plausible analytics is nice, much better than GA imo. Sendgrid is what I'd normally reach for so that makes sense. Tailwind is what I use for css always so that's great too. So it really is just the lack of a vanilla JS (or lightwight js library like htmx/alpine, etc.) that would prevent my personal adoption of this saas. I know you're using Wasp or planning on using Wasp to implement e.g. authentication etc. which makes sense. But I can't help but wish there was a way to be backend agnostic (not easy I'm sure) such that I could use e.g. django. It would open up a lot more potential customers if you did want to e.g. provide commercial support to people who adopt this open-source saas. Anyway, best of luck eh and good work so far
super helpful, thanks for your thoughts! Yeah, stack-agnostic is hard but not something we're opposed to. Especially if we also manage to get the community interested and involved, which is the goal with the OSS approach.
Also first time I'm hearing of the term Djangonaut, love it! :)
Close as in it uses golang, sure… but that’s about it. Other than a few packages and the AWS sdk, everything else is old web app architecture. SQL database. Go template html. Not modern.
Looks like a great starting point with good choices of technologies. I see the database is sqlite in development as default, but it is not possible to use it in production as described in the documentation. Would be great with the option to use sqlite in production also since it is easy to use and require less resources.
My main resolution for 2024 is to figure out my side project/SaaS boilerplate. Boilerplates are opinionated, and my opinions are so out of whack that I can't use any other folks' opinionated boilerplate. The challenge is the opinion part of boilerplates and the last "S" of SaaS, which stands for service.
I can't spend more than $5 a month, and I don't want to use anything other than Python. I think in Python and it provides the absolute frictionless path to bring my ideas to life. I wish I had the same feeling about JavaScript, and that would have certainly made my life easier. But this is a compromise I am happy to accept as part of my identity.
The stack I am thinking of right now includes:
- Firebase: I chose this because Stripe integration, real-time database, Firebase functions, documentation and Firebase authentication.
- Vue/Nuxt + BootstrapVue: This is for basic front-end stuff.
- VM/VPS: This will be used to host the operational logic.
- Python: This is the core operation. Firestore operations and management will have the real database in PostgreSQL/SQLite to reduce calls to Firestore.
- FastAPI: This will be used for communicating with Firebase via API. User calls will be relayed via Firebase to FastAPI. It may be slower, but it will make my life a bit easier.
- NGINX: Plan is to have one FastAPI project per project. I think NGINX is going to be helpful here. Also, I would like to do some firewall configuration.
I still have a lot to figure out. One thing I am trying to determine is if I really need Firebase here because I already have a backend there.
I want to build an API-first system and Unix philosophy-inspired systems where multiple API services or Python modules do one thing only and are linked to each other. The goal is to create common operation Python modules, so I can quickly develop POCs by combining boilerplates with parameters and write the core logic in the minimum amount of Python code. The whole plan is to keep trying different approaches until I find one that works.
Looks interesting. I use a similar stack. What made things a lot simpler for me was packaging the python app inside a nginx unit docker image. CI/CD was highly simplified...
I will look into it. Thank you very much. My current plan was to SSH and develop inside the VM/VPS. VS code's remote desktop extension makes this quite easy.
For both these issues the answer is Go. I found Go more fun than JavaScript. I won't write Go from scratch rather I will rewrite Python to Go when I start hitting walls.
On concurrency, I hope FastAPI will help on that. But I am horrible at writing concurrency code and that is why I don't enjoy writing JS. But from my limited experience, I enjoyed goroutines.
Package management, for mission critical stuff I have to straight up use Go binaries to be honest.
I didn't mention Go in my parent comment because it will be used as a langauge to rewrite solutions and for that to happen I need to make atleast a couple hundred dollars a month to make that investment.
Congrats on the release! I think marketing it as a general alternative is a little bit misleading. People have their favourite technology they care about and almost every current stack already has an open source boilerplate, no?
I too built my own boilerplate, Rails + blogging + Kamal deployments, and call it Business Class. Not free, but worth it:)
Thanks for sharing, Business Class looks really cool! As I mentioned in other comments, I think the situation in JS is similar to other technologies - there are a lot of oss boilerplates, but most of them don't offer the same level of polish and features as the paid alternatives. Also, a good portion of them is outdated or not actively maintained.
And that's exactly what we are going for, just with an open-source, community-driven approach.
I can imagine you had the same motivation when you created your boilerplate starter (not the oss/community thing, but above)?
Honestly, what is the market for these SAAS starters these days? Is anyone making serious money, or even a modest side income, with some web app? It seems the low-hanging fruit is well and truly picked at this point and building something that will earn you decent money requires a lot of time and money investment in a vertical niche, not yet-another-project-management-tool you can put together in a week.
You can server render dynamic content using Astro. It might be a good choice if you like coding with javascript, but also don't want to send javascript to your users.
No, both Open SaaS and Wasp are free and open-source, like most of the frameworks. If we manage to get the community adoption for Wasp, the next step would be to look into value-add services on top of it that can be monetized (our role models are companies like Mongo, Terraform or Databricks).
Having built something similar, the biggest challenge for users is that they have to use a bespoke language, like WASP here. I suspect that it is also your biggest challenge as well.
Mine is built on CUE, which at least has the potential to become a more widely used language. CUE hasn't reached sufficient maturity for broader adoption yet, so I continue to face this same problem.
I don't like DSLs because in almost every case, it would've been better as a library in a general language. You get matured primitives, control logic, and interoperability for free that way, and there are fewer surprises.
But Wasp promises so much that I still want to try it. Getting auth and RPCs auto-generated would be great on its own.