A self-hosted, anti-social RSS reader.
Switch branches/tags
Nothing to show
Clone or download
gabrielpoca Merge pull request #487 from Fvbor/patch-1
Gemnasium is migratet to Gitlab and closed
Latest commit 2ddfdf6 Aug 28, 2018
Failed to load latest commit information.
app Fixes entry parse if there is no URL Mar 30, 2018
config Upgrade Unicorn Mar 30, 2018
db Enforce double quotes Jan 24, 2016
docker Warn when starting Docker image without a DATABASE_URL set Sep 13, 2017
docs Deploy Stringer With Passenger And Apache Nov 5, 2017
log Move test log output to log folder Apr 12, 2014
screenshots Add support for Heroku button; move docs around a bit Aug 7, 2014
spec Fixes entry parse if there is no URL Mar 30, 2018
.dockerignore Adds a dockerignore file Nov 10, 2017
.gitignore Check in .ruby-version to power Gemfile version Feb 23, 2016
.rspec TDDing the feed parser stuff Apr 10, 2013
.rubocop.yml Upgrade rubocop Mar 22, 2016
.rubocop_todo.yml Upgrade rubocop Mar 22, 2016
.ruby-version Replace sinatra-assetpack with sprockets Mar 29, 2017
.tool-versions Upgrade Mocha to 3.5.0 Sep 9, 2017
.travis.yml Bump mocha-phantomjs to latest version Sep 9, 2017
Dockerfile Add Dockerfile Sep 11, 2017
Gemfile Bugfix: bump unicorn for after_worker_exit feature Apr 30, 2018
Gemfile.lock Bugfix: bump unicorn for after_worker_exit feature Apr 30, 2018
LICENSE update readme. add license. Apr 26, 2013
Procfile Make `heroku run console` do the right thing. May 23, 2013
README.md Gemnasium is migratet to Gitlab and closed Aug 28, 2018
Rakefile Explicitly set `db_dir` in Rakefile May 10, 2016
app.json Adding env vars to configure worker Apr 18, 2016
app.rb Make SECRET_TOKEN random by default Sep 14, 2017
config.ru Turn FeverAPI into a module Aug 29, 2013
docker-compose.yml Add docker-compose example and update docs Sep 23, 2017
fever_api.rb Fix rubocop errors. Aug 6, 2017



Build Status Code Climate Coverage Status

A self-hosted, anti-social RSS reader.

Stringer has no external dependencies, no social recommendations/sharing, and no fancy machine learning algorithms.

But it does have keyboard shortcuts and was made with love!


Stringer is a Ruby (2.3.0+) app based on Sinatra, ActiveRecord, PostgreSQL, Backbone.js and DelayedJob.

Deploy to Heroku

Stringer will run just fine on the Heroku free plan.

Instructions are provided for deploying to Heroku manually, to any Ruby compatible Linux-based VPS, to Docker and to OpenShift.


Keyboard Shortcuts

You can access the keyboard shortcuts when using the app by hitting ?.

Using you own domain with Heroku

You can run Stringer at http://reader.yourdomain.com using a CNAME.

If you are on Heroku:

heroku domains:add reader.yourdomain.com

Go to your registrar and add a CNAME:

Record: CNAME
Name: reader
Target: your-heroku-instance.herokuapp.com

Wait a few minutes for changes to propagate.

Fever API

Stringer implements a clone of Fever's API so it can be used with any mobile client that supports Fever.


Use the following settings:

Server: {path-to-stringer}/fever (e.g. http://reader.example.com/fever)

Email: stringer (case-sensitive)
Password: {your-stringer-password}

If you have previously setup Stringer, you will need to migrate your database and run rake change_password for the API key to be setup properly.


Stringer has been translated to several other languages. Your language can be set with the LOCALE environment variable.

To set your locale on Heroku, run heroku config:set LOCALE=en.

If you would like to translate Stringer to your preferred language, please use LocaleApp.

Clean up old read stories on Heroku

If you are on the Heroku free plan, there is a 10k row limit so you will eventually run out of space.

You can clean up old stories by running: rake cleanup_old_stories

By default, this removes read stories that are more than 30 days old (that are not starred). You can either run this manually or add it as a scheduled task.


Run the Ruby tests with rspec.

Run the Javascript tests with rake test_js and then open a browser to http://localhost:4567/test.

Getting Started

To get started using Stringer for development you first need to install foreman.

gem install foreman

Then run the following commands.

bundle install
rake db:migrate
foreman start

The application will be running on port 5000.

You can launch an interactive console (a la rails c) using racksh.


Most of the heavy-lifting is done by feedjira and feedbag.

General sexiness courtesy of Twitter Bootstrap and Flat UI.

ReenieBeanie Font Copyright © 2010 Typeco (james@typeco.com). Licensed under SIL Open Font License, 1.1.

Lato Font Copyright © 2010-2011 by tyPoland Lukasz Dziedzic (team@latofonts.com). Licensed under SIL Open Font License, 1.1.


If you have a question, feature idea, or are running into problems, our preferred method of contact is to open an issue on GitHub. This allows multiple people to weigh in and we can keep everything in one place. Thanks!


Matt Swanson, mdswanson.com, @_swanson

Victor Koronen, victor.koronen.se, @victorkoronen