- introduction
- install tools
- create-react-app
- Create Git repository
- create node js server
- run npm init in the root folder
- update package.json set type: module
- Add .js to imports
- npm install express
- create server.js
- add start command as node backend/server.js
- require express
- create route for / return backend is ready
- move products.js from front to backend
- create routes for api/products
- return products
- run npm start
- set proxy in package JSON
- npm install axios
- use state hook
- use effect hook
- use reducer hook
- npm install react-bootstrap bootstrap
- update App.js
- define reducer
- update fetch data
- get state from useReducer
- fetch product from back end
- create forums for image, info and action
- create loading component
- use spinner component
- create message component
- create utils.js to define getError function
- create react context
- define reducer
- create store provider
- implement add to cart button handler
- check exist item in the cart
- check count in stock in backend
- create 2 columns
- display item list
- create action columns
- click handler for inc/dec item
- click handler for remove item
- click handler for checkout
- create atlas mongo-dm
- install local mongo-db database
- npm install mongoose
- connect to mongo-db database
- create product model
- create user model
- create seed route
- use route in server.js
- seed sample product
- create user model
- seed sample users
- create user routes
- create a sign in api
- npm install jsonwebtoken
- define generate token
- handle submit action
- save token in store and local storage
- show username in handle
- create form inputs
- handle shape shipping address
- handle checkout wizard bar
- create input forms
- handle api
- create backend api
- create input forms
- handle submit
- show cart items payment and address
- hold a place order action
- create order create api
- handle place order action
- create order create api
- create backend api for order/:id
- fetch order api in frontend
- show order information in two columns
- generate paypal client if
- create api to return to client id
- install react-paypal-js
- use paypalScriptProvider in index.js
- use paypalScriptReducer in orderScreen
- implement loadPaypalScript function
- render paypal button
- implement on approve payment method
- create pay order api in backend