Copyright (c) 2023 Piethein Strengholt, piethein@strengholt-online.nl
RSSMonster is an easy to use web-based RSS aggregator, created as an alternative for Google Reader. RSSMonster features a lightweight fluid responsive design. It is written in JavaScript: Vue.js 3 for the frontend and Express for the backend. It uses Bootstrap for making the design responsive.
RSSMonster tries to mimic the behaviour of Google Reader. It marks items when you start scrolling. It knows what content is hot. It features progressive web app support, drag and drop support for managing feeds, dark mode, and more! RSSMonster is compatible with the Fever API. Feel free to add any contributions or new features.
- NodeJS 16.x or higher
- Git
- A Mysql installation (other databases will as well with some configuration)
- Clone this repository
git clone https://github.com/pietheinstrengholt/rssmonster.git . - Run
npm installin both theclientandserverfolder - Find the
.env.examplefile in the root of both theclientandserverfolder. Copy and rename the files to.env - Edit
.envinside theserverfolder and enter your Mysql or Database server login data (at least fill DB_DATABASE, DB_USERNAME and DB_PASSWORD). - Edit
.envinside theclientfolder. Change the VITE_APP_HOSTNAME, so it points to the back-end. - Run
./node_modules/.bin/sequelize db:migrate && ./node_modules/.bin/sequelize db:seed:allin side theserverfolder. this will add all needed database tables and content to your mysql database. Alternatively you can also uncomment the//force:true in the app.js inside the server folder to create the schema structure. - Optional: Add a cronjob to crawl http://localhost/api/crawl every 5 minutes.
If you would like to run RSSMonster in development mode I recommend to run:
- Inside the client folder:
npm run dev. - Inside the server folder:
npm run debug.
If you would like to run RSSMonster in production mode I recommend to run:
- Update the
VITE_APP_HOSTNAMEandVITE_NODE_ENVinside the fileclient/.env. Most likely you want to remove port 3000 and point to the url where the backend will be running. For production, make sure you set theVITE_NODE_ENVtoproduction. - Update the
NODE_ENVinside the fileserver/.env. For production, make sure you set theNODE_ENVtoproduction. - Inside the client folder build all the static files with:
npm run build. - Move the
distoutput folder created inside theclientfolder to theserverfolder. The NodeJS server is also capable of serving out static content. - Inside the server folder:
npm run start.
- Run the following command to build all the images:
docker-compose build - Run the following command to start the containers:
docker-compose up - The client will be running on port 8080 and communication with the backend takes place via 3000. Make sure these ports aren't being used. The mysql database is accessible via port 3306.
The production version has the server and client combined into a single container. The VueJS is also compiled into an optimized version. To build this single image, run the following command: docker build -t rssmonster .
Lastly you need to run the docker container. You need to provide the correct environment variables for the database server to connect to. Here's is an example: docker run -d -t -i -e NODE_ENV=production -e DB_HOSTNAME=localhost -e DB_DATABASE=rssmonster -e DB_USERNAME=rssmonser -e DB_PASSWORD=password -p 3000:3000 rssmonster
- Setup your AWS Security credentials: https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
- Download and install the Beanstalk CLI: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html
- Run the following command:
eb init - Select your region and use the aws-access-id & aws-secret-key from step 1.
- Provision a new environment:
eb create rssmonster-app --envvars "NODE_ENV=production" --database --database.engine mysql --database.username rssmonster --database.password "fvX2Ht8jXxXEYlZ6" - SSH into the new environment:
eb ssh rssmonster-app - Migrate the database content:
/app/server/node_modules/.bin/sequelize db:migrate && /app/server/node_modules/.bin/sequelize db:seed:all
RSSMonster is compatible with the Fever API. Apps like Reeder (iOS) will support this. To use the Reeder API (http://feedafever.com/api), point to the following url:
http://yourRSSMonsterurl/api/fever
Any username and password will work.
The following scripts and plug-ins are used within RSSMonster
- NodeJS https://nodejs.org/en/
- Twitter bootstrap: https://twitter.github.io/bootstrap/
- Feedparser: https://github.com/danmactough/node-feedparser/
- VueJS: https://vuejs.org/
- Vue infinite scrolling: https://github.com/PeachScript/vue-infinite-loading
- Waypoints: https://github.com/imakewebthings/waypoints

