Skip to content

Healthistic- a great place for people serious about health and fitness. We're a young start-up of around 400 people that work for your needs in fitness and well-being. We deliver everything from genuine protein supplements to vitamins smoothly at honest prices.

License

Notifications You must be signed in to change notification settings

faisalinfinity/Healthistic-HealthKart-clone-Full-Stack-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

Healthistic- a great place for people serious about health and fitness. We're a young start-up of around 400 people that work for your needs in fitness and well-being. We deliver everything from genuine protein supplements to vitamins smoothly at honest prices.

Homepage

Product Page

SingleProduct Page

Cart Page

Checkout Page

Profile page

Admin Panel : Dashboard

Admin Panel : Add Product Page

Admin Panel : Edit Product Page

Admin Panel : Manage Orders Page

Tech Stack

Front-End

  • HTML
  • CSS
  • JavaScript
  • React

Back-End

  • NodeJS
  • Express
  • MongoDB

External CSS Library

-Chakra UI

#Front-End Deployment - vercel #Back-End Deployment - Cyclic

Folder Structure and Packages

==>Before you start:

  • I have already created all the folders which you will need during journey.

  • Dont use any other folder to make files if you are doing please inform the team members that you have created a folder with name.

  • I have already setup all the things related to redux, .env, Chakra UI and react-router-dom You guys have to just start developments.

  • Also given you sample Navbar and Footer components so that you get comfortable about folder components export.

  • You will get all the routing files in routes folder.

  • You can also use context-api if needed.

  • All the end-points and base-url should be in env files.

  • Use assets folder for images,pdf,video..etc

  • Use components folder for making components either in folder or without folder just be sure naming should not match with other folder/file to avoid collision

  • Use pages folder to create all the pages

  • Use routes folder to all the routing related stuffs

  • Use scripts folder for any js script you wanna write.(this folder helps you to keep jsx and js folder separate)

  • Use styles folder to keep your all css files.

  • Use constants folder to create all the constants (Helps you reducing hard-coding)(Most recommended)

=> Clone the directory to start work $git clone https://github.com/faisalinfinity/cuddly-smoke-9747.git

=> Ok guys here are the some basic instruction before you start , If you are here you are successfully pulled the code and you are ready to type you first command in terminal.

Step-1- Navigate to proeject directory using $cd remarkable-veil-524

Step-2- install node_modules using $cd npm install

  • It will install some common dependencies:-
    • $npm install react-router-dom redux react-redux redux-thunk axios
    • $npm install @chakra-ui/react @emotion/react @emotion/styled framer-motion

=> Some basic requirements(Mandatory): 1- You have to work in daily branches manner, so you have to create new branch everyday . So you have make branch using your student_code followed the day in which you working. below is the eg for my branches.

           - branch-naming style: fw21_XXXX_day-x

        -for day-2 branch name should be: fw21_1117_day-2
        -for day-3 branch name should be: fw21_1117_day-3
        -for day-4 branch name should be: fw21_1117_day-4
        -for day-5 branch name should be: fw21_1117_day-5

    2- How to create branches:
        - $git branch <branch-name> (without angle brackets)

    3- How to switch branches:
        -$git switch <branch-name>  (without angle brackets)

    4- How to pull:
        -$git pull origin <branch-name>    (without angle brackets)

=> Some helpful Tools during development :
- Chakra-UI - https://chakra-ui.com/
- Chakra-Templets - https://chakra-templates.dev/#
- String Builder - https://codebeautify.org/string-builder
- Chat-gpt - https://chat.openai.com/chat

DATABASE SCHEMAS

endpoints:-

/user

|GET
`/user`-------> |POST
                |-----> `/user/register`  //for registering user

                   {
                        name:"Faisal",
                        email:"mujtabafaisal944.fkgmail.com",
                        password:"12234",
                        profile:(optional)
                    }
-------------------------------------------------------------------------------------------------------
                |POST
                |-----> `/user/login`

                   {
                       
                        email:"mujtabafaisal944.fkgmail.com",
                        password:"12234",
                       
                    }

-------------------------------------------------------------------------------------------------------

                |GET
                |---> `/user/admin` 

                  headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
                    }

-------------------------------------------------------------------------------------------------------


/product

|GET/POST
`/product`---> |GET/PATCH/DELETE
                |-----------------> `/product/:id`

            |GET -----> /product?category=vitamins

               headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
            }

-------------------------------------------------------------------------------------------------------            

            |POST --> /product

                [{

                    image: { type: String, required: true },
                    title: { type: String, required: true },
                    description: { type: String, required: true },
                    price: { type: Number, required: true },
                    originalPrice: { type: Number, required: true },
                    sizes: { type: String, required: true },
                    category: { type: String ,required:true },
                    rating: { type: Number, required: true },
                    review: { type: Number, required: true },
                    flavour: { type: String, required: false },
                    brand: { type: String, required: true },
                    tags:{type: String},
                    stock:{type: Number, required: true},


                }]

                 headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
                    }

-------------------------------------------------------------------------------------------------------

            |PATCH -----> /product/:id
                {
                    key:"value"
                }

               headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
                }

------------------------------------------------------------------------------------------------------

            |DELETE -----> /product/:id

               headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
                }

/cart

|GET/POST 
`/cart`-------> |PATCH/DELETE 
                |-------------> `/cart/:id`

            |GET -----> /cart

               headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
            }

-------------------------------------------------------------------------------------------------------            

            |POST --> /cart

                [{

                        adminId:{type: String, required: true},
                        quantity:{type:Number,required:true},(Add manually)
                        userId:{type:String,required:true},
                        pid:{type:String,required:true},
                        tags:{type: String},
                        stock:{type: Number, required: true},
                }]

                 headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
                    }

-------------------------------------------------------------------------------------------------------

            |PATCH -----> /cart/:id
                {
                    key:"value"
                }

               headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
                }

------------------------------------------------------------------------------------------------------

            |DELETE -----> /cart/:id

               headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
                }



/order

|GET/POST
`/order`-----> |PATCH
                |------> `/orders/:id`

            |GET -----> /order

               headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
            }

-------------------------------------------------------------------------------------------------------            

            |POST --> /order

               [{

                           
                           
                            quantity:{type:Number,required:true},
                            userId:{type:String,required:true},
                            status:{type:String,required:true},(Automatic)
                            address:{type:String,required:true},
                            orderDate:{type:String,required:true}, (Automatic)
                            pid:{type:String,required:true},
                            delivery:{ type: Number, required: true },
                            adminId:{type: String, required: true},
                            tags:{type: String},
                            stock:{type: Number, required: true},
                            totalDiscountPrice:{type:Number,required:true}


                }]

                 headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
                    }

-------------------------------------------------------------------------------------------------------

            |PATCH -----> /order/:id
                {
                    key:"value"
                }

               headers:{

                    Authorization:`kjxbjbjxsjbxsbdbxbsaodboaodsbdoubdba`
                        
                }
            

|GET
/search

Middlewares

Authencator--> verify user

Querys:-

`/search?q=`<br>
`/products?`<size, title,price, category, brand> =<br>

user keys

name
email
password
role
(Automatic)

Product keys

image
title
description

price
stock
review
, flavour
rating
originalPrice
sizes
category
brand
delivery
adminId
tags

user schema for Registering

name:{type:String,required:true},
email:{type:String},
password:{type:String},
role:{type:String,required:true},
(Automatic)

Product Schema

                _id:{type:String,required:true},<br>(Automatic)
                image: { type: String, required: true },
                title: { type: String, required: true },
                description: { type: String, required: true },
                price: { type: Number, required: true },
                originalPrice: { type: Number, required: true },
                sizes: { type: String, required: true },
                category: { type: String ,required:true },
                rating: { type: Number, required: true },
                review: { type: Number, required: true },
                flavour: { type: String, required: false },
                brand: { type: String, required: true },
                tags:{type: String},
                stock:{type: Number, required: true},
                adminId:{type: String, required: true},<br> (Automatic)

Cart Schema

                   _id:{type:String,required:true}, <br> (Automatic)
                    pid:{type:String,required:true},
                    quantity:{type:Number,required:true},(Add manually)
                    userId:{type:String,required:true},
                    tags:{type: String},
                    stock:{type: Number, required: true},

Order Schema

                        _id:{type:String,required:true} <br> (Automatic)
                        quantity:{type:Number,required:true},
                        userId:{type:String,required:true},
                        status:{type:String,required:true},(Automatic)
                        address:{type:String,required:true},
                        orderDate:{type:String,required:true}, (Automatic)
                        pid:{type:String,required:true},
                        delivery:{ type: Number, required: true },
                        adminId:{type: String, required: true},
                        tags:{type: String},
                        stock:{type: Number, required: true},
                        totalDiscountPrice:{type:Number,required:true}

#API

for register: Make a Post request to {Base_URL}/users/register
with {name:, email:, password:, gender:, role:user/admin, profile:} as body

for Login : Make a Post request to {Base_URL}/users/Login with {email,password} as body

for getting product : Make a Post request to {Base_URL}/product?category={Food,Nutrients,Ayurveda,Vitmains}

for filtering & Sorting:Make a get Request to {Base_URL}/product?category=Food&filter=flavour:Chocolate&sort=price:1

for Pagination : Make a get Request to {Base_URL}/product?category=Food&page=1&limit=5

#Cart

      GET /        {Base_URL}/users/cart
    pass in    Headers {
        Authorization : token(hshfd873hjh345g45vv355h)
       }

      DELETE One product from cart   {Base_URL}/users/cart/:id
    pass in    Headers {
        Authorization : token(hshfd873hjh345g45vv355h)
       }

      
      GET One product from cart   {Base_URL}/users/cart/:id
    pass in    Headers {
        Authorization : token(hshfd873hjh345g45vv355h)
       }


        DELETE ALL CART product from cart   {Base_URL}/users/cart/delete/all
    pass in    Headers {
        Authorization : token(hshfd873hjh345g45vv355h)
       }

      UPDATE/PATCH One product of cart   {Base_URL}/users/cart/:id
        PAYLOAD : {
            quantity
        }
    pass in    Headers {
        Authorization : token(hshfd873hjh345g45vv355h)
       }


        ADD to CART /POST  {Base_URL}/users/cart/
      Payload  {
 image
 title
description
 price
 originalPrice
 sizes,
 category,
 rating,
 review,
 flavour,
 brand,
 tags,
 stock,
 adminId
 pid,
 quantity
}
    pass in    Headers {
        Authorization : token(hshfd873hjh345g45vv355h)
       }

About

Healthistic- a great place for people serious about health and fitness. We're a young start-up of around 400 people that work for your needs in fitness and well-being. We deliver everything from genuine protein supplements to vitamins smoothly at honest prices.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •