Project - adichills/kammardi-s-aditya-webdev GitHub Wiki

News Graph

News Graph is a website which acts like a portal to news articles published by about 70 news media from all across the globe. It is a one stop solution for a user who

  • Needs to catch up on leading headlines from various parts of the globe
  • Needs a personal dashboard to filter articles from only those news media he/she is interested in
  • Needs to keep track of the local news in a foreign country and news from back home (If they are travelling)
  • Wants to publish articles to all his/her subscribers and read articles from the people he/she has subscribed to.
  • Wants to see what news articles his/her followers or the people whom he/she has followed are reading. News Graph will use NewsAPI as the source for data.

Problem Statement

  1. Consolidation of World news in one place - In this age of internet access to news from different parts of the world is just a website click away. Each country has multiple leading news media. Now its easy to quickly understand that there are too many websites and one has to know or book mark these many sites.
  2. Personalization - Now it so happens that each one of us is interested regularly follow about 3 to 4 leading news websites in our free time. It would be nice if there is a portal where the top articles from only these 3 to 4 websites can be seen and clicking on them would take us to the respective websites. It will be convenient if there is a dashboard consisting of snippets of latest articles from these 3 to 4 news websites.
  3. Local News - People travel all over the world these days and sometimes tend to stay in different parts of the world for extended lengths of time and it will be very useful if there is access to some of the leading news websites in that specific country they are in ,in addition to the news back home.

Proposed Solution

  1. News Graph aims to solve the problem of consolidation of world news in one place by retrieving news articles from around 70 leading news publishers from around the world, courtesy NewsAPI, where the reader can search these 70 leading news publishers and will be directed to a search result page and the reader has access to snippets/full content of top news articles from these websites and if they wish to read more can be redirected to the actual news website.
  2. News Graph provides personalization by providing a dashboard for each user and the dashboard has articles filtered from the top websites the user has selected.
  3. News Graph will give an option to each user to select their home country and the country they are currently in. And based on this information there will be a section in the dashboard called Local News and Home News which shows top articles from their respective countries (Currently the source of these news would be from the 70 odd api’s news network provides)

Domain Objects

  1. News Media (70 Websites provided by News API)
  2. Articles (2 – Categories, Articles from News Media and Articles from users which his/her subscribers can read)
  3. Dashboard – Which consolidates the articles from various sources, and is personalized to a user

Users Roles

  1. Admin
  2. Reader
  3. Publisher
  4. Anonymous

Goals for Users

Admin

  1. Manage Users (CRUD Readers, Publishers and other admins)
  2. Manage Articles (Remove articles, hide articles for users of a particular country)
  3. Manage Comments in the articles
  4. View site statistics (Number of articles, No of comments, No of users etc.)

Reader

  1. Search articles from various news media
  2. Organize a dashboard which will show articles only from a select few websites
  3. Choose home location and away location and view articles from news media from these regions
  4. Comment on new articles
  5. View articles read by people they are following
  6. Save Articles

Publisher

  1. Publish new articles
  2. View articles read / saved by their subscribers
  3. Manage comments on their articles
  4. Report abusive subscribers

Anonymous

  1. Search articles from various news media and view the search results
  2. Register to be a publisher / reader

User to User relation

Admin to Reader

  1. Manage Reader (CRUD operations)
  2. View Saved articles of reader
  3. View comments activity of reader

Admin to Publisher

  1. Manage Publisher (CRUD operations)
  2. Manage articles written by a publisher

Reader to Publisher

  1. View articles by publishers
  2. Comment on articles of publishers
  3. Privately message publisher (Future enhancement)

Publisher to Reader

  1. View articles saved by a reader
  2. Remove reader from subscribers list
  3. Report abusive reader
  4. Delete comments by a reader

User to Domain relation

Admin to News Media

  1. Manage News Media (Add /Remove a news media(From the available list of news media) to be active across the website .
  2. Block a news media from showing in the search results(of users) of a particular country

Reader to News Media

  1. Search a News Media and view articles from the news media
  2. Save a news media as favorite

Admin to Articles

  1. Manage Articles (CRUD operations)
  2. Manage Comments on articles

Reader to News Media

  1. Search articles by news media
  2. Choose a news media as favorite

Reader to Articles

  1. Read articles
  2. Comment on articles
  3. Save articles

Reader to Dashboard

  1. View dashboard on login
  2. Add/Remove news media favorites
  3. Update home and away location

Publisher to Articles

  1. Manage articles (CRUD)
  2. Manage comments on articles

Domain to Domain

News Media to Articles

  1. Each news media has multiple articles associated with it.

News Media to Dashboard

  1. Each new media can be configured to be a favorite in a dashboard

Articles to Dashboard

  1. Each article can be saved on a dashboard

Articles to News Media

  1. Each article is associated with only one news media

Dashboard to News Media

  1. Each dashboard can be associated with many News Media configured as favorites
  2. Each dashboard can be associated with many News media as a result of user’s location configuration