---
# System prepended metadata

title: 'Student: Doan Xuan Truong'

---

# Student: Doan Xuan Truong
# StoreFood - Website

## User Stories

### Background

This is an online food store application. Specializing in providing fresh and fresh food, helping people to have a busy time to go to the market online to buy food quickly.

With this application website, you can sell your own food items


### Authentication
- As a user, i can sign in, with my email and password
- As a user, i can register for a new account, email, password
- As a user, i can stay signed in with refreshing page


### Users

- As a user, the role is a buyer, I can see the user's profile
- As a user, the role is a buyer, I can update my profile into Avatar, Name, Phone, address, City, Country
- As a user,the role of a seller, I can see my profile
- As a user, the role of a seller, I can update my profile logo, shopname, company, phone, address.

### Product

- As a user the role is a buyer, I can see a list of all products
- As a user the role is a buyer, I can see the search function according to the product name
- As a user, the role of a buyer, I can see the details of a product
- As a user, the role of a seller, I can see the list of products I am selling
- As a user, the role of a seller, I can add new products
- As a user, the role of a seller, I can update the information of a product I am selling
- As a user, the role of a seller, I can delete my product

### Cart
- As a user, the role of a buyer, I can add products to the cart
- As a user, the role of a buyer, I can see the list of products in the cart
- As a user, the role of a buyer, I can add or reduce the number of products in the cart
- As a user, the role of a buyer, I can delete the product that does not want to buy in the cart

### Order
- As a user, the role of a buyer, I can order an order to my address and phone number
- As a user, the role of a buyer, I can see the list of my order
- As a user, the role of a seller, I can see the list of orders I have sold.
- As a user, the role of a seller, I can update the status for my orders

 
## Endpoint APIs

### Auth APIs

````javascript
/**
 * @route POST /auth/loginUser
 * @description Log in with username and password
 * @body {email, password}
 * @access public 
 */

````

### User APIs

````javascript
/**
 * @route POST /users/buyer
 * @description Register new user buyer
 * @body {name, email, password}
 * @access public 
 */
````

````javascript
/**
 * @route POST /users/seller
 * @description Register new user seller
 * @body {name, email, password}
 * @access public 
 */
````

````javascript
/**
 * @route GET /users/me
 * @description Get current user info
 * @access Login required
 */
````

````javascript
/**
 * @route GET /users/:id
 * @description Get a user profile
 * @access Login required
 */
````

````javascript
/**
 * @route PUT /users/seller/:id
 * @description Update user seller profile
 * @body {name, avataUrl,address}
 * @access Login required
 */
````



### products APIs

````javascript
/**
 * @route POST /products
 * @description Create a new products
 * @body {name, imge,describe,foods:[ Processing,Unprocessed, Vegetable], price,unit,amount}
 * @access Seller Login required
 */
````

````javascript
/**
 * @route GET /products?page=1&limit=10&name=`$productName`
 * @description Get products with pagination
 * @access public
 */

````

````javascript
/**
 * @route GET /products/:id
 * @description Get a product
 * @access public
 */

````

````javascript
/**
 * @route GET /products/:id?page=1&limit=10&name=`$productName`
 * @description Get products with pagination
 * @access public
 */
````

```javascript
/**
 * @route GET /products/detail/:id
 * @description Get a product
 * @access public
 */
```

```javascript
/**
 * @route PUT /products
 * @description Update a new products
 * @body {name, imge,describe,foods:[ foodProcessing,unprocessedFood], price,unit,amount}
 * @access Seller Login required
 */
```

```javascript
/**
 * @route DELETE /products/:id
 * @description Delete a product
 * @access Login required
 */

```

### Cart APIs

```javascript
/**
 * @route POST /cart
 * @description Create a new cart
 * @body {productId:Types.ObjectId, authorUser:Types.ObjectId,amount}
 * @access Seller Login required
 */
```

```javascript
/**
 * @route GET /cart?page=1&limit=10&name=`$productName`
 * @description Get cart with pagination
 * @access public
 */

```
```javascript
/**
 * @route PUT /cart
 * @description Update a new cart
 * @body {amount}
 * @access Seller Login required
 */
```

```javascript
/**
 * @route DELETE /cart/:id
 * @description Delete a cartProduct
 * @access Login required
 */
```

### Oders APIs

````javascript
/**
 * @route POST /oders
 * @description Create a new Oders
 * @body {productName,userName,amount0.}
 * @access Login required
 */
````

````javascript
/**
 * @route GET /oders?page=1&limit=10
 * @description Get Oders with pagination
 * @access public
 */

````

````javascript
/**
 * @route GET /oders/seller?page=1&limit=10
 * @description Get Oders with pagination
 * @access public
 */
````

````javascript
/**
 * @route GET /oders/:id
 * @description Get a Oders
 * @access public
 */
````

````javascript
/**
 * @route PUT /oders
 * @description Update a new oders
 * @body {name, imge,describe,foods:[ foodProcessing,unprocessedFood], price,unit,amount}
 * @access Seller Login required
 */
````

````javascript
/**
 * @route DELETE /oders/:id
 * @description Delete a oder
 * @access Login required
 */
````


## Relational Diagram

![](https://i.imgur.com/ddzBCBs.png)


