-
Product Management:
- Query: Fetch a list of products with filtering, sorting, and pagination options.
- Mutation: Add, update, or delete a product.
- Fields:
id
,name
,description
,price
,category
,stock
,images
.
-
User Authentication:
- Mutation: Register a user, log in, and log out.
- Query: Fetch the current authenticated user's details.
- Fields:
id
,username
,email
,token
.
-
Shopping Cart:
- Query: Fetch items in the cart for the authenticated user.
- Mutation: Add an item to the cart, remove an item, update quantities.
- Fields:
id
,productId
,quantity
,price
.
-
Orders:
- Query: Fetch a user’s order history.
- Mutation: Create an order (checkout).
- Fields:
id
,products
,total
,status
,createdAt
.
-
Reviews:
- Query: Fetch reviews for a product.
- Mutation: Add, edit, or delete a review.
- Fields:
id
,userId
,productId
,rating
,comment
,createdAt
.
-
Real-Time Updates:
- Subscription: Notify users about product stock updates or order status changes.
-
Dynamic Pricing:
- Query: Calculate discounts or special offers dynamically during checkout.
-
Recommendations:
- Query: Fetch product recommendations based on user purchase history.
- Node.js: Backend runtime.
- Apollo Server: GraphQL implementation for building the API.
- MongoDB: Database for storing products, users, orders, and reviews.
- JWT: Authentication and authorization.
graphql-nodejs-ecommerce/
├── src/
│ ├── schema/
│ │ ├── typeDefs.js # Define GraphQL schema
│ │ └── resolvers.js # Implement resolvers
│ ├── models/
│ │ ├── Product.js
│ │ ├── User.js
│ │ ├── Order.js
│ │ └── Review.js
│ ├── services/
│ │ ├── authService.js
│ │ └── productService.js
│ └── index.js # Entry point
├── package.json
└── .env
Run the following mutations/queries in Apollo Studio or Postman to test:
mutation {
register(name: "Jhon Doe", email: "[email protected]", password: "securepassword", role: "admin") {
user {
id
name
email
role
}
token
}
}
mutation {
login(email: "[email protected]", password: "securepassword") {
user {
id
name
}
token
}
}
Include the token in the header (Authorization: Bearer <token>
):
mutation {
createProduct(name: "Product A", description: "Description A", price: 19.99) {
id
name
price
}
}
npm install
npm run start
or
npm run dev
or
npm run test