{"id":13456945,"url":"https://github.com/stringer-rss/stringer","last_synced_at":"2025-12-18T07:32:18.455Z","repository":{"id":7880568,"uuid":"9255495","full_name":"stringer-rss/stringer","owner":"stringer-rss","description":"A self-hosted, anti-social RSS reader.","archived":false,"fork":false,"pushed_at":"2025-05-05T06:31:18.000Z","size":10006,"stargazers_count":4019,"open_issues_count":27,"forks_count":397,"subscribers_count":72,"default_branch":"main","last_synced_at":"2025-05-08T08:03:37.850Z","etag":null,"topics":["feed-reader","feedjira","rss","rss-reader","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stringer-rss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"mockdeep"}},"created_at":"2013-04-06T04:51:27.000Z","updated_at":"2025-05-07T04:18:54.000Z","dependencies_parsed_at":"2023-02-17T13:00:44.818Z","dependency_job_id":"c00aa9c2-cbfd-46a0-9e7a-39daa96e1cc2","html_url":"https://github.com/stringer-rss/stringer","commit_stats":{"total_commits":1154,"total_committers":118,"mean_commits":9.779661016949152,"dds":0.7452339688041594,"last_synced_commit":"f9f6cace83bbc698c35893995124bce2970da4f4"},"previous_names":["swanson/stringer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stringer-rss%2Fstringer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stringer-rss%2Fstringer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stringer-rss%2Fstringer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stringer-rss%2Fstringer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stringer-rss","download_url":"https://codeload.github.com/stringer-rss/stringer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254010793,"owners_count":21998993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["feed-reader","feedjira","rss","rss-reader","ruby"],"created_at":"2024-07-31T08:01:30.633Z","updated_at":"2025-12-18T07:32:18.278Z","avatar_url":"https://github.com/stringer-rss.png","language":"Ruby","readme":"# Stringer\n\n[![CircleCI](https://circleci.com/gh/stringer-rss/stringer/tree/main.svg?style=svg)](https://circleci.com/gh/stringer-rss/stringer/tree/main)\n[![Code Climate](https://api.codeclimate.com/v1/badges/899c5407c870e541af4e/maintainability)](https://codeclimate.com/github/stringer-rss/stringer/maintainability)\n[![Coverage Status](https://coveralls.io/repos/github/stringer-rss/stringer/badge.svg?branch=main)](https://coveralls.io/github/stringer-rss/stringer?branch=main)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/mockdeep?logo=github)](https://github.com/sponsors/mockdeep)\n\n### A self-hosted, anti-social RSS reader.\n\nStringer has no external dependencies, no social recommendations/sharing, and no fancy machine learning algorithms.\n\nBut it does have keyboard shortcuts and was made with love!\n\n![](screenshots/instructions.png)\n![](screenshots/stories.png)\n![](screenshots/feed.png)\n\n## Installation\n\nStringer is a Ruby app based on Rails, PostgreSQL, Backbone.js and GoodJob.\n\n[![Deploy to Heroku](https://cdn.herokuapp.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/stringer-rss/stringer)\n\nStringer will run just fine on the Eco/Basic Heroku plans.\n\nInstructions are provided for deploying to [Heroku manually](/docs/Heroku.md), to any Ruby \ncompatible [Linux-based VPS](/docs/VPS.md), to [Docker](docs/Docker.md) and to [OpenShift](/docs/OpenShift.md).\n\n## Niceties\n\n### Keyboard Shortcuts\n\nYou can access the keyboard shortcuts when using the app by hitting `?`.\n\n![](screenshots/keyboard_shortcuts.png)\n\n### Using your own domain with Heroku\n\nYou can run Stringer at `http://reader.yourdomain.com` using a CNAME.\n\nIf you are on Heroku:\n\n```\nheroku domains:add reader.yourdomain.com\n```\n\nGo to your registrar and add a CNAME:\n```\nRecord: CNAME\nName: reader\nTarget: your-heroku-instance.herokuapp.com\n```\n\nWait a few minutes for changes to propagate.\n\n### Fever API\n\nStringer implements a clone of [Fever's API](http://www.feedafever.com/api) so it can be used with any mobile client that supports Fever.\n\n![image](https://f.cloud.github.com/assets/56947/546236/68456536-c288-11e2-834b-9043dc75a087.png)\n\nUse the following settings:\n\n```\nServer: {path-to-stringer}/fever (e.g. http://reader.example.com/fever)\n\nEmail: stringer (case-sensitive)\nPassword: {your-stringer-password}\n```\n\n### Translations\n\nStringer has been translated to [several other languages](config/locales). Your language can be set with the `LOCALE` environment variable.\n\nTo set your locale on Heroku, run `heroku config:set LOCALE=en`.\n\nIf you would like to translate Stringer to your preferred language, please use [LocaleApp](http://www.localeapp.com/projects/4637).\n\n### Clean up old read stories on Heroku\n\nYou can clean up old stories by running: `rake cleanup_old_stories`\n\nBy default, this removes read stories that are more than 30 days old (that\nare not starred). You can either run this manually or add it as a scheduled\ntask.\n\n## Development\n\nRun the Ruby tests with `rspec`.\n\nRun the Javascript tests with `rake test_js` and then open a browser to `http://localhost:4567/test`.\n\n### Getting Started\n\nTo get started using Stringer for development you first need to install `foreman`.\n\n    gem install foreman\n\nThen run the following commands.\n\n```sh\nbundle install\nrails db:setup\nforeman start\n```\n\nThe application will be running on port `5000`.\n\nYou can launch an interactive console (a la `rails c`) using `rake console`.\n\n## Acknowledgments\n\nMost of the heavy-lifting is done by [`feedjira`](https://github.com/feedjira/feedjira) and [`feedbag`](https://github.com/dwillis/feedbag).\n\nGeneral sexiness courtesy of [`Twitter Bootstrap`](http://twitter.github.io/bootstrap/) and [`Flat UI`](http://designmodo.github.io/Flat-UI/).\n\nReenieBeanie Font Copyright \u0026copy; 2010 Typeco (james@typeco.com). Licensed under [SIL Open Font License, 1.1](http://scripts.sil.org/OFL).\n\nLato Font Copyright \u0026copy; 2010-2011 by tyPoland Lukasz Dziedzic (team@latofonts.com). Licensed under [SIL Open Font License, 1.1](http://scripts.sil.org/OFL).\n\n## Contact\n\nIf 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!\n\n## Maintainers\n\nRobert Fletcher [boon.gl](https://boon.gl)\n\n## Alumni\n\nMatt Swanson (creator), [mdswanson.com](http://mdswanson.com), [@_swanson](http://twitter.com/_swanson)\nVictor Koronen, [victor.koronen.se](http://victor.koronen.se/), [@victorkoronen](https://twitter.com/victorkoronen)\n","funding_links":["https://github.com/sponsors/mockdeep"],"categories":["Ruby","Software","ruby","Application Recommendation","网络信息服务"],"sub_categories":["Feed Readers","🤖 Automation Tools","网络服务_其他"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstringer-rss%2Fstringer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstringer-rss%2Fstringer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstringer-rss%2Fstringer/lists"}