diff --git a/README.md b/README.md index c17103c..150f802 100644 --- a/README.md +++ b/README.md @@ -1,99 +1,151 @@ -
- -[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456 -[circleci-url]: https://circleci.com/gh/nestjs/nest - -A progressive Node.js framework for building efficient and scalable server-side applications.
- - - -## Description - -[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository. - -## Project setup +# CRUD -```bash -$ npm install -``` +# Backend API for E-commerce Application -## Compile and run the project +This is a simple **Backend Service API** for a **E-commerce Application** with various endpoints built using **Nest.js**, **PostgreSQL** & **Sequelize**. -```bash -# development -$ npm run start +--- -# watch mode -$ npm run start:dev +## Features -# production mode -$ npm run start:prod -``` +- Built with **Nest.js**. +- **PostgreSQL** and **Sequelize** for database management. +- Implements **JWT Authentication**. +- RESTful APIs for user management: + - Create, Read, Update, and Delete (CRUD) operations. -## Run tests +--- -```bash -# unit tests -$ npm run test +## Technologies Used -# e2e tests -$ npm run test:e2e +- **Nest.js** +- **PostgreSQL** with **Sequelize** +- **JWT** for authentication +- **ARGON2** for password hashing -# test coverage -$ npm run test:cov -``` +--- + +## Installation and Setup -## Deployment +### Prerequisites -When you're ready to deploy your NestJS application to production, there are some key steps you can take to ensure it runs as efficiently as possible. Check out the [deployment documentation](https://docs.nestjs.com/deployment) for more information. +- Node.js and npm installed on your system. +- postgreSQL connection (local or cloud). -If you are looking for a cloud-based platform to deploy your NestJS application, check out [Mau](https://mau.nestjs.com), our official platform for deploying NestJS applications on AWS. Mau makes deployment straightforward and fast, requiring just a few simple steps: +### 1. Clone the Repository ```bash -$ npm install -g mau -$ mau deploy +git clone https://github.com/MahdiTajikKazemi/e-commerce-api-nestjs-postgres-sequelize ``` -With Mau, you can deploy your application in just a few clicks, allowing you to focus on building features rather than managing infrastructure. +### 2. Setup Backend + +1. Install dependencies: + ```bash + npm install + ``` +2. Create a `.env` file in the `backend` directory and configure it: + ```env + Set your environment variables in .env.sample file. + ``` +3. Start the server: + ```bash + npm run start:dev + ``` + +## Usage -## Resources +1. Start the backend server. +2. Open your 'Postman' | 'insomnia' or whatever testing api app you are comfortable using and then begin hitting enpoints listed below. -Check out a few resources that may come in handy when working with NestJS: +--- -- Visit the [NestJS Documentation](https://docs.nestjs.com) to learn more about the framework. -- For questions and support, please visit our [Discord channel](https://discord.gg/G7Qnnhy). -- To dive deeper and get more hands-on experience, check out our official video [courses](https://courses.nestjs.com/). -- Deploy your application to AWS with the help of [NestJS Mau](https://mau.nestjs.com) in just a few clicks. -- Visualize your application graph and interact with the NestJS application in real-time using [NestJS Devtools](https://devtools.nestjs.com). -- Need help with your project (part-time to full-time)? Check out our official [enterprise support](https://enterprise.nestjs.com). -- To stay in the loop and get updates, follow us on [X](https://x.com/nestframework) and [LinkedIn](https://linkedin.com/company/nestjs). -- Looking for a job, or have a job to offer? Check out our official [Jobs board](https://jobs.nestjs.com). +## API Endpoints -## Support +### Authentication -Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). +- `POST /api/v1/auth/signup`: Register a new user and get a JWT token. +- `POST /api/v1/auth/login`: Login and get a JWT token. -## Stay in touch +### User Management -- Author - [Kamil MyΕliwiec](https://twitter.com/kammysliwiec) -- Website - [https://nestjs.com](https://nestjs.com/) -- Twitter - [@nestframework](https://twitter.com/nestframework) +- `GET /api/v1/users/`: Get a list of all users (admin only). +- `POST /api/v1/users/`: Create a user (admin only). +- `PATCH /api/v1/users/:id`: Update a specific user (admin only). +- `DELETE /api/v1/users/:id`: Remove a specific user (admin only). +- `GET /api/v1/users/:id`: Get a specific user (admin only). + +--- + +## Folder Structure + +``` +βββ πsrc + βββ πcore + βββ πconstants + βββ index.ts + βββ πdatabase + βββ database.config.ts + βββ database.module.ts + βββ database.providers.ts + βββ πinterfaces + βββ dbConfig.interface.ts + βββ πmodules + βββ πauth + βββ auth.controller.ts + βββ auth.module.ts + βββ auth.service.ts + βββ jwt.strategy.ts + βββ local.strategy.ts + βββ πorders + βββ πdto + βββ create-order.dto.ts + βββ index.ts + βββ update-order.dto.ts + βββ πentities + βββ order-status.entity.ts + βββ order.entity.ts + βββ order-statuses.providers.ts + βββ orders.controller.ts + βββ orders.module.ts + βββ orders.providers.ts + βββ orders.service.ts + βββ πproducts + βββ πdto + βββ create-product.dto.ts + βββ index.ts + βββ update-product.dto.ts + βββ πentities + βββ product.entity.ts + βββ products.controller.ts + βββ products.module.ts + βββ products.providers.ts + βββ products.service.ts + βββ πusers + βββ πdto + βββ create-user.dto.ts + βββ index.ts + βββ update-user.dto.ts + βββ πentities + βββ user.entity.ts + βββ users.controller.ts + βββ users.module.ts + βββ users.providers.ts + βββ users.service.ts + βββ app.controller.ts + βββ app.module.ts + βββ app.service.ts + βββ main.ts +``` + +## Future Enhancements + +- Integrate redis for cashing + +--- ## License -Nest is [MIT licensed](https://github.com/nestjs/nest/blob/master/LICENSE). +This project is licensed under the MIT License. + +Mahdi Tajik Kazemi