NOTE: For a Tent v0.2 compatible version, see the 0.2 branch.
Status is a Tent app written in JavaScript/CoffeeScript using the Marbles.js framework. It supports publishing and consuming status posts.
There is an additional Ruby backend which handles authentication and serving up assets, and compiling a static version of the app.
All configuration options can either be set through environment variables or in a Hash
to TentStatus.configure
.
ENV | Key | Required | Description |
---|---|---|---|
APP_NAME | :name |
Required | Name to be registered with and display in title bar. |
APP_DISPLAY_URL | :display_url |
Optional | Public URL for app (used for app registration and your server will tag posts with it). Defaults to the github url. |
APP_URL | :url |
Required if running Ruby backend | URL app is being served from (Also required if static app isn't being served from the domain root). |
APP_DESCRIPTION | :description |
Optional | Description of app (used for app registration). |
APP_CDN_URL | :cdn_url |
Optional | URL of CDN containing compiled assets. |
APP_ASSET_MANIFEST | :asset_manifests |
Optional | Comma separated paths to asset manifest JSON file (required if using a CDN). |
ASSET_ROOT | :asset_root |
Optional | Root URL or path for serving assets. Defaults to /assets . |
ASSET_CACHE_DIR | :asset_cache_dir |
Optional | Filesystem path for sprockets asset cache directory. |
PATH_PREFIX | :path_prefix |
Optional | Path prefix for when app is mounted somewhere other than the domain root. |
ADMIN_URL | :admin_url |
Optional | URL of admin app. |
DATABASE_URL | :database_url |
Required if running Ruby backend | URL of postgres database. |
DATABASE_LOGFILE | :database_logfile |
Optional | Path to file for database logging. |
SESSION_SECRET | Required | Random string for session cookie secret. | |
JSON_CONFIG_URL | :json_config_url |
Required if running the app statically. | URL of config.json . |
SIGNOUT_URL | :signout_url |
Required if running the app statically. | URL accepting a POST request to revoke access to config.json . |
SIGNOUT_REDIRECT_URL | :signout_redirect_url |
Required if running the app statically. | URL for app to redirect to after signing out. |
SIGNIN_URL | :signin_url |
Optional | URL accepting a POST request with username and passphrase to grant access to config.json . (User is redirected to SIGNOUT_REDIRECT_URL instead of displaying an auth form if not specified.) |
SEARCH_API_ROOT | :search_api_root |
Optional | Skate API root. |
SEARCH_API_KEY | :search_api_key |
Optional | Skate API key. |
ENTITY_SEARCH_API_ROOT | :entity_search_api_root |
Optional | URL of service to provide entity autocomplete. |
SKIP_AUTHENTICATION | :skip_authentication |
Optional | Bypasses OAuth flow when set to true . This only works when config.json is loaded from another source. |
ASSETS_DIR | :public_dir |
Optional | Defaults to public/assets . |
DEFAULT_AVATAR_ROOT | :default_avatar_root |
Optional | Defaults to a static avatar. If set, appending "/" + encodeURIComponent(entity) should point to a unique avatar for that entity (see Sigil for more information). |
TODO: Entity search service and CDN support are not currently implemented.
Property | Required | Type | Description |
---|---|---|---|
credentials |
Required | Object | App authorization credentials. |
credentials.id |
Required | String | App authorization credentials identifier. |
credentials.hawk_key |
Required | String | App authorization hawk key. |
credentials.hawk_algorithm |
Required | String | Hash algorithm. |
meta |
Required | Object | Meta post content for entity. |
services.entity_search_api_key |
Optional | String | User-specific API key for entity autocomplete (ENTITY_SEARCH_SERVICE_API_ROOT app configuration option required for this). |
Example:
{
"credentials": {
"id": "HAWK-ID",
"hawk_key": "HAWK-KEY",
"hawk_algorithm": "sha256"
},
"meta": {
// full meta post json
}
}
heroku create --addons heroku-postgresql:dev
heroku pg:promote $(heroku pg | head -1 | cut -f2 -d" ")
heroku config:add APP_NAME='Status' \
APP_ASSET_MANIFEST='./public/assets/manifest.json' \
SESSION_SECRET=$(openssl rand -hex 16 | tr -d '\r\n') \
APP_URL=$(heroku info -s | grep web_url | cut -f2 -d"=" | sed 's/http/https/' | sed 's/\/$//')
heroku labs:enable user-env-compile
git push heroku master
heroku open
Ruby 1.9 and 2.0 supported. It has not been tested with 1.8.7.
The easiest way to get Ruby 1.9 or 2.0 on OS X is to use Homebrew.
brew install ruby
If you need to switch between ruby versions, use chruby and ruby-install.
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
createdb 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).
Clone this repository, and cd
into the directory. This should start the app:
bundle install
DATABASE_URL=postgres://localhost/status APP_NAME='Status' SESSION_SECRET=abc APP_URL=http://localhost:3000 bundle exec puma -p 3000
Here are some tasks that need to be done:
- Add HTML5 location to posts (opt-in)
- Dim domain.com when subdomain isn't www
- Scale avatar to 16x16px and display as favicon on profile pages
- 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 subscribed to
- 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.)
- Write tests/refactor code.
Design by Tommi Kaikkonen and Jesse Stuart. App by Jesse Stuart