Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Ruby Clojure CSS HTML JavaScript


Community is a hybrid forum and mailing list server.

CircleCI Build Status


  • Ruby 2.2.1
    • bundler
    • foreman
  • Postgres 9.3.5
  • redis
  • leiningen
  • Elasticsearch

Installing dependencies on OS X using rvm, Homebrew, and

We recommend if you're on OS X.

Ruby stuff using rvm:

$ rvm get stable
$ rvm install ruby-2.2.1
$ rvm use ruby-2.2.1
$ gem install bundler
$ gem install foreman

Leiningen and redis using Homebrew:

$ brew update
$ brew install leiningen redis elasticsearch
# follow the printed instructions to have redis and elasticsearch start automatically on boot


We use foreman which sets environment variables from a .env file. We don't check this into version control because it contains secret information. Here is a sample .env file to get you started:




# If you want to import accounts from the Recurse Center
# (You won't be able to do this unless you are Recurse Center faculty)
# HACKER_SCHOOL_API_SECRET_TOKEN=hacker_school_api_secret

# If you want to develop against a local copy of the Hacker School API, add:
# HACKER_SCHOOL_SITE=http://localhost:5000

# Needed for batch mail sending in production
# MAILGUN_API_KEY=your_mailgun_api_key

To generate a Recurse Center client id and secret, go to your Recurse Center settings page and make a new OAuth app. The redirect url should be http://localhost:5001/login/complete (or your development host name if you don't develop off of localhost).

Running the code

The first time you run the code, install necessary gems and set up your database.

$ bundle
$ bin/rake db:setup

After that, start your development server and start building the client JS.

$ foreman start

# In another terminal:
$ cd client
$ lein cljsbuild auto

Running the production ClojureScript

The production client code will sometimes function differently than the development code. This can happen when you forget to add externs for a library you are calling, or if lein cljsbuild auto randomly makes a bad client. Because of this, we should test the production client before deploying. To do that, you can set CLIENT_ENV to production and run Foreman. If you don't set CLIENT_ENV, it defaults to the Rails environment.

$ CLIENT_ENV=production foreman start

Where is db/schema.rb?

Look at db/structure.sql instead. We use this because it supports Postgres views.

Client testing

We use a small ClojureScript wrapper over Jasmine for testing our client. If you're running lein cljsbuild auto (as above), the client tests will be built automatically.

To run the client tests:

$ bin/rake jasmine
# Navigate to localhost:8888 to run the tests.
# Refresh the page to re-run the tests.


Copyright © 2015 the Recurse Center

This software is licensed under the terms of the AGPL, Version 3. The complete license can be found at

Something went wrong with that request. Please try again.