done
This commit is contained in:
parent
ecbbf046ce
commit
1a41e0171f
1 changed files with 0 additions and 251 deletions
251
README.md
251
README.md
|
@ -1,251 +0,0 @@
|
|||
# Ecomm Backend
|
||||
|
||||
This repository contains the backend implementation for the Ecomm e-commerce application.
|
||||
|
||||
## Description
|
||||
|
||||
This is a simple e-commerce backend application built with Node.js, TypeScript, Express.js, MongoDB, and Docker. It provides API endpoints to manage users, products and cart of user.
|
||||
|
||||
## My Approach
|
||||
|
||||
Creating a simple Express.js application with TypeScript.
|
||||
added the required dependencies and dev dependencies.
|
||||
added best ORM to connect with MongoDB and Node.js.
|
||||
created the required models and controllers for the application.
|
||||
added the required routes for the application.
|
||||
added the required environment variables for the application.
|
||||
added the required middleware for the application.
|
||||
added the required error handling for the application.
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Technologies Used]
|
||||
- [How to Run]
|
||||
- [API Documentation]
|
||||
- [Users]
|
||||
- [Create a New User]
|
||||
- [Login]
|
||||
- [Products]
|
||||
- [Get All Products]
|
||||
|
||||
## Technologies Used
|
||||
|
||||
- Node.js
|
||||
- TypeScript
|
||||
- Express.js
|
||||
- MongoDB
|
||||
- Mongoose ORM
|
||||
- Docker (docker-compose)
|
||||
- bcrypt
|
||||
- JWT
|
||||
- deep-email-validator
|
||||
|
||||
## How to Run
|
||||
|
||||
To run the Ecomm backend application, follow these steps:
|
||||
|
||||
1. Clone the repository.
|
||||
2. Ensure that you have Docker and Docker Compose installed.
|
||||
3. Implement the required environment variables by creating an `.env` file.
|
||||
4. Run the following command in the root directory:
|
||||
```
|
||||
docker-compose up
|
||||
```
|
||||
The application will be running on port 3000, and the database will be running on port 27017.
|
||||
|
||||
API Documentation
|
||||
# Users
|
||||
Create a New User - POST /users
|
||||
Creates a new user.
|
||||
|
||||
Request Body
|
||||
|
||||
```
|
||||
{
|
||||
"name": "string",
|
||||
"email": "string",
|
||||
"password": "string"
|
||||
}
|
||||
```
|
||||
Response Body
|
||||
status code 200
|
||||
```
|
||||
{
|
||||
message:
|
||||
"User created successfully"
|
||||
}
|
||||
```
|
||||
status code 400
|
||||
```
|
||||
{
|
||||
message:
|
||||
"User already exists"
|
||||
}
|
||||
```
|
||||
status code 500
|
||||
```
|
||||
{
|
||||
message:
|
||||
"Internal server error"
|
||||
}
|
||||
```
|
||||
Login - POST /users/login
|
||||
Logs in a user.
|
||||
|
||||
Request Body
|
||||
```
|
||||
{
|
||||
"email": "string",
|
||||
"password": "string"
|
||||
}
|
||||
```
|
||||
Response Body
|
||||
status code 200
|
||||
```
|
||||
{
|
||||
access-token:
|
||||
"TOKEN"
|
||||
}
|
||||
```
|
||||
|
||||
# Products
|
||||
Get All Products - GET /products
|
||||
Gets all products.
|
||||
|
||||
Parameters
|
||||
```
|
||||
page: number(default: 0)
|
||||
limit: number(default: 50)
|
||||
```
|
||||
Response Body
|
||||
status code 200
|
||||
```
|
||||
{
|
||||
products: [
|
||||
{
|
||||
_id: "string",
|
||||
name: "string",
|
||||
description: "string",
|
||||
price: number,
|
||||
image: "string",
|
||||
createdAt: "string",
|
||||
updatedAt: "string"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
status code 404
|
||||
```
|
||||
{
|
||||
message:
|
||||
"Product not found."
|
||||
}
|
||||
````
|
||||
|
||||
# Cart
|
||||
|
||||
Add Product to Cart - POST /cart
|
||||
Adds a product to cart.
|
||||
(authentication required)
|
||||
|
||||
Request Body
|
||||
```
|
||||
{
|
||||
"productId": "string"
|
||||
}
|
||||
```
|
||||
Response Body
|
||||
status code 200
|
||||
```
|
||||
{
|
||||
Cart :{
|
||||
"{ProductId}": Quantity
|
||||
}
|
||||
}
|
||||
```
|
||||
status code 500
|
||||
```
|
||||
{
|
||||
message:
|
||||
"An error occurred while adding the product to the cart."
|
||||
}
|
||||
```
|
||||
|
||||
List Cart Items - GET /cart
|
||||
Lists all cart items.
|
||||
(authentication required)
|
||||
|
||||
Response Body
|
||||
status code 200
|
||||
```
|
||||
{
|
||||
Cart :{
|
||||
"{ProductId}": Quantity
|
||||
}
|
||||
}
|
||||
```
|
||||
status 404
|
||||
```
|
||||
{
|
||||
message:
|
||||
"Cart not found."
|
||||
}
|
||||
```
|
||||
status code 500
|
||||
```
|
||||
{
|
||||
message:
|
||||
"An error occurred while listing the cart."
|
||||
}
|
||||
```
|
||||
|
||||
checkout - POST /cart/checkout
|
||||
checkout the cart.
|
||||
(authentication required)
|
||||
|
||||
status 200
|
||||
```
|
||||
{
|
||||
order: {
|
||||
{productId}: quantity
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
status 404
|
||||
```
|
||||
{
|
||||
message:
|
||||
"Cart not found."
|
||||
}
|
||||
```
|
||||
|
||||
# Database Schema
|
||||
## User
|
||||
```
|
||||
{
|
||||
name: string,
|
||||
email: string,
|
||||
password: string,
|
||||
cart: {
|
||||
productId: number
|
||||
}
|
||||
}
|
||||
```
|
||||
## Product
|
||||
```
|
||||
{
|
||||
name: string,
|
||||
description: string,
|
||||
price: number
|
||||
userId: string
|
||||
}
|
||||
```
|
||||
## Cart
|
||||
```
|
||||
{
|
||||
userId: string,
|
||||
products: Map<string, number>
|
||||
}
|
||||
```
|
Loading…
Reference in a new issue