NewsApp is an open source application that enables users view news by selecting preffered sources and it also enables users to share news on social media. The application is easy to use and it provides users with latest news, users can also save fovorite news. Click here to access the application
- User can search for available news sources
- User can view all articles on a page
- User can search for articles
- User can sort Articles based on available sort type
- User can login via Google
- User can save news to favorite
- User can delete favorite news
- User can share articles on social media
- React - A JavaScript library for building user interfaces
- Express - Express is Node.js web application framework
- JQuery - This a javascript library
- Enzyme - Enzyme is used together with mocha, chai and expect.js to test this application
- axios - Used to make GET requests to external API's
- webpack - Used to bundle the app's js and scss files for usage in the browser
- react-google-login - Enables authentication with Google
- flux - It enables the app to implement the flux architecture
- jest - Used with mocha for test coverage report
- express - Used as the web server for this application
- The following depencies are required by the app during developmment
- eslint - This is a javascript syntax highlighter used to highligh syntax error during the development of this app
- jsdom, jsdom-global, mocha-jsdom, mock-local-storage - Used to emulate web browser during application testing.
- node-sass, sass-loader - This enables the app to use sass (.scss) directly in scripts
- sinon - Used with mocha and enzyme for mocking React components during test.
- babel-cli - It enables the app scripts to be tested with babel from the command line
- babel-core - It compiles es6 used in the app to es5
- babel-eslint - Used with ESlint to lint syntax errors
- babel-loader - Used with Webpack to transpile javascript codes
- babel-plugin-react-html-attrs - It help convert JSX
class
attribute intoclassName
- Babel-register - This framework helps to compile from es6 to es5
- css-loader - The css-loader is used with webpack and it interprets @import and url() like import/require()
- coveralls - Display test coverage
- dotenv - To protect secret ID
- events - Use to create emiter fir flux implementation
- history - Allows the app to implement history in routes.
- json-loader - Enables the app to inport json files.
- json-loader - Enables the app to inport json files.
- keymirror - used to create an object with values equal to its key names in constant files
- nodemon - to watch the files in the directory for any files change
- path - to get paths during production
- prop-type - used to document the intended types of properties passed to components
- react-loading - used to add animation while app is loading
- react-router-dom - Used to perform app routing
- sass-loader - Used for loading sass style
- webpack-dev-server - Serves as the server during development.
- Charisma CSS - Some part of the app was styled with this css framework.
- Font Awesome Icons - All font used were from Font Awesome library
- JQuery - Charisma css framework requires JQuery library for some actions.
- clone the project to new folder, copy and paste the commands below on your terminal
$ git clone https://github.com/omedale/d0-checkpoint1-newsapp.git
-install dependencies
$ npm install
-start the project
$ npm run serve
-
The tests have been written using Jest and Enzyme.
-
They are run using the
coverage
tool in order to generate test coverage reports.-To run test
$ npm test
News saved to favorite can only be view on the browser used to save the news, user cannot view favorite news on another browser.
(The MIT License)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.