 nginx888https://nginx.org/en/.
This GitHub project is configured to serve the docs directory of the master branch on demo page999https://hkhosrav.github.io/RiPPLE-Core/#/. You should therefore remember to copy the result of ./dist into ./docs before a merge into master to ensure that the latest version is being served via GitHub.
7 Implementation Details of the RiPPLE Server
This section provides information on the implementation of the RiPPLE Sever. Further details can be found on the Wiki101010https://github.com/hkhosrav/RiPPLE-Core/wiki page of the project on GitHub.
The RiPPLE server is a Django111111https://www.djangoproject.com/ application running on Python. Its primary purpose is to provide a data gateway to user information, authentication through LTI, and personalised recommendations for the student competency
7.1 Source Code Conventions and Overview of the RiPPLE Server
The RiPPLE server follows several conventions to ensure the scalability and managability of the software. Notably, it follows the Service and Repository, as well as Django-community favoured patterns to ensure development consistency and reduce code duplication. It includes the following folders:
The project root only contains project-specific files which are used for getting started in the project. This includes things like dependencies, licensing, and a production deployment scripts
The src directory contains source files for the application. You will spend lots of time in this directory. It follows the Django Project Structure, and should contain environment files and Django bootstrap files (such as manage.py).
The ripple directory contains the core application configuration. This directory contains files important configuration files such as settings.py, urls.py which are necessary to tie different apps together.
The src directory contains many subfolders, each of which is refereed to as a Django App121212https://docs.djangoproject.com/en/1.11/intro/tutorial01/#creating-the-polls-app. To quote from Django: ”What’s the difference between a project and an app? An app is a Web application that does something – e.g., a Weblog system, a database of public records or a simple poll app. A project is a collection of configuration and apps for a particular website. A project can contain multiple apps. An app can be in multiple projects.” In order to promote code re-usability; the RiPPLE server makes use of projects where appropriate.
The services directory inside each app contains entities which are responsible for handling the business logic of the application. They should be used exclusively by the routing controllers to ensure that tasks are always completed in the same way (e.g., using the QuestionSearch is beneficial since it will automatically ensure your search results are within the current course context). Services are encapsulated into a single place.
Each App has the following files
urls.py, which contains application route definitions. Routes are not automatically added to the global application, you must also modify ripple/urls.py to import your app routes.
views.py, which contains the application controllers.
tests.py, which contains the specification verification of how the application operates. They are executed with python manage.py test.
7.2 Deployment of the RiPPLE Server
The RiPPLE server architecture is relatively simple since it builds off of one of the most popular python frameworks, however it does need some configuration to work correctly.
7.2.1 Installing Dependencies
From your terminal, make sure you can access both python (python–version) and pip (pip –version). If not, you will be unable to continue.
It is highly recommended to run python through virtualenv to ensure you are developing in an isolated environment. Django recommends doing this
This project ships with a requirements.txt file, which details all of the modules required to build and run the application. The simplest way to install them all is to run pip install -r requirements.txt from your terminal at the project root. pip will automatically read the require