Bullet Train – Rails-based SaaS framework(bullettrain.co) |
Bullet Train – Rails-based SaaS framework(bullettrain.co) |
I'm the original creator of Bullet Train, although a number of people now work on it. It's been a fun journey to this point!
When I first started building Bullet Train, it was a relatively unique offering. There weren't that many full-featured "SaaS starter kits" out there, although there was some prior art. The biggest inspiration for Bullet Train was what Laravel Spark was at the time. In fact, one of the guys who had got me into Rails in the first place had started building his next product on Laravel so they could take advantage of Spark!
These days there are an abundance of SaaS starter kits available in most ecosystems. I've had the pleasure of meeting and interacting with the authors of a bunch of high-quality starter kits built in different languages and frameworks and some of them have told me they were inspired in part by Bullet Train. I love that.
If you're interested in Rails and SaaS, we're running a conference in Athens, Greece on June 1–2 this year and we'd love to have you! https://railssaas.com
Happy to answer any questions anyone may have!
In the past, I was jealous of the Ruby ecosystem with an extremely large community (the grass is always greener on the other side?). And, thinking the JavaScript ecosystem was left behind, but now I am hopeful that the JavaScript ecosystem has finally caught up.
I can totally confirm Bullet Train is an inspiration for many SaaS Boilerplates. I was personally inspired by Bullet Train to build Nextless.js [1], a Next.js based SaaS Boilerplate, bringing SaaS starter kits in Next.js/React/JavaScript ecosystem.
--- [1]: https://nextlessjs.com
If you're in the EU running a SaaS or developing with Rails you should at the very least check out his upcoming one in Greece.
Edit: To clarify I mean the marketing site linked here, not the starter template.
Too late - that train’s already left the station.
I'm trying to move a company that is now selling simple wordpress websites (and doing actually pretty well, do to their super expertise with design/graphic and marketing) to a 'higher' step with RoR, and BT seems something that may help them a lot approaching Rails.
Can anybody suggests resources, links, advice on how to start this new adventure?
[1]: https://blog.bullettrain.co/teams-should-be-an-mvp-feature/
I've had a hard time searching for patterns and tips for modeling common data/features for web applications.
0: https://www.derrickreimer.com 1: https://web.archive.org/web/20181001000000*/https://www.derr...
1. The hybrid approach to iOS and Android apps with JSR were better than what BT had to offer
2. There was a lot less to learn about the mental model of how JSR was built via Bullet Train. It was basically pay, pull down, configure, and get going with JSR. BT has things like SuperScaffolding, an abstraction layer on CanCanCan, etc. I didn't want to have to ramp up on those to decide whether they were better than the alternatives.
YMMV of course. JSR is a paid app and IIRC BT was at the time too... but looks like maybe not anymore?
I like the idea of jump start rails but would like to stay away from tailwindcss.
Note, Bullet Train also uses tailwind.
Java is wonderful these days, and seriously I think you guys are a one of the major reasons why Java is so great today.
I have extensively worked with Python and Ruby in past but my conclusion is that even though they ramp you up in the beginning but as the code base grows, it becomes harder to guess deeper in the codebase to guess what objects you're dealing with. Specifically in case or Ruby/Rails, the IDE's are of not much help as they're guessing/brute forcing the possible suggestions too.
The type hinting in Python is totally optional and I know you can have stricter linting rules and what not but I'd prefer a a little more statistically typed language for which I think go has the minimalism, won't let you over engineer. Other interesting promising candidates are Nim/Crystal.
So I can start my SaaS on such a Rails boilerplate but it'll be more of a liability of keeping up with the upstream codebase and my own but maybe that's my lack of confidence.
I don't understand, why are you guessing? Do you mean the parent objects of things you've written? Like ActiveRecord, etc. I would think that mental overhead is the same in any web+CRUD+ORM type of framework.
without types, all you have is the variable name to guess what it does.
IDEs help but there's only so much they can do.
There's one more framework being built on top of Rails and I think worth mentioning - RailsUI: https://railsui.com/
Rails is arguably “technology batteries included”, whereas this is more like “product batteries included”. There are many Rails sites that wouldn’t use these features, however there aren’t many Rails sites that wouldn’t use ActiveRecord or HTML rendering.
This seems like a great way to put it! At the lower level of abstraction, there's all of the technical stuff, but at the higher level of abstraction, you think more about the product and the business domain concepts.
The thing w/ Bullet Train is that so much work is done for you, that if you don't like an opinion or two that they hold, you really should start from scratch, as tearing things out will just take longer. Its the downside of having so much integration and configuration already done.
Not disagreeing, but wouldn't this be true of Rails itself? It's an opinionated framework. If you like those opinions, it's a great framework to use. If you don't agree with those opinions, you're probably better off using something else.
The types of things I tend to need to set up in any modern app is SSO integration, React integrated on the frontend, etc... These are annoying things I have to integrate every time I build something and are more or less industry standard at this point.
Devise (which BT uses for authentication) handles SSO quite effectively, with tons of provider support.
This is relative.
> React integrated on the frontend
This is something that I don't want at all. Regarding the SSO, without reading the code, I'm sure you are able to accomplish it using devise (included in their framework)
That said, this looks like a good product.
Are there other similar/competing things for Rails, and are there other competing SaaS-in-a-box things for other frameworks?
What's still missing is some kind of aggregated review service or something for these. From the outside it's still very difficult to tell the difference between "well-maintained, production-ready thing that has been used by hundreds of real businesses" and "some rando's app they threw on github / are trying to sell".
There is such a huge difference in quality/maturity for many of these and that is literally all you are paying for. Still a tricky market to navigate.
I would love to see them
Companies are regularly complaining it's getting harder to find senior+ Rails developers, which I think is a good problem to have.
there are also repositories, like https://railsbytes.com/, where you can peruse similarly pre-composed app templates of varying quality.
[0] https://en.wikipedia.org/wiki/Convention_over_configuration
Having said that, some of Rails opinions are becoming more optional lately.
Not just that, let's say even if type is known but some of the methods are generated on runtime than IDE has no idea about it.
You certainly can write and maintain code to add multi-tenant sso, but since omniauth does not support any configuration storage, you have to add that yourself.
People who just write SCSS don't even think about it.
Engineers learn to work with it due to that simple fact.
It's OK tbh, and it's easily interoperable between stacks so not really hard to pick up and useful if your project already uses it.
I tried to fight it at first, but I've only seen it being used more and more. Why fight the stream if there's no good reason for it?
Why jump tool chains when you already have more than enough on your plate to keep up with?
I watched a conference presentation last week from a front-end person who talked about FE design. He pulled up a slide on bootstrap and said "if you use bootstrap, everything will end up looking like twitter. your login page won't be able to be creative, you'll just look like every other login page".
I had to push back at the end of the presentation with some BS support. I don't use it much any more, but the obvious misinformation about bootstrap continues in 2023, and it's bothersome. FWIW, the presenter said "oh yeah, you're right, and it can be used well, but some people just use the defaults".
Separately, my experiences with tailwind have been less than exciting. Perhaps if I spent the $300+ on 'premium tailwind components' I'd be more on board?
> easily interoperable between stacks so not really hard to pick up and useful if your project already uses it.
And if I don't use it? I get a fair amount of pushback from colleagues sometimes for not jumping on the 'newest' things. Spoiler: I don't deploy many projects with docker either. Is that 'fighting' it? Or just using other established/tested/documented tools and proceses to get a job done?
For an app I may use bootstrap as it is a framework with bigger blocks.
They literally wrote the book on good design[1]
Besides, I'm not saying I think it's a fundamentally bad design, I'm saying those voices are drowned out by the people on-board with it - for a great example, consider how you just came into the conversation, squished the nuance I was discussing, and gave hyperbolic praise to their book just because you like their tool.
These can be applied without the use of tailwindcss.
Use of the framework tailwindcss has nothing to do with the book.
The framework itself goes against the intended use of css. It ignores the power of the cascade and leads to a pile of incomprehensible css repeated over and over again.
It is convenient and unreadable at the same time.
Handy if you don’t want to learn css and use it properly and completely unacceptable if you do.
These can be applied without the use of tailwindcss.
Use of the framework tailwindcss has nothing to do with the book.
The framework itself goes against the intended use of css. It ignores the power of the cascade and leads to a pile of incomprehensible
Millions of engineers are now more empowered to make design decisions - and given more convenient tools. The price - ignoring how CSS was designed to work, unreadable mess of classes in the markup, a bootstrap-like cookie cut approach to everything, and yes, the color purple.
A lot of people disagree with Tailwind's design philosophy on both the developer and consumer side of the code (i.e. DX and UI), so it's questionable what "real project" and "time saver" really mean; ironically, I question that your definition of "real project" even included a team with design chops.
I can see how that would also be a benefit to a "SAAS starter pack" where you have a small team wearing many hats, probably people with a familiarity with CSS but not experts. The code base in these early stage startups and side projects is going to be small and you want to move quickly. Tailwind is great at that.
However if you have a frontend team of CSS experts to draw upon, the benefits of Tailwind are fewer and the downsides are greater - your CSS people will not enjoy having your classes named things like "px-2 py-1 rounded border bg-blue-800 text-white font-bold hover:bg-blue-500" rather than just "btn btn-primary". They can iterate fast anyway and they will probably leave more maintainable HTML and CSS/SCSS in the long run.
However I'd still be interested if any large teams (with correspondingly large code bases) have made Tailwind work for them.
“No, you have never worked on a real project!” :)
Both can be real projects, without quotation marks. I’m constantly surprised that there are so many different ways and processes to build a website; and people who think theirs is the best.
If we're going to discard some projects as real, a pretty easy filter is "were multiple people required to build it". People who need Tailwind to provide their design system like Tailwind, but they are usually working on very small-scale projects they're unlikely to maintain and upgrade like a project with real users, real design, and multiple engineers would. And a pretty easy proxy for the latter type of shop is "do you have people who aren't even front-end engineers doing your design", and that commenter was displaying all those signals to me.
The right path is having tools the team is currently, or will be productive with, and isn't the markedly wrong tool for a type of job.
Html is split into components or views or partials. Links are inside loops etc.
You save time every time you don’t have to think about coming up with a new class name or how it might affect the hierarchy.
I totally understand it feels weird to begin with but on a major project you never worry that your css tweaks might affect some other obscure part of the site.
Do you believe that
The New York Times (2023): https://tailwindcss.com/showcase/nytimes
Shopify (2023): https://tailwindcss.com/showcase/shopify
OpenAI (2023): https://tailwindcss.com/showcase/openai
GitHub (2022): https://tailwindcss.com/showcase/github
The Verge (2022): https://tailwindcss.com/showcase/the-verge
Google (2022): https://tailwindcss.com/showcase/google-io-2022
Microsoft (2022): https://tailwindcss.com/showcase/dotnet
Netflix (2022): https://tailwindcss.com/showcase/netflix
Mashable (2022): https://tailwindcss.com/showcase/mashable
don't have teams with "design chops"?
----
Anecdotally, I can tell you that Tailwind is heavily favored by shiny designery startups. Many of the best designed websites these days are built with Tailwind, and design-oriented engineers are reaching for it first.
Back in 2018 I was arguing against utility classes and vetoing their use in projects I was involved with in favor of thoughtfully architected SCSS. By now in 2023 it's clear Tailwind has earned its place in high-end UI development.
Your first example implies "The New York Times" uses Tailwind. Besides that being hilarious, you click the link and immediately see there is a big subheading "Events"
I have never heard of NYT "Events", so I checked out their page:
https://www.nytimes.com/events
> Do you believe that [The New York Times Events doesn't] have teams with "design chops"?
Yes, yes I do.
Not really going to bother with the rest, you're joking if you think these top corps meaningfully rely on this 2-year-old CSS framework. I exactly believe that you're linking me to things thrown together quickly by a resource-strapped team, the "Events" example merely affirmed it
Edit: I sort of bothered
* GitHub Next - splash page
* Shopify - marketing page
* Google IO - marketing page
* Microsoft .NET - marketing page
* Netflix Global Top 10 - marketing page
* New York Times Events - extremely basic
* OpenAI - Attention grabber, but... the homepage didn't even use full width of nor center content in my 1440p display. Not exactly a UI-driven success
* Mashable, The Verge - Pretty bad websites.
This is my point. People use Tailwind to slap together something good looking and simple. They don't use it to build applications because you make your own design system for applications.
Some examples of SaaS companies that use Tailwind on the application side are PlanetScale, Fly.io, Lemon Squeezy, and Supabase.