Tent Status

A Sinatra/Backbone app that sends/receives Tent status posts

Fork: Get a copy of this app


Available Actions:

Star Watch View live app Fork: Get a copy of this app


A Sinatra/Backbone app that sends/receives Tent status posts

Git clone URL:

Buildpack URL:

This app uses:

  • web process
  • shared/postgres


TentStatus is a Sinatra/Backbone app that sends/receives Tent status posts.

Getting Started


heroku create --addons heroku-postgresql:dev
heroku pg:promote $(heroku pg | head -1 | cut -f2 -d" ")
heroku config:add APP_NAME='TentStatus Standalone' STATUS_ASSET_MANIFEST='./public/assets/manifest.json' COOKIE_SECRET=$(openssl rand -hex 16 | tr -d '\r\n')
git push heroku master
heroku open


tent-status has only been tested with Ruby 1.9. If you don't have Ruby 1.9 you can use your operating system's package manager to install it.


The easiest way to get Ruby 1.9 on OS X is to use Homebrew.

brew install ruby

If you need to switch between ruby versions, use rbenv and ruby-build.


sudo apt-get install build-essential ruby1.9.1-full libxml2 libxml2-dev libxslt1-dev
sudo update-alternatives --config ruby # make sure 1.9 is the default


tent-status requires a PostgreSQL database.


Use Homebrew or Postgres.app.

brew install postgresql
initdb /usr/local/var/postgres
postgres -D /usr/local/var/postgres
createdb tent_status


Bundler is a project dependency manager for Ruby.

gem install bundler


Node.js should be installed as a javascript runtime for asset compiliation (brew install node on OS X).

Starting tent-status

Clone this repository, and cd into the directory. This should start the app:

bundle install
DATABASE_URL=postgres://localhost/tent_status APP_NAME='TentStatus Standalone' COOKIE_SECRET=abc bundle exec puma -p 3000

There are additional ENV variables not presented above which can be configured as desired:

| name | description | | ---- | ----------- | | APP_ICON | URL pointing to an app icon used when creating the app in the OAuth flow | | APP_URL | URL app your app (e.g. https://status.example.com) that is also used in the OAuth flow | | APP_DESCRIPTION | Short description of your app that is used in the OAuth flow | | PRIMARY_ENTITY | An entity URI used to display a profile page instead of requiring authentication | | AIRBRAKE_API_KEY | API key for exception logging via Airbrake | | AIRBREAKE_HOST | Airbrake host to send exceptions to |


Here are some tasks that need to be done:

  • Add HTML5 location to posts (opt-in)
  • Fix replies to mentions when on the mentions page from inserting into the feed
  • Add inline conversation view (or a modal which renders the existing one)
  • Show location and other data from basic profile on the profile page
  • Dim domain.com when subdomain isn't www
  • Show number of unread posts in parens in page title
  • Add permissions field (including public checkbox) (see new_post_form.js.coffee)
  • Scale avatar to 16x16px and display as favicon on profile pages
  • Add section to view who reposted your posts
  • Collapse multiple reposts of the same post into a single post with multiple names/avatars listed at the bottom
  • Make it clear which followers are recent on followers page
  • Mark nav items selected (add 'active' class)
  • Add pluralizations (e.g. '1 Post', '6 Posts')
  • Timestamps on single post view should show full date
  • Add option to insert posts directly into the feed (rather than click 'x New Posts' bar)
  • Add option to show/hide replies from people your not following
  • IE compatibility
  • Add pagination query string to url and reload that position when reloading the page (load specified page and show 'x Newer Posts' bar above it which should load the previous page.)
  • Add full mobile compatibility (fix JavaScript issues on mobile browsers, use bootstrap mobile menu, etc.)
  • Write tests/refactor code.

Design by Jordan Staniscia and Jesse Stuart.