Portfolio Resume

Anson's Portfolio: Python Django on AWS

Last update: Jun-2021
Table wholesaler website develop using Python Django.

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.
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.
New Features - Sign Up.
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.
New Features - 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 Designerlayout design, graphic design, products photo taking.
Business Analyst  requirements collection, functional spec preparation.
Developer  architecture design, coding, testing, AWS deployment & system administration.