SmallCommunities and J2: My New Rails Projects

I’m happy to tell you that we recently launched J2, a new version of JHTC.org, and that I’ve spun the core code off into an open source project called SmallCommunities. SmallCommunities is available on GitHub and I would love to see some other folks join in and help me move it forward.

The purpose of SmallCommunities is to provide a self-hosted subset of Meetup.com’s capabilities that allows complete customization of the site’s visual design while avoiding the, er, difficult to control quantity of emails sent by the Meetup service. Also, the current code expects events to be monthly, plus occasional extras, and membership to be paid while Meetup of course does not, though I think this could be easily altered.

The next version of JHTC.org will be an instance of SmallCommunities. If you think SmallCommunities might be of use to your group I’d be happy to work with your web team to get you up and running!

The code is written in Ruby on Rails 3.0.x and uses Devise for authentication, Compass, Haml and Sass for views and styling, RailsAdmin for managing most content and jQuery for active interfaces; SmallCommunities has a modest test base, mainly rSpec.

There are three key open features:

  • A flexible non-event page templating system
  • Photo uploads for events, members and non-event pages
  • Multi-level navigation menu support

While SmallCommunities isn’t a CMS it does need to support some static-ish pages such as About, Memberships and so on. I plan to adapt the sample code from Jose Valim’s excellent new Rails book, Crafting Rails Applications, so that these pages can easily reuse existing components without the person maintaining the site content to know Rails (and not require the site admin to do this work).

J2 is hosted on Heroku. I really like their service and was very happy to see them acquired by Salesforce.com last year because of the added resources and stability, and our site’s traffic is low enough to fit on the free service tier. However one drawback is that Heroku doesn’t allow apps to upload files to the server; instead one must use an alternative such as S3 and those are paid services and for now we hope to avoid hosting costs to the extent possible.

Accordingly any images must be included in the application when deployed to the server and uploaded separately to, say, Picasa (Google Images). I expect there’s a suitable free service, at least for the less that 2GB worth of images we might need, just need to do some research and then loop in the appropriate Ruby gem or jQuery plugin.

There are a number of good multi-level menu solutions available, this isn’t a new requirement by any means, but the first couple I’ve tried ran into issue with some of the existing Sass/Compass CSS and I’ve just not had a need to solve it.

Note: PayPal is the only payment mechanism currently supported, to avoid the need for–and substantial hosting costs of–SSL, though I’m open to patches that add, say, ActiveMerchant, and the database schema is mostly prepared for such a change.