diff --git a/README.md b/README.md index c3e76f4..e69de29 100644 --- a/README.md +++ b/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 -} -```