Welcome to the backend of the GoShopNow E-Commerce site. This README provides information on how to set up, configure, and run the backend services.
- Prerequisites
- Getting Started
- Configuration
- Running the Services
- Service Details
- Features
- Constraints
Before you begin, make sure you have the following tools installed on your system:
- Docker (version 24.0.2 or later)
- Docker Compose (version 2.19.1 or later)
To get started with the GoShopNow backend, follow these steps:
-
Clone this repository to your local machine:
git clone https://github.com/SagunDevkota/GoShopNow.git cd goshopnow-backend -
Create a .env file and configure the environment variables as needed.
DB_HOST= DB_NAME= DB_USER= DB_PASS= KHALTI_API_KEY = email = password = POSTGRES_DB= POSTGRES_USER= POSTGRES_PASSWORD= CELERY_BROKER = CELERY_BACKEND =
-
Build the Docker container:
docker-compose build
You can configure the backend services using environment variables in the .env file. Make sure to update this file with your specific configuration.
Start the backend services using Docker Compose:
docker-compose up
The services will start, and you can access the GoShopNow backend API at http://127.0.0.1:8000.
- Service Name: app
- Image: goshopnow:v1.0
- Ports: 8000 (HTTP API)
- Dependencies: db, redis, es
- Service Name: db
- Image: postgres:13-alpine
- Ports: 5432 (PostgreSQL)
- Volume: dev-db-data
- Service Name: celery
- Dependencies: redis
- Command: celery --app=app worker --loglevel=info --beat
- Service Name: redis
- Image: redis:alpine
- Service Name: es
- Image: elasticsearch:7.17.12
- Ports: 9200 (HTTP API)
- Volume: es_data
- User authentication, authorization and account activation using email
- Review filtering using LSTM network
- Product management (add, edit, delete) from admin panel
- Shopping cart functionality
- Order processing and tracking
- Payment gateway integration(Khalti)
- Search functionality (using Elasticsearch)
- Background task processing with Celery
- Caching using Redis
- Restocking notification using email
- Reward points for each succesful purchase
- Discount coupon based on slot machine applied to total amount.
- Payment history tracking
- API documentation (Swagger)
http://127.0.0.1:8000/api/docs/#/
- Currently supports only one instance of Elasticsearch (single-node).
- Limited support for product categories (expandable in future versions).
- Payment gateway integration limited to Khalti.
- Five images per product
- One delivery location per user
Please refer to the Issues section for known issues and planned improvements.