Milestone 6 Betzy
In the future we will use the nginx as a reverse-proxy and it will also serve the static files. Gunicorn will handle the WSGI applications, in our case the Django Apps. The Django apps is a great way to do modularization, we will start with the main web application, and later we will work on another application which will be the rest API with OAUTH2 authentication, this app will be used for mobile clients and desktop clients. Other applications will follow depending on the need. We will need websockets for live communication between the client apps and the users themselves, we will start with Tornado if it plays well with Django. Gunicorn can run on multiple web workers and we will use redis to handle the sessions for websockets and so on.
In this architecture it is very easy to implement new features, either by grouping them into a module and just integrating the urls in the urls.conf file. This way you may implement any feature and just plug it in the existing application. Another way would be by extending the current code, it can be done in three simple steps: #1 create your html templates, #2 add the class based views in the views.py or another file(s) and then just import those views in the (#3) urls.conf file and define your url mappings in there, this will not in any way affect the existing features.
In this Milestone we have implemented the basic functionalities of our app, the login, logout, forgot password, register, account activation, user profile and others. All these are taken care by single class based views per feature and put together in the url mapping.
Example Modules in this system architecture
We implemented the user management module with the following features:
- User Profile