Discover RailsKits and Stop Writing Redundant Code
Ruby on Rails has become a very popular Ruby framework for creating web applications in recent years. An aspect of creating a web application is the need to repeatedly create the same base functionality over and over, until RailsKits came along to help ease the pain.
These are the tasks developers need to complete before moving on to the heart of the application. Most applications using Ruby on Rails implements some type of authentication, payments, automated billing and other repeated aspects of business application development. RailsKits is designed to solve these problems quite easily.
InfoQ had the opportunity to talk with the creator of RailsKits, Benjamin Curtis, to learn more about this concept and the various types of RailsKits available and their uses.
Robert Bazinet (RB): Who is Benjamin Curtis?
Benjamin Curtis (BC): I'm an entrepreneur, startup junkie, and Rails developer based in Seattle, WA. I enjoy everything related to running online businesses, from conceptualization, to development, to promotion. I blog about web development in general and Rails in particular, I run the Rails plugin directory, and I enjoy contributing to open source projects as I get the time. An area of online business that I'm particularly interested in is e-commerce, having built a large-scale storefront in the early days of Rails, through to the present where I'm still building e-commerce solutions like NextProof, a self-service storefront portfolio and storefront builder for professional photographers.
RB: What are RailsKits?
BC: RailsKits are starter Ruby on Rails applications that help developers get a quick start on their applications that have a need for common, plumbing-type functionality such as recurring billing. Basically, the idea is that there are some problems, like securely storing credit card numbers and charging them on a monthly basis, that are fairly generic and don't add much value to your particular application, so why spend your time re-inventing the wheel? Get the RailsKit that provides the solution to that problem, and get on with the interesting stuff.
RB: How did you come up with the idea for RailsKits?
BC: I came up with the idea for RailsKits after having built a couple of software-as-a-service (SaaS) web applications. Since I primarily work on B2B applications based on the freemium model, I found I was re-using the billing code I had written for earlier projects as I started new ones. As I did this, I realized that I didn't really enjoy working on that kind of code, since it's not terribly fun, etc., and I figured there were other developers in the same boat. Given the choice, they'd like be happy to buy code that already implemented recurring billing -- spending a little bit of money to save a lot of time and get their applications delivered more quickly. So, I extracted the billing component that I had polished up over the course of a few projects, packaged it up, and offered it for sale.
RB: What are the particular problems RailsKits intends to solve?
BC: I've mentioned recurring billing / customer subscription management as one area that has a RailsKit solution. Another RailsKit, recently released, provides a platform for building mapping applications by implementing the Google Maps API and handling the goecoding and map marking for you. A third RailsKit, the OpenID Kit, which I offer for free at the site, gives Rails developers a starting point for building applications that use both classic username/password logins, as well as OpenID logins. So, as a developer, you don't have to worry about the OpenID API, or even integrating the OpenID Rails plugin... you just download the Kit and start building your app with those login methods already in place.
RB: What types of projects are good candidates for RailsKits?
BC: If you are a developer building an application that has a common need, such as recurring billing, or OpenID authentication, that application is a great candidate for using a RailsKit as a starting point. Applications that are solving entirely new problems may not be a good fit.
RB: What are the various RailsKits you offer and what are their purpose?
BC: The first Kit is the SaaS Rails Kit, which provides a starting point for a subscription-based web application. If you want to build a multi-tenant web application that bills your customers monthly by credit card, this Kit will provide you the recurring billing code and the ability for customers to create and up/downgrade their accounts. It also gives you a framework for maintaining data privacy among customers, and for implementing product plan tiers based on limits such as number of users on an account, the amount of storage space used, etc. Other Kits include a sample implementation of the PayPal API, an implementation of OpenID, and an extension for Radiant that adds the ability to have a members-only section for a Radiant-based site.
RB: What type of support do you offer with the kits?
BC: I offer email support for any questions related to implementing, customizing, and deploying applications based on the Kits. I also host mailing lists for customers to help each other with questions.
RB: Since the kits are open source what type of license are the kits released under and how can developers enhance the kits and distribute them?
BC: You do get the source when you purchase a Kit, but it's not under an open source license. The license allows you to use and modify the source code, but not redistribute it, except in the case where you are a building a solution for a client using a Kit as a starting point. Then you can, of course, share the code with that client.
RB: Is it possible to give our readers some examples of how some customers are using the kits? For example some sites readers may find interesting which were created using the kits.
BC: The first customer application to be deployed using the SaaS Rails Kit is NextProof, an e-commerce platform for professional photographers. This was a client project of mine, and it was during this project that I took the billing code that I originally created for Catch the Best and extracted it out into framework that could be easily re-used in a variety of projects. Sifter is another site using the SaaS Rails Kit.
RB: I noticed you built a rather unique application with one of the kits you offer to find local office space. Can you tell us about the kit and the application created?
BC: Recently I launched the Map Rails Kit, which makes it super-easy to build a Google Maps mashup. It has an implementation of the Google Maps API, and it includes address geocoding for you, so all you have to do is have a list of addresses, and the Kit will take care of geocoding them and putting them on the map for you. It's so easy to put up a mapping application with this Kit, that I put one up myself at OfficeMapper. Since my current office lease is coming to an end soon, I'm shopping around for new office space, so I created a script that pulls the address office rental listings from Craigslist and maps them using the Kit. Now I can see visually what office space is available near my house.
RB: What type of RailsKits do you plan to offer in the future?
BC: I have three or four Kits in various stages of completion, some more tailored to being good examples of common implementation questions (like the PayPal Rails Kit), and some more targeted at being a drop-in solution for commonly-needed functionality in all Rails applications (like the SaaS Rails Kit). I'll be making some announcements soon (and offering discounts, too!) on the Rails Kits mailing list, so be sure to sign up in the footer at the RailsKits web site.
More information about all of the RailsKits can be found on the company's web site.