An E-Commerce API built with Node.js, Express.js, MongoDB, and integrated with AWS and Stripe. Designed for robust and scalable online shopping experiences.
Demo β’ Key Features β’ Technical Highlights β’ How To Use β’ API Routes β’ API Usage β’ Built With β’ My Practices
Explore the live API here ππ» : https://nestify.systems/
- Authentication & Authorization π
- Sign up, login, logout, password reset, and Google OAuth integration.
- Role-based access control (admin, user, manager) with JWT authentication.
- User Profile π§βπΌ
- Users can update their profile, including username, email, and password.
- Admins can manage all user profiles.
- Product Catalog & Search π
- Browse and search products by categories, brands, and other filters.
- Powerful search functionality to find products quickly.
- Admins can manage products (add, update, delete).
- Shopping Cart & Checkout ποΈ
- Add products to cart and checkout securely with Stripe payments.
- Order Management π¦
- Users can track order history and shipping status.
- Admins manage orders and process refunds.
- Reviews & Ratings π
- Users can leave reviews for purchased products; admins can delete inappropriate ones.
- Discounts & Coupons πΈ
- Apply discount codes at checkout; admins manage promotions.
- Favorites β€οΈ
- Users can save favorite products for future purchases.
Feature | Description |
---|---|
Authentication & Authorization | Google OAuth integration via Passport.js for seamless user login. |
Role-Based Access Control | Admin, user, and manager roles with granular permissions. |
AWS S3 | Efficient cloud storage for serving and managing product images. |
Stripe Payment Gateway | Secure and reliable payment processing for customer transactions. |
Validation | Strong input validation using express-validator ensures data integrity. |
Unit & Integration Testing | Comprehensive test coverage ensures API reliability and stability. |
AWS Deployment | Scalable and high-performance hosting using AWS EC2. |
The following routes are available for interacting with the API:
- All routes are prefixed with
/api/v1/
. For example, to access the orders endpoint, use/api/v1/orders
.
Resource | Route | Methods |
---|---|---|
Categories | /categories |
GET, POST, PATCH, DELETE |
Subcategories | /subcategories |
GET, POST, PATCH, DELETE |
Brands | /brands |
GET, POST, PATCH, DELETE |
Products | /products |
GET, POST, PATCH, DELETE |
Users | /users |
GET, POST, PATCH, DELETE |
Authentication | /auth |
GET, POST, PATCH |
Reviews | /reviews |
GET, POST, PATCH, DELETE |
Favorites | /favorites |
GET, POST, DELETE |
Addresses | /addresses |
GET, POST, DELETE |
Coupons | /coupons |
GET, POST, PATCH, DELETE |
Cart | /cart |
GET, POST, PATCH, DELETE |
Orders | /orders |
GET, POST, PATCH |
Before using the API, you need to set the variables in Postman depending on your environment (development or production). Simply add:
- {{URL}} with your hostname as value (Eg. http://127.0.0.1:3000/ or https://nestify.systems/)
- {{password}} with your user password as value.
For more info check API Documentation on Postman ππ» E-Commerce API Documentation.
You can get the E-Commerce API up and running on your local machine using the following steps:
-
Fork or Git-clone:
- You can fork the app on GitHub or git-clone it into your local machine.
git https://github.com/AhmedSalman1/E-Commerce-API.git cd e-commerce-api
-
Install Dependencies and Set Environment Variables:
- In the root directory of the app, create a file named
.env
.
$ npm install Set your env variables(like: .env.example)
- In the root directory of the app, create a file named
-
Run Commands:
$ npm run start (for development) $ npm run start:prod (for production)
-
Run Tests:
$ npm run test
-
Run specific test files:
$ npm run test --file tests/auth.test.js
- NodeJS - JavaScript runtime environment
- Express - The web framework used
- Mongoose - Object Data Modelling (ODM) library
- MongoDB Atlas - Cloud database service
- AWS EC2 - Cloud computing service for hosting the application
- AWS S3 - Cloud storage for managing and serving images
- Google OAuth - Authentication via Google account
- Stripe - Online payment API for handling payments
- Jest - JavaScript testing framework for unit and integration tests
- Mailgun - Email delivery platform for transactional emails
- Postman - API testing and documentation tool
I adhere to these practices to ensure a maintainable and scalable codebase:
- Use Conventional Commits for meaningful and consistent commit messages.
- Follow a structured branching strategy for organized version control.
- Maintain clean and readable code by sticking to Clean Code Guidelines.
- Ensure all contributions pass linting and tests before integration.
These principles guide my work to deliver high-quality, reliable, and scalable software.
-
Thank you for exploring this E-Commerce API built with NodeJS. This project is designed to provide a robust backend for online shopping platforms, with features like authentication, product management, and secure payment processing.
-
Feel free to clone the repository, contribute, or open issues for any questions or bugs.