We chose Python as the primary language on the back end as it is easily readable, user-friendly, versatile, and has strong cross-platform compatibility. Due to it having a large and active developer community, it also has many libraries available which would cut down on time spent manually building everything from scratch. Most modern human pose estimation technologies are implemented in Python, so since much of our project revolves around pose estimation, using the same language for other components of our application will make it easier to integrate everything. In addition to that, Python is easily extensible as it has a number of web application frameworks. Python’s maturity is also attractive from the perspective of long-term support. Moreover, our team has a strong background in Python which means we would not have to spend time learning it from scratch.
The web framework we chose is Django due to its speed, safety, and stability. Django is very stable and robust and was created for fast development of complex web applications. Furthermore, Django has been around for a long time which means it has a number of extensions, plugins, and third-party applications.
We will be using Gunicorn as our WSGI application server. Gunicorn would handle everything that happens between the web server and the web application. This means that it will take care of reacting to a lot of web requests and distributing the load accordingly, communicating with the web-server, and keeping multiple processes running for the application. Therefore, the deployment will be more stable as well as be fast and handle more requests at once. Gunicorn is also the recommended HTTP server for use with Django on Heroku. It can run multiple Python concurrent processes within a single dyno which makes it the superior choice.