A robust and scalable E-Commerce application backend API built with Django and Django REST Framework. This project provides a feature-rich E-Commerce platform with support for user authentication, product management, cart and checkout functionality, payment integration, reviews and rating functionality and more.
https://shopnova.up.railway.app- Swagger API documentation
- REST framework implemented
- Authentication and authorization using SimpleJWT
- Customized Admin Panel using Jazzmin
- User profile creation and update
- Cart/Wishlist features
- Checkout features
- Password change and reset via email
- API versioning
- Email system integrated
- Notification system integrated
- PayPal payment integration
- Stripe payment integration
- Multi-role support: Customer and Vendor
- Discount coupon functionality
- Product search feature
- Product review and rating system
- Product receipt via email
- Sales statistics for vendors
- Backend: Django, Django REST Framework
- Database: PostgreSQL (production), SQLite (development)
- Storage: AWS S3 (or Storj) for media and static files
- Hosting: Railway (for deployment)
- API Documentation: Swagger
- Authentication: SimpleJWT
- Payment Gateways: PayPal, Stripe
- Email Services: Brevo (or Mailgun)
Before setting up the project, ensure you have the following installed:
- Python 3.11 or higher
- pip (Python package manager)
- PostgreSQL (or SQLite for development)
- Virtualenv or Conda (optional but recommended)
To run this project, you need to set up the following environment variables. Create a .env file in the root directory and add the following:
SECRET_KEY=<add your key>
ALLOWED_HOSTS=<add your allowed hosts>
DEBUG=<True/False>
CSRF_TRUSTED_ORIGINS=<add your trusted origins>
DATABASE_URL=<add your database URL>
SITE_URL=<add your frontend site URL>
STRIPE_PUBLIC_KEY=<add your stripe public key>
STRIPE_SECRET_KEY=<add your stripe secret key>
PAYPAL_CLIENT_ID=<add your paypal client id>
PAYPAL_SECRET_ID=<add your paypal secret id>
BREVO_API_KEY=<add your mailgun your API key>
BREVO_EMAIL=<add your brevo sender email id>
USE_AWS=<True/False>
AWS_ACCESS_KEY_ID=<add your AWS access key id>
AWS_SECRET_ACCESS_KEY=<add your AWS secret access key>
AWS_STORAGE_BUCKET_NAME=<add your AWS bucket name>
git clone https://github.com/abhishek-T99/ecommerce_backend.git
cd ecommerce_backend-
Create a virtual environment:
python -m venv venv
-
Activate the virtual environment:
- On Windows:
.\venv\Scripts\activate
- On macOS/Linux:
source venv/bin/activate
- On Windows:
Install the required dependencies by running:
- For Development:
pip install -r requirements/dev.txt
- For Production:
pip install -r requirements/prod.txt
Create a .env file in the project root and add the environment variables listed in the Environment Variables section above
Run the following command to create migration files:
python manage.py makemigrationsRun the following command to apply database migrations:
python manage.py migrateTo access the Django admin panel, you need to create a superuser. Run the following command:
python manage.py createsuperuserStart the Django development server by running the following command:
python manage.py runserver 8000http://127.0.0.1:8000I welcome contributions from the community! If you'd like to contribute to this project, please follow these steps:
-
Fork the Repository: Click the "Fork" button at the top right of this repository to create your own copy.
-
Clone the Forked Repository:
git clone https://github.com/your-username/ecommerce_backend.git cd ecommerce_backend -
Create a New Branch:
git checkout -b feature/YourFeatureName
-
Make Your Changes: Implement your feature or fix bugs. Ensure your code follows the project's coding standards.
-
Commit Your Changes:
git add . git commit -m "feat: Your feature or fix description"
-
Push to Your Branch:
git push origin feature/YourFeatureName
-
Open a Pull Request:
- Go to the original repository on GitHub.
- Click on the "Pull Requests" tab.
- Click the "New Pull Request" button.
- Select your forked repository and the branch you created (
feature/YourFeatureName). - Add a detailed description of your changes
- Submit the pull request.
- Add unit tests for all API endpoints.
- Implement a recommendation system for products.
- Implement a refund system for canceled orders.
- Improve the search functionality with Elastic Search
- Add support for social login (Google, Facebook, etc.).

