- MongoDB (Database)
- ExpressJS (Backend Framework)
- ReactJS (Frontend Library/Framework)
- NodeJS (Server Environment)
- AWS S3 Bucket for Image Storage
- Paypal Integration
- User Authentication using JWT Tokens and Refresh Token with Password Reset Feature
- Admin Dashboard to Add, Update or Delete Products in Database
- Shopping Cart Functionality with Quantity Adjustments
- Product Searching by Name & Category
- Responsive Design on Mobile Devices
https://github.com/Shital769/amazon-frontend.git
- Local MongoDB
- Install it from here
- Create .env file in root folder
- Set MONGODB_URL=mongodb://localhost/amazon
- Atlas Cloud MongoDB
- Create database at https://cloud.mongodb.com
- Create .env file in root folder
- Set MONGODB_URL=mongodb+srv://your-db-connection
$ npm install
$ npm start
# open new terminal
$ cd frontend
$ npm install
$ npm start
- Run http://localhost:3000/signin
- Enter admin email and password and click signin
-
Install required tools
-
Create React App
-
Create Git Repository
-
List Products
- create products array
- add product images
- render products
- style products
-
Add Page Routing
- npm install react-router-dom
- create route for the hoem screen
- create router for product screen
-
Create Node.JS Server
- run npm init -y in root folder called backend
- update package.json set type:" module"
- add .js to imports in backend
- npm install express
- create server.js
- add start command as node backend/server.js
- Connect Express with MongoDB
- move products.js from frontend to backend
- create route for /api/products
- return products
- run nodemon server.js
-
Fetch Products from Backend
- set proxy in package.json file in frontend
- npm install axios
- use state hook
- use effect hook
- use reducer hook
-
Manage State By Reducer Hook
- define reducer
- update fetch data
- get state from useReducer
-
Add bootstrap UI Framework
- npm install react-bootstrap bootstrap
- update app.js
-
Create Product and Rating Component
- create Rating component
- create Product component
- use Rating component in Product component
-
Create Product Details Screen
- fetch product from backend
- create 3 columns for image, info and action
-
Create Loading and Message Component
- create loading component
- use spinner component
- create message component
- create utils.js to define getError function
- display error messages
-
Implement Add To Cart
- Create React Context
- define reducer
- create store provider
- implement add to cart Button click handler
-
Complete Add To Cart
- check exist item in the cart
- check count in stock in backend
-
Create Cart Screen
- create 2 columns
- display items list
- create action column
-
Complete Cart Screen
- click handler for increment/decrement item
- click handler for remove item
- click handler for checkout
-
Create SignIn Screen
- create sign in form
- add email and password
- add signin button
-
Connect To MongoDB Database
- create atlas mongodb database
- install local mongodb database
- npm install mongoose
- connect with mongodb database
-
Seed Sample Data
- create Product Model
- create User Model
- create seed route
- use route in server.js
- seed sample product
-
Seed Sample Users
- create user model
- seed sample users
- create user routes
-
Create SignIn Backend API
- create signin api
- npm install jsonwebtoken
- define generateToken
-
Complete SignIn Screen
- handle submit action
- save token in store and local storage
- show user name in header
-
Create Shipping Address
- create from inputs
- handle save shipping address
- add checkout wizard bar
-
Create SignUp Screen
- create input forms
- handle submit
- create backend api
-
Implement Select Payment Method Screen
- create input forms
- handle submit
-
Crete Place Order Screen
- show cart items, payment and address
- handleplace order action
- create order create api
-
Implement Place Order Action
- handle place order action
- create order create api
-
Create Order Screen (history)
- create backend api for order/:id
- fetch order api in frontend
- show order information in two columns
-
Pay Order By PayPal
- generate paypal client id
- create api to return cleint id
- install react-paypal-js
- use PayPalScriptProvider in index.js
- use usePayPalScriptReducer in Order Screen
- implement loadPayPalScript function
- render paypal button
- implement onApprove payment function
- create pay order api in backend
-
Display Order History
- create order history screen
- create order history api
- use api in the frontend
-
Create User Profile Screen
- get user info from context
- show user info from context
- create user update api
- update user info
-
Publish To Heroku
- create and config node project
- serve build folder in frontend folder
- create heroku account
- connect it to github
- create mongoDB Atlas database
- set database connection in heroku env varibles
- commit and push
-
Add Sidebar and Search Box
- add sidebar component
- add search box component
-
Create Search Screen
- show filters
- create api for searching products
- display results
-
Create Admin Menu
- define protected route component
- define admin route component
- add menu for admin in header
-
Create Dashboard Screen
- create dashboard ui
- implement backend ui
- connect ui to backend
-
Manage Products
- create product list page
- implement backend api
- fetch data
-
Create Products button
- create products button
- implement backend api
- handle on click
-
Edit Product
- create edit product button
- create edit prodict ui
- display product info in the input boxes
-
Implement Update Product
- create edit product backend api
- handle update click
-
Upload product Image
- create cloudinary account
- use the api key in env file
- handle upload file
- implement backend api to upload
-
Delete Product
- create delete product button
- create confirmation dialog
- implement backend api to delete
-
List Orders
- create order list screen
- implement backend api
- fetch and display orders
-
Deliver Order
- add deliver button
- handle click action
- implement backend api for deliver
-
Delete Order
- add delete button
- handle click action
- implement backend api for delete
-
List Users
- create user list screen
- implement backend api
- fetch and display users
-
Edit User
- create edit button
- create edit product api
- display info in the input boxes
- implement backend api
- handle edit click
-
Delete User
- add delete button
- handle click action
- implement backend api for delete
-
Choose Address on Google Map
- create google map credentials
- update .env file withb Google Api Key
- create api to send google api to frontend
- create map screen
- fetch google api
- getUserLocation
- install @react-google-maps/api
- use it in shipping screen
- apply map to checkout screen
-
Email Order receipt by mailgun
- create mailgun account
- add and verify your domain to mailgun
- install mailgun-js
- set api key in ENV file
- change pay order in orderRouter
- send email order receipt
-
Review Products
- create submit review form
- handle submit
- implement backend api for review
-
Upload multiple images
- add images to product model
- get images in edit screen
- show images in product screen
-
Forget and Reset Password
-
Implement Carousel