Project Background
A project to revamp the product catalog website of a tableware wholesaler. The website is used for tableware marketing and searching.
It was initially created by using C# ASP.NET some years ago, and is currently revamped by using Python Django.
New features have been added such as member sign-up, login & logout, account password reset, and social account integration.
System Architecture
The website consists of Nginx, uWSGI,
Python Django and MySQL.
The target deployment platform is on Docker Swarm on AWS.
The diagram below illustrates its system architecture.
Website system architecture.
New Features - Sign Up
One of the added new features is membership sign up.
It is implemented using Django's authentication system (django.contrib.auth).
The diagram below illustrates the fundamental workflow in between user and server side Django app.
Sign up workflow between user and Django.
New Features - OAuth 2.0
With the use of django-allauth package,
the website is integrated with Google OAuth 2.0 service.
User can be able to login by using their Google social account.
Google Sign-In manages the OAuth 2.0 flow and token lifecycle,
providing user basic info, and simplifying the integration of other Google APIs.
The diagram below showing the login flow between Django and Google OAuth 2.0.
Social login workflow between Django and Google OAuth 2.0.
Technology Stack
Category |
Details |
Python |
Python 3.8 |
Django |
Django 3.1
djangorestframework 3.11.1
sqlparse 0.3.1
urllib3 1.25.10
uwsgi 2.0.19.1
asgiref 3.2.10
certifi 2020.6.20
mysql-connector-python 8.0.21
mysqlclient2.0.1
|
Django signup, login-out |
six 1.15.0
requests-oauthlib 1.3.0
django-allauth 0.42.0
oauthlib 3.1.0
|
Web server |
Nginx latest |
Logging |
Python logging framework
logrotate 3.11.0
|
Database |
MySQL v5.7 on AWS RDS |
IDE |
PyCharm 2020.1.3 (Community Edition) |
Deployment platform |
Docker Swarm on AWS EC2 Ubuntu Server 18.04
|
Roles & Responsibilities
I worked as freelance developer for this project, responsible for the below end-to-end implementation tasks:
Web Designer:
layout design, graphic design, products photo taking.
Business Analyst
requirements collection, functional spec preparation.
Developer
architecture design, coding, testing, AWS deployment & system administration.