Awesome
Stringer
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!
Installation
Stringer is a Ruby (2.3.0+) app based on Sinatra, ActiveRecord, PostgreSQL, Backbone.js and DelayedJob.
Running locally
Click the button bellow to quickly and safely install this project on your local machine.
The Run Project
button employs azk
, a lightweight open source orchestration tool that will automatically isolate and configure the application's environment for you.
Learn more about azk
here.
Deploying to DigitalOcean
After you run this project locally using Run Project
button, deploying to DigitalOcean is very simple.
First, be sure you have SSH keys configured in your machine. If you don't have it yet (or if you aren't sure about it), just follow steps 1 and 2 of this tutorial.
Next, put your personal access token into a .env
file:
$ cd path/to/the/project
$ echo "DEPLOY_API_TOKEN=<YOUR-PERSONAL-ACCESS-TOKEN>" >> .env
Then, just run the following:
$ azk deploy
The Run Project
button employs azk
, a lightweight open source orchestration tool that will automatically isolate and configure the application's environment for you.
Find instructions for further resources (mostly customizations) to deploy to DigitalOcean using azk
here.
Deploying 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, and to OpenShift.
Niceties
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.
Translations
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.
Development
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
.
Acknowledgements
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.
Contact
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!
Maintainers
Matt Swanson, mdswanson.com, @_swanson
Victor Koronen, victor.koronen.se, @victorkoronen