Here's the future of Business Class, a premium Rails starter kit.
The first version of Business Class started with a simple idea; to give Rails developers a quick scaffold to enterpreneurship. There were already some starter kits for people to pick up but their philosophy and choices were different.
The first and likely the biggest reason for me to start working on Business Class was to make support for Paddle a priority. As I used Gumroad, a MoR payment provider, for my books, I intented to use Paddle for my business.
I still decided to build on top of the Pay gem, but quickly changed the behaviour to follow Paddle 1:1. It has never been acceptable for me to have let's say an active subscription that was paused show up differently inside your application and on the Paddle dashboard.
Shortly after the initial version, Paddle released Paddle Billing and Business Class was first in the Rails world to support it. Then once the support landed in Pay, Business Class also aligned more with the upstream code.
The second reason is my personal love for Rails Omakase, defaults, and yes, Minitest and fixtures. RSpec is okay. I even spent most of my professional life writing RSpec, but the easy of the Rails default testing stack is something else.
The approach Business Class takes is still unique. Bullet Train is more of a framework on top of a framework. While powerful, I struggled to understand it quickly. Business Class is just your regular Rails app.
Business Class also aligns with Rails defaults favouring Solid trifecta, Minitest, fixtures, and Kamal. While a Kamal configuration is now in Rails 8 as well, it's nowhere near the place it enjoyes in Business Class.
At last, Business Class 2.0 shipped with enhanced CRUD generator that can now generate beautiful and responsive tables, supports bulk actions, integrates with Action Policy, and does it all the Hotwire way with loaders for slow connections, and what not.
All of that were good takes that will remain the core of future releases.
Since the beginning I am battling internally with three decisions that I am not entirely sure about.
The first one is the design. I chose to code it from scratch with pure Tailwind. It's all in one simple file and templates remain clean. But for a template such as Business Class there is a great argument to be made about providing Shadcn UI or daisyUI out-of-the-box.
The second one is Pay. I decided to rely on Pay gem because of its general acceptance and popularity, but I do believe I could have easier and smaller payments implementations if done from scratch. It's something that needs to be reconsidered again.
And finally the admin area. I skipped on having to learn an admin gem to learn in favour of generating basic admin CRUD that's easy to work with and update. However, same as with the component libraries, there would be good reasons to simply rely on one of the Rails admin gems for new projects.
Do we really need a template for something that will be a prompt? After all, language models get better every day. I believe, yes. Or at the very least, I myself prefer to start off from a template.
I want to start with a solid fixed foundation. LLMs are not deterministic and still come with bugs. I want to start with something solid, even if I would continue to build on top with vibe coding in Cursor.
It's true that the market of Rails templates is quite small and will be even smaller because of AI. However, I am okay with that. I am building Business Class as a sideproduct to my main endeavouros of shipping internet projects like LakyAI.
And there is one more thing. Business Class needs to become a great start for AI and AI-enhanced projects. Almost every business out there will have at least some AI capability built-in. Business Class should help with that.
So what does the future holds of Business Class 3.0 and beyond? There are several key ideas for the future, but the start will be publishing a doctrine, a spiritual guideline, not too different from Rails doctrine itself. This doctrine will form a foundation of Business Class and what it should aim to become.
Stay tuned!