Jiffy: How This Home Maintenance App Uses Ruby on Rails
Reading time: ~ 3 minutes
As a Rails development company who works with clients in all types of industries, we love learning about interesting companies who are using Ruby on Rails to power their business. While researching companies using Rails, I came across Jiffy – a Canadian home maintenance app built with Rails.
Below is a quick conversation I had with Michael Choi, CTO at Jiffy, about his experience working with Rails at the company. Michael heads up the technical team at Jiffy, working with a team of seven engineers including two mobile developers.
Here are some thoughts from Michael on working with Rails.
What is Jiffy?
Jiffy is an app that makes it easy for homeowners to get stuff done around the house. We match homeowners with the best trades exactly when they want them; all without the hassle of researching, calling, scheduling or negotiating. We’ve done all the research to make sure that you’re paying a fair price and that you’re getting the best trade for the job. Also, everything is under our satisfaction guarantee so you can rest assured that the work will be done properly.
Did this app originate on Rails?
Yes. While there are a ton of other web frameworks, Rails is unique in that it allows developers to rapidly prototype and get an MVP up and running quickly. Its convention-over-configuration convention makes it extremely easy to get started, and at Jiffy, we were processing our first jobs in 2-3 weeks.
What unique challenges does your app need to handle for users? How does Rails help with that?
I think one of the most understated benefits of Rails is how opinionated it is. It is very clear what Rails is good at and where it struggles - it doesn’t try to be something it is not. If you’re having trouble getting Rails to do something it wasn’t designed for, there’s probably a better solution out there and Rails is fine with that.
One of the biggest challenges at Jiffy is our need to develop many different “types” of products. While we have our main product on the Rails framework, we have many other services that need to mesh seamlessly with our core product. One recent example that comes to mind, is our chat system. When a user books a job, they want to be able to chat directly with the pro and vice versa. While we could have built the chat functionality using Rails, it made more sense to use a real-time database like Cloud Firestore and Firebase Functions.
Rails is a great place to start and build your business on, but you shouldn’t be afraid to adopt new technology or shard out into microservices. Rails is like a trusty workhorse - you can attach it to a cart, or a plow, or even a fancy Cinderella carriage. It may not be able to do all these things by itself, but it will always be there to embrace whatever role you throw at it.
Have you interacted with any gems or third-party tools lately that have impressed your team?
One of the most helpful gems by far, has been Stripe. We use Stripe as our primary payment processor, and their API and Ruby gem has been nothing short of amazing. The documentation is clear, easy to understand, and very easy to integrate into our stack. If you’re looking to add payment processing into your app, I’d definitely recommend taking a look at Stripe.
We have a very complicated payment flow, and Stripe makes it much more manageable. The level of control we have over how payments are made and delivered into our trades’ bank accounts is nothing short of extraordinary. Stripe also has a pretty neat mobile app, and for the first year or so, it was pretty addicting watching the push notifications come in every time a job was billed on Jiffy.
Have you encountered any shortcomings/frustrations related to Rails?
I think our biggest frustration with Rails was with its asset pipeline and lack of support for webpack. With the popularity of Javascript front-end frameworks on the rise, there was some level of difficulty in getting these working with Rails. We use React.js at Jiffy, and for a long time, it felt “wrong” integrating these two stacks.
Now with the release of Rails 5 and direct support for webpack, and a more “native” implementation into the asset pipeline, this isn’t that much of a concern anymore. Using Rails with React.js and Redux is now a breeze.
What is your team's process for handling Rails updates along with other work?
We try to set aside time in our product roadmap to account for major Rails updates. Luckily Rails isn’t moving as fast as Javascript - that would be a nightmare to try to keep everything up to date. Generally though, we try to stay up to date with every other minor version of Rails.
Do you have an effective pull request or pair programming system? What does that look like?
New developers are generally paired with a more senior developer in order to get them accustomed with our code-base and any idiosyncrasies we may have. We also pair up whenever we are learning new tech, or when we’re adopting a new architectural pattern. Generally though, we work independently with a strong emphasis on collaboration.
Jiffy is based in Toronto, Canada and is always looking for enthusiastic and skilled developers to join their team. We’re excited to see how they grow and adapt their web application within the Rails universe.