Alexandre Ruban

January 2, 2022

I'm writing a Turbo Rails course

Let me first tell you a story. In December 2020, the team behind Basecamp and HEY released Turbo, a brand new library built to speed up web applications without writing any JavaScript, and its integration for the Ruby on Rails ecosystem Turbo Rails.

At the time, I was finishing a project: a single-page invoice editor built with React. It was the only page on the whole application that needed to be very dynamic, and so it was the only page we made with React. I like React, but the amount of work it required to build just this invoice editor was enormous. We had to add new dependencies to the application, add JSON endpoints, manage the state of the page with Redux, build forms with Formik, add front-end validations, rebuild the way error messages are displayed... It ended up being an exciting but very long project.

With the release of Turbo, I wondered if I could rewrite the invoice editor without writing a single line of Javascript. I read the Turbo Rails source code to understand how it works and even contributed to features that I needed for my project. It turns out it was easy to rebuild the entire invoice editor, with almost no custom JavaScript, with only a few lines of code, all of that using my favorite framework and the tools I love working with, such as Simple Form. I was blown away!

Since the Rails 7 release in December 2021, Hotwire, composed of Turbo and Stimulus, became the default front-end framework for Rails applications. Stimulus has been around for quite a while now, but Turbo is a brand new library for many Rails developers. I've been working with Turbo for a year now, and I decided to write a course to explain the main Turbo concepts. We will build a single-page quote editor inspired by the real-world project I worked on without having to write a single line of JavaScript.

I almost finished writing the course, and I will start releasing the chapters one by one soon. You can subscribe to this newsletter (no spam, I promise) if you want to get notified!