This application is intended to illustrate a non-trivial React application in conjunction with the Redux "predictable state container".
Redux is said to evolve the ideas of Flux, but it generally handles the concerns of Flux in terms of managing data flow and state within an application.
This application is described as non-trivial as it intends to show patterns found in more sophisticated applications in this genre, such as:
- OAuth2 based authentication
- JWT based authorization
- "authorization-aware" routing
- infinite-scrolling
- Redux in conjunction with Promises
this application illustrates usage patterns for the following elements:
- webpack for build
- react for view
- react-router for routing
- redux for state management and data-flow
- babel for es-next syntax
- bootstrap for css styling
- axios for promise based http requests
- hellojs for client-side authentication via oauth
- jwt-decode for decoding jwt tokens
- react-waypoint for react style infinite-scroll
- json-server for mock server api's
this application also illustrates use of the following redux-centric add-ons:
- redux-actions for idiomatic generation of redux actions and reducers
- redux-thunk middleware for handling function based actions
- redux-promise middleware for handling promise based actions
- redux-logger middleware for logging redux state changes to console
- redux-simple-router for integrating router state with redux
- redux-devtools for improving the redux developer-experience (DX)
- redux-form for managing form state in redux store
- git clone https://github.com/tony-kerz/redux-scratch
- cd redux-scratch
- npm install
- npm run generate-mock-data
- npm run dev-mock
- visit http://localhost:8080 in browser
- this was built using Node >= 5.x and NPM >= 3.x
- redux-devtools is hidden by default, but hit ctrl-H to bring it on
- this was only tested in chrome
Version 47.x
so far, so YMMV in other browsers