CSC/ECE 517 Fall 2015/oss 35156
What is Syndicat?
Syndicat is a RSS reader written in Javascript. In its final form it will consist of three parts: a front-end UI, a back-end implemented in NodeJS, and a daemon that manipulates the back end for scheduled tasks (such as retrieving feeds.)
TinyTinyRSS is the project Syndicat is based on. Our goal is to refactor TinyTinyRSS’s code to a more modern format and to take advantage of the inherent performance improvements that can be had from asynchronous design. A secondary goal of the project is to provide an upgrade path to existing users of TinyTinyRSS. Ideally, they would be able to use the same database they were already using and just drop our new webapp on top of it to get started immediately. A tertiary goal of the project is to provide an upgrade path to TinyTinyRSS users so we can upgrade and refactor the database and other parts of the application and users will not lose data.
Our submission is a redesign of several models in the back-end. Written in Sequelize and tested using Mocha, there are a set of models that were already created (in the slow branch of the main fork) but these prototype models run extremely slowly.
Our contribution
Feed
This model can be found in /models/Feed.js. The tests for this model can be found in /tests/models/Feed_test.js. "RSS" (Rich Site Summary) is a format for delivering regularly changing web content. Many news-related sites, weblogs and other online publishers syndicate their content as an RSS Feed to whoever wants it. We redesign feed model and exclude unnecessary attributes and class methods which degrades the performance.
Feed Category
This model can be found in /models/FeedCategory.js. The tests for this model can be found in /tests/models/FeedCategory_test.js. Feed Categories are simply categories that can be applied to a particular feed. They have a label and are associated with a specific user. They can also be nested, a single feed can have may “child” feeds, all of which are tested for in the specified tests file.
Entry
Setup
To set up this project, you will need a recent version of Node. Any from 4-7 should work. You will also need NPM, and it should handle installing any further dependencies related to Node. You will also need a version of make for your system. Any version should do, but it was tested extensively on OSX using cmake and on Linux using the version prepackaged with Ubuntu 16.04. You can clone the repository here [1]
Running tests
You can lint this project by typing `make lint` or simply `make`. You can run all tests by typing `make test`. There is not yet a working build for this project.
Next Steps
Good next steps for this project would be:
- Finishing building the models in the TinyTinyRSS Schema
- Buildout of Feed syncing code
- Buildout of new UI