Skip to content

This project is all about media monitoring. A lot of media currently is hosted online, and this project helps us detect when the media content changes, so that we can quickly react to it.

kirandash/rss-tracker

Repository files navigation

RSS Tracker

This project is all about media monitoring. A lot of media currently is hosted online, and this project helps us detect when the media content changes, so that we can quickly react to it.

Table of Contents

  1. Live Demo
  2. Tech Used
  3. Features Implemented
  4. Dev Setup
  5. Test Report
  6. Features not implemented

Live Demo

  1. Click here to watch the Demo video where I have explained how the App works and important features implemented. Or please read through the documentation below.
  2. Click here to check the live Demo of the application.
  3. Visit the rss feed page. It will show 2 feeds by default which are already being tracked by default.
  4. Try adding NDTV feed: https://gadgets.ndtv.com/rss/polls/feeds to the list of feeds and on adding, the app will start tracking news from NDTV with checking of live updates for every 3 seconds.
  5. You can remove the existing or new feeds from the list by clicking the trash icon.
  6. List of working feeds: Copy paste the below URLs into search field to see
  7. Note: For demo, many RSS feeds are not working because of CORS not being allowed for the APIs. And if any API could not be loaded: the App will show an error message.

Tech Used

  1. Angular v10.1.5 (Frontend Framework)
  2. NgRx v10.0.1 (For state management)
  3. RxJs v6.6.3 (For handling API calls)
  4. Karma and Jasmine (For testing)

Features Implemented

  1. Lazy Loading: The home page will load only the App module. And the RSS Feed screen has been created using another module called rss-feeds. Thus making sure that the app loads faster on first load and load the rss-feeds module only on visiting rssfeeds screen.
  2. Live Update: On rss feed page, all the added rss feeds will be tracked every 3 seconds to check if any new news has been deleted or added. And the deleted or added feed will be shown with an extra status text on top right corner.
  3. Performance Check: The live update feature is implemented by hitting the APIs every 3 seconds. But the code is written to make sure that the DOM re-renders only if there is any new data in the API. If the data in API and store is same: then DOM is not re-rendered thus improving DOM performance.
  4. Directive: Created custom directive called InputChangeDirective to add custom onChange behavior for input field and demonstrate how directives can be created and used.

Dev Setup

  1. Run git clone https://github.com/kirandash/rss-tracker.git to clone the project.
  2. Run npm install to install all the dependencies.
  3. Run npm start or ng serve for running the app on dev server.
  4. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.
  5. Test: Run npm test or ng test --code-coverage to run unit tests with code coverage report via karma task runner.
  6. Build: Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.

Test Report

  • Unit tests are added to the project to achieve maximum coverage. Reports of which are added below:
  1. Coveage Summary:

Test Report

  1. Test Specs execution:

Test Report

Features not implemented

  1. Due to time limitation, the RSS tracker App has following limitations:
    • The application is not responsive. And styled only for desktop layout.
    • No validation added for checking if a valid URL is already present in the list. Therefore if we add the same URL twice, the App will not show any message to the user.
    • No button to trigger search. Now, user will have to enter the URL and press return to add the new feed for tracking. Which obviously will limit the functionality to only desktop users.

About

This project is all about media monitoring. A lot of media currently is hosted online, and this project helps us detect when the media content changes, so that we can quickly react to it.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published