Currently, Apollo can be installed locally only. It requires a database apollo-test
to be created in PostgreSQL.
createdb -U postgres apollo-test
git clone https://github.com/woojiahao/apollo.git
cd apollo/
npm i
npm run start
Apollo uses the following technologies:
- Electron
- Typescript
- React
- Tailwind
- PostgreSQL
- React Rotuer can be used to help with "view switching" (i.e. having a SPA for an Electron app) and help to remove the need for maintaining a shared state across applications (i.e. each view, when reloaded, can reload the data accordingly based on the path provided)
- Communication between the main and renderer processes should be managed using IPC
To determine if an article is newly added to the feed, we employ the follow algorithm:
- Retrieve existing feed with articles from database
- Fetch the latest version of the feed
- For each feed,
- Compare the existing list of articles against the latest list of articles*
- If an article is completely new, add it to the list of existing articles
- If an article exists but has been updated, update it in the list of existing articles
- Commit any changes made to the database
* - Given that an article must include either a title or description, we will use those as a measure of "new".
If the article from the latest pulled feed has a completely different title/description, then that is a new article
If the article from the latest pulled feed has the same title/description, but differing content/link, we will
update that instead.
To make it easier to compare the contents, we will encode the content to Base-64
- Cache articles
- Auto refresh all feeds when first launching app
- Today feature
- Schedule refreshes for specific feeds
- Feed-specific actions like editing tag/name
- Deleting feeds
- Dark theme
- Bookmarks feature
- Handle the other types of RSS feed formats like Dublin Core
- Implement proper ordering for feeds