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