- Install git on Linux:
sudo apt-get install -y git - Clone or download this repo.
- Install pip and virtualenv on Linux:
sudo apt-get install -y virtualenv
sudo apt-get install -y python3-pip - Create a virtual environment on Linux or Mac:
virtualenv -p python3 ec/.virtualenvs/ecommerce - Activate the virtual environment on Linux or Mac:
source ec\.virtualenvs\ecommerce\Scripts\activate.bat - Install requirements in the virtualenv:
pip3 install -r requirements.txt
-
Install components for Ubuntu:
sudo apt-get update
sudo apt-get install python-dev libpq-dev postgresql postgresql-contrib -
Switch to postgres (PostgreSQL administrative user):
sudo su postgres -
Log into a Postgres session:
psql -
Create database with name ecommerce:
CREATE DATABASE ecommerce; -
Create a database user which we will use to connect to the database:
CREATE USER ecommerce_user WITH PASSWORD 'ecommerce_pass'; -
Modify a few of the connection parameters for the user we just created:
ALTER ROLE ecommerce_user SET client_encoding TO 'utf8';
ALTER ROLE ecommerce_user SET default_transaction_isolation TO 'read committed';
ALTER ROLE ecommerce_user SET timezone TO 'UTC'; -
Give our database user access rights to the database we created:
GRANT ALL PRIVILEGES ON DATABASE ecommerce TO ecommerce_user; -
Exit the SQL prompt and the postgres user's shell session:
\qthenexit -
Activate the virtual environment:
source ~/.virtualenvs/ecommerce/bin/activate -
Make Django database migrations:
python manage.py makemigrations
then:python manage.py migrate
- Create an admin user:
python manage.py dosuperuser - Run the project locally:
`python manage.py runserver``` - Navigate to:
http://localhost:8000/admin/
- pip install -r requirements.txt
- sudo apt-get install -y erlang
- sudo apt-get install rabbitmq-server
- sudo systemctl enable rabbitmq-server
- sudo systemctl start rabbitmq-server to check if rabbitmq is working run: systemctl status rabbitmq-server
- run local server for backend
- run this command in new terminal in project path with activating virtual env: celery -A ecommerce worker -l info
- sudo service supervisor stop
- sudo service supervisor start
- sudo supervisorctl reread
- sudo supervisorctl update
- sudo service nginx restart
- sudo service apache2 restart
Method: POST
Endpoint: /registration/
Payload:
{ "username": "USERNAME", "first_name": "FIRST_NAME", "last_name": "LAST_NAME", "password1": "PASSWORD", "password2": "PASSWORD", "email": "OPTIONAL_EMAIL", "country": "COUNTRY_FULL", "phone_number": "CountryCode_PhoneNumber" }
Method: POST
Endpoint: /login/
Payload:
{ "username": "USERNAME", "password": "PASSWORD" }
Method: POST
Endpoint: /logout/
Headers: Authorization: JWT YOUR_TOKEN_HERE
Method: POST
Endpoint: api/password/change/
Headers: username: YOUR_USERNAME_HERE, password: YOUR_PASS_HERE
Payload:
{ "old_password": "OLD_PASSWORD", "new_password1": "NEW_PASSWORD1", "new_password2": "NEW_PASSWORD2" }
Method: POST
Endpoint: api/reset/password/
Payload:
{ "email": "EMAIL" }
Method: GET
Endpoint: api/addresses/
Headers: username: YOUR_USERNAME_HERE, password: YOUR_PASS_HERE
Method: GET
Endpoint: api/addresses/<int:pk>
Headers: username: YOUR_USERNAME_HERE, password: YOUR_PASS_HERE
Method: POST
Endpoint: api/create/address/
Headers: username: YOUR_USERNAME_HERE, password: YOUR_PASS_HERE
Payload:
{ "country": "US", "city": "CITY", "district": "DISTRICT", "street_address": "STREET_ADDRESS", "postal_code": "POSTAL_CODE", "phone_number": "COUNTRYCODE_PHONENUMBER" }
Method: POST
Endpoint: api/faq/topics/
Payload:
{ "title": "TOPIC/QUESTION", "text": "ANSWER" }
Method: GET
Endpoint: api/faq/topics/
Method: GET
Endpoint: api/reviews/
Method: POST
Endpoint: api/reviews/
Payload:
{ "stars": "NUMBER(1-5)", "comment": "REVIEW", "product": "PRODUCT NAME", "user": "USER" }
Method: GET
Endpoint: api/category/
Parameters:
search=STRING, id=ID
Method: GET
Endpoint: api/list/product/
Parameters:
search=STRING *(non-functional)*, id=ID, uuid=UUID, price=PRICE, color=COLOR, views=views
Method: GET
Endpoint: api/product/<str:uuid>/
Method: POST
Endpoint: api/product/views/
Payload:
{ "ip": "IP_Address", "product_id": "PRODUCT_ID" }
Method: GET
Endpoint: api/cart/
Headers: username: YOUR_USERNAME_HERE, password: YOUR_PASS_HERE
Method: GET
Endpoint: api/cart-item/<str:id>/
Headers: username: YOUR_USERNAME_HERE, password: YOUR_PASS_HERE
GENERAL PARAMETERS FOR PRODUCTS: ?limit=NUMBER