GithubHelp home page GithubHelp logo

amcareem / django_ecommerce Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sa1if3/django_ecommerce

0.0 0.0 0.0 16.07 MB

Django E-commerce is a unique marketplace focused on enabling users to buy/sell products directly or request/send quotes without any complicated or exhaustive process. This is the open-source version of a larger project.

License: BSD 3-Clause "New" or "Revised" License

JavaScript 64.94% Python 0.58% CSS 19.57% HTML 14.90%

django_ecommerce's Introduction

Django Ecommerce/Market

Django E-commerce is a unique marketplace focused on enabling users to buy/sell products directly or request/send quotes without any complicated or exhaustive process. This is the open-source version of a larger project.

Contents

  1. Features
  2. Installation
    1. Download the project
    2. Set Virtual Environment
    3. Configure .ENV Settings
    4. Async Tasks using Celery and Redis
    5. Debug Toolbar
    6. Migrate Database
    7. Create a superuser
    8. Collect static
  3. Run Development Server
  4. First Run and Initial Data
    1. Admin Section
    2. User Section
  5. Order Process
  6. Credits
  7. Screenshots

Features

  1. User Panel

    1. User Management
      • Sign Up
      • Log In
      • Email Password Reset
      • Email Verification
    2. Dashboard
    3. Item
      • Search (Category / Name)
      • Buy Item
      • Request Quote
      • Orders
        • Placed By User
        • Placed By Customer
      • Quote
        • Placed By User
        • Placed By Customer
        • Upload Pdf
          • By Customer
            • Purchase Order
          • By User/Seller
            • Quote
            • Invoice
            • Delivery Receipt
    4. Email Notifications: Enabled when EMAIL_SEND = True in settings.py
    5. SMS Notifications: Enabled when SMS_SEND = True in settings.py. Pingsms API
    6. Multiple Addresses: User addresses. One address can be set as default.
    7. Multiple Inventories: Each inventory must have an address.
    8. Item Listing: Each item is listed by against an inventory with visibility Public/Private.
    9. Shopping Cart
      • Checkout
      • TODO: Payment
    10. TODO: Chats and Notifications
  2. Admin Panel

    1. Item Types
    2. Items
    3. Weight Groups
    4. Addresses
    5. Inventories
    6. Listings
    7. Orders
    8. Quotes
    9. Shopping Carts

Installation

Download the project

git clone https://github.com/sa1if3/django_ecommerce

or

Download ZIP

Set Virtual Environment

Create a Virtual Environment

virtualenv venv

Activate Virtual Environment

source venv/bin/activate

Download Prerequisites using requirements.txt

pip install -r requirements.txt

Deactivate Virtual Environment

deactivate

Configure Settings

Create a .env file in project folder django_ecommerce and provide values for the following variables. In case you are not using Email or SMS. Those fields can be left empty.

SECRET_KEY=django-insecure-+_vcui795ns-2bl-$n)43ttpt6)s5s^2=t+8z*pv6%cqc*s)0i5
DB_NAME=
DB_USER=
DB_PASSWORD=
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
PINGSMS_API_KEY=
PINGMS_SINGLE_SMS_TEMPLATE=
PINGMS_SENDER_ID=

Async Tasks using Celery and Redis

Install Redis in Ubuntu 20.04 by following this tutorial

In settings.py set the following variables. Change according to your use case.

BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Asia/Kolkata'

Activate Virtual Environment

source venv/bin/activate

Run Celery worker

celery -A django_ecommerce  worker -l info

[Note: In production, this command can be put in Supervisor]

Debug Toolbar

If you are interested in using the debug toolbar make sure to change your settings.py file with the appropriate IP.

DEBUG = True

INTERNAL_IPS = [
    # ...
    '127.0.0.1',
    # ...
]

Migrate Database

The project uses PostgreSQL. Make sure your settings.py is set to correct credential.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'farmersmarket',
        'USER': 'farmersmarketuser',
        'PASSWORD': 'fkfQbfu6gnhGt',
        'HOST': 'localhost',
        'PORT': '',
    }
}

Section A of my tutorial covers the setting up of a server part for Django development.

Run

python manage.py makemigrations

Followed by

python manage.py migrate

Create a superuser

A superuser is required to access the admin panel located at /accounts

python manage.py createsuperuser

Collect static

In case static files don't run properly simply run

python manage.py collectstatic

Run Development Server

To start the project simply run the server with this command inside the activated virtual environment.

python manage.py runserver

First Run and Initial Data

Admin Section

Go to http://yourdomain.com/accounts and log in as a superuser. The admin needs to set up some initial data which restricts the user to sell items from the given category only. Enter data in the following order

  1. Create Item Types: Type of item being sold Item Type
  2. Create Items: Each Item has an item type Item
  3. Create Weight Groups: Used during the listing, quote request and orders Weight Group

User Section

A seller also needs to set up some initial data to list their items.

  1. Create Address: Used for Inventory and invoices

  2. Create Inventory: Used for Listing items. The name is shown to the buyer too.

  3. Create Listing: List items for personal use view status as Private or public to view and purchase by setting the view status as Public. If all the items of a listing were sold off; the listing becomes automatically private and the seller is notified via email. The seller cannot search for their listings.

Order Process

Buy/Sell

  1. Search
  2. Add to Cart
  3. Check Out
  4. View Order Invoice

Quotes

  1. Search
  2. Request Quote
  3. Seller Uploads Quote
  4. Buyer Uploads Purchase Order
  5. Seller Uploads Invoice and Delivery Receipt

Credits

AdminLTE

unDraw

pixabay

Screenshots

Sign Up Email Verification
Dashboard
Search
Log In Address
Checkout Inventory

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.