# REACT STRUCTURE
## Core technique
### I. JS
- React (16.8.4 + )
- [x] Can use hook
- Structure project
- [x] components (presentation component or stateless component)
- Only stateless component
- As small as possible
- [x] containers
- Can dispatchAction to store
- pass prop to UI components
- [x]React-router-dom
- [x] Using to redirect page in app
- [x] Structure
- [x] Has template page
- [x] Switch active to switch body or part of app base on routes
- Compatible with redux
- Compatible with test library
- [ ]Redux
- Using to manage state in whole project
- Should structure store, action, reducer base on best practice of redux
- refs:
- https://redux.js.org/recipes/configuring-your-store
- Setup redux-devtool-middleware to debug for dev environment
- [ ]Redux-thunk
- Using to handle middleware
- Has basic(standard ) actions to handle an action request from app to server
- [ ]React-redux
- Using to connect redux store into react component
- [x]Lodash
- Utilities to handle functionality and prevent minor bug from type
### II. CSS
- [x] Setup scss compiler in webpack
- [x]Add styled-components into project
### III. Test (extra)
- Setup test(using Jest) for redux, styled-components
- Setup for shallow test
- Setup nock to fake request
### IV. Editor env
- [x]setup eslint, stylelint
### IV. Deploy + git control (extra)
- [x] Setup husky + lintstage that making sure we won't push any bug into git
- [x] setup travis to for continous testing and deployment
- [x] Setup heroku or any server that can host project and link it to travis