The Project: Personal News App Guided Design in Software Engineering Mohamed Ahmed (MA) Agenda Application Architecture Front-end Use Cases Back-end Use Cases Data Pipeline Use Case The Tech Stack...

1 answer below »
please create this personal news website project


The Project: Personal News App Guided Design in Software Engineering Mohamed Ahmed (MA) Agenda Application Architecture Front-end Use Cases Back-end Use Cases Data Pipeline Use Case The Tech Stack Front-end Back-end Data-store Data Pipeline To Do Description The Project a personal news app along the lines of Google News, Microsoft News, or Apple News. When signed up for the app, a user can pick areas of interest from given categories In addition, the user can add search terms to capture more specific articles. The news will be displayed in a “newsfeed” like Twitter or Facebook. The using can mark articles as a “favorite”. Users can follow other users of the app. When a user follows someone else, they will see that’s person’s favorites among own newsfeed. The app is smart enough not to show duplicate articles in the newsfeed. The order articles display shall be a combination of popularity and age. Important! This project will be unlike any you have worked on before It will require the participation of your team It will require self-directed research I will provide functional requirements I will not tell you how to implement it: instead you will tell me your detailed architecture I will not specify what technologies to use; instead you will tell me what you are using I will not tell you when to implement specific features; instead you will tell me your sprint plans Architecture Front-end Requirements Sign-up The app shall include a form to allow users to sign-up The app shall allow a user to choose their username The app shall request an email address from the user The app shall verify that the email address is valid The app shall require a strong password The app shall include a “confirmation password” on the sign-up form Sign-in The app shall provide a secure log-in The app shall provide a method for resetting the user’s password The app shall not expose passwords in the URL Front-end Requirements Newsfeed The app shall display a list of news articles in a feed Items in the app’s newsfeed shall be ordered by their ranking within categories If the user has not provided preferences, the news feed will contain the most popular articles (i.e. for a default user) The default user shall have (at minimum) the General category as a preference If the user has provided preferences, the news feed will contain recommended articles from the preferred categories If the user has provided search terms, the newsfeed will show those at the top of their category If the user has chosen followers, the newsfeed will include favorites from their followers. Front-end Requirements Profile The app shall contain a profile (or settings) page The profile page shall provide a means for changing the user’s password The profile page shall provide a means on choosing category preferences. The app shall support the following categories: Business Entertainment General Health Science Sports Technology The app shall provide a means of entering keywords for news topics Front-end Requirements Following / Followers The profile page shall show a list of people the user is following The profile page shall show a list of people who follow the user The profile page shall provide a search for finding users to follow The profile page shall provide a method of adding users to follow The profile page shall provide a method to stop following a user RESTful API Requirements The app shall implement a RESTful API that will connect the front-end to the data store and will provide computing horsepower on the server. Security The app’s API shall be secured using a bearer token in the http header The bearer token shall be an encrypted string used solely by the front-end app The bearer token shall not be saved as plain text on the source management system (GitHub) RESTful API Requirements The app shall implement the following RESTful endpoints Note. You may implement endpoints of your own design, as long as the app performs the functions described by the front-end requirements Endpoints There shall be a Post endpoint for sign-up There shall be a Post endpoint for sign-in There shall be a Post endpoint for password reset (forget) There shall be a Post endpoint for password change (profile) RESTful API Requirements Endpoints (continued) There shall be a Get endpoint to retrieve the user’s profile. There shall be a Post endpoint to update the user’s profile *** There shall be a Get endpoint to retrieve the user’s newsfeed *** There shall be a Post endpoint to mark an article as a favorite There shall be a Get endpoint to search for friends There shall be a Post endpoint to add users to follow There shall be a Delete endpoint to stop following a user There shall be a Post endpoint to add preferred news categories There shall be a Post endpoint to news search terms (key words) There shall be a Post endpoint to validate the email address Data Pipeline Requirements The application will have a data-pipeline that will pull relevant news articles from https://newsapi.org . The data pipeline is responsible for collecting new articles, compiling favorites, and building the newsfeed for each user. The pipeline is intended to run at regular intervals. An interval may be as short as an hour and should not be any longer than once each day. Data Pipeline Requirements Hint. Use newsapi to understand REST https://newsapi.org/docs Newsapi.org endpoints Everything /v2/everything – search every article published by over 80,000 different sources large and small in the last 3 years. Top headlines /v2/top-headlines – returns breaking news headlines for countries, categories, and singular publishers. Use Everything for gathering articles on key words Use Top headlines for gathering articles on preferred categories Hint #2. Use Postman (https://www.postman.com/) to test APIs Download at https://www.postman.com/downloads/ Data Pipeline Requirements Data Processing The Data Pipeline will scan user preferences and build a list of categories and key words to retrieve The Data Pipeline will determine an appropriate date range to retrieve based on prior runs of the pipeline The Data Pipeline will limit the number of articles in each category to ten per day The Data Pipeline will limit the number of articles from keywords to ten per keyword per day The Data Pipeline will count the number of times an article has been marked as a favorite The Data Pipeline will build the list of articles for each user’s newsfeed The Data Pipeline will save retrieved articles in the app’s data-store The Data Pipeline will save each user’s newsfeed in the app’s data-store Note. You may implement a pipeline of your own design, as long as the app performs the functions described by the front-end requirements Front-end Web Application Extra Credit: if it is a mobile app (must run on the device) Tech Stack options HTML and CSS JavaScript or TypeScript Jquery React, Vue, Angular, or Svelte Flutter React Mobile Kotlin and Swift (mobile only) Web Server options Nginx Apache API RESTful API Tech Stack options NodeJS Express (JavaScript) PHP Python (Fast Framework, Flask, Falcon, Django) Java C# Web Server options Ngnix – for NodeJS Apache – for Java, PHP IIS – for C# Gunicorn – for Python Data Pipeline Batch or offline data processing You may implement a CLI (command line interface) Tech Stack options Python Java C# C++ Scheduling options Cron Task Scheduler (if Windows) AirFlow Cloud tools on AWS, Azure, or GCP Other Hosting AWS (Amazon) Azure (Microsoft) GCP (Google Cloud Platform) Heroku Extra Credit: Deploying your solution in Docker containers Firebase Data-Store Relational MySQL MS SQL Server AWS SQL or Azure SQL No-SQL MongoDB Firebase DynamoDB (AWS) To Do This is your homework (complete by 9/16) Prepare a “Sprint planning presentation” Presentation to be about five minutes Contain these slides: Slide 1. Your team. Who is on it and their primary responsibility Slide 2. Your sprint 1 tasks. Include who is assigned to each Slide 3. Your backlog (use extra slides if necessary) Slide 4. The tech stack you intend to use
Answered 32 days AfterNov 13, 2021

Answer To: The Project: Personal News App Guided Design in Software Engineering Mohamed Ahmed (MA) Agenda...

Amar Kumar answered on Nov 20 2021
112 Votes
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here