The project is packaged with Maven and is built as a fat jar. Once the jar is built, it is possible to both initialize the database and start the HTTP server with the snapshot jar and the Dropwizard
server commands. These steps are covered below.
- Clone the repo.
$ git clone https://github.com/jtanza/rufus.git && cd rufus
- Set the JWT hash.
Rufus uses JWT for creating access tokens for user claims. The server key is read as an environment variable
(JWT_SECRET) and must be set prior to server startup. For convenience, a hash can be generated with bash/md5 and set directly.
$ export JWT_SECRET=$(echo -n a_super_secret_password | md5)
- Package the project.
$ mvn package
- Configure the H2 database.
$ java -jar target/rufus-1.0-SNAPSHOT.jar db migrate config.yml
- Start the server.
$ java -jar target/rufus-1.0-SNAPSHOT.jar server config.yml
Et voila, you’re done, enjoy!
(Once the application is up it will be listening on port
8080 and can be accessed in the browser at
P.S. On all subsequent launches (barring any including database migrations) it is simply enough to run the
./launch script to start the application.
Overview & Getting Started
Rufus leverages the ROME framework to parse user’s syndication feeds for use throughout the rest of the application.
The application operates on both anonymous and authenticated user sessions. Anonymous sessions return data from a predefined collection of ‘public’ RSS feeds.
Syndication feeds (
Sources internally) are displayed as
Articles on the frontend. After initial load, articles are cached internally with a short TTL as a trade-off on application speed/ real-time source updates. Most all feed processing logic (download, parsing, aggregation etc.) is contained within the FeedProcessor. All user facing article functionality is grouped within the ArticleResource and exposed through requests at
Also, please note that this project is still under development and as such much functionality may be currently broken/ missing. Below there is a small list of todo items I plan on implementing as quickly as possible (: