Initial Software Design - 401ChemistryGenealogy/ChemistryGenealogy GitHub Wiki

architecture overview

The application will be a 3-tier web application. A 3-tier application typically exposes a GUI application to the end-user that acts as a client to a server that consists of business and database manipulation logic. This makes up the first and second tier. The third tier is the database.

Note: the pc-towers in the diagram do not denote different machines, but only different programs, ie, the backend, frontend and database servers can all be on the same physical device or cloud instance.

deployment

As covered in the tech choice we will be deploying a 3-tiered system. All the non-client systems are deployed to the same virtual machine.

Once git is installed in the virtual machine we'll be able to simply git clone the respective repositories and run the scripts. However, we will wget the MySQL code and build/install the database, which we will then run on the virtual machine. As such we will have two code repositories and a third information repository.

component diagram

full screen


notes:

  1. The frontend -- Angular -- application will interface with the backend using an injectable data service. Because, this dependency is injectable testing will be far easier due to mockability. Also we can develop the frontend without relying on progress on the backend.

  2. There are no views in the Django backend. Views are rendered client side.

  3. The ref_model component refers to an abstract model that can be sub classed into a person, lab or paper.