Skip to content

Architecture

Sebastian Duda edited this page Apr 22, 2018 · 8 revisions

Architecture

The project is divided in three individual parts.

  • Back-End
  • User-Front-End
  • Admin-Front-End

The front-end-components can communicate via a REST-interface with the back-end.

+-----------+           |                               
|           |           | Server-Logic                   Server-Persistance
| User-App  |           |                              
|           |           | +-----------------+             ########
+-----+-----+           | |                 |            #        #
      ^                 | | User-Management |           #          #
      |         REST    | |                 |           |#        #|
      +---------------->+ +-----------------+           | ######## |
                        |                       <->     |          |
+-----------+           | +-----------------+           | Database |
|           |           | |                 |           |          |
| Admin-App |           | | Chat-Management |           #          #
|           |           | |                 |            #        #
+-----+-----+           | +-----------------+             ########
      ^                 |                           
      |         REST    |
      +---------------->+
                        |

Back-End

The back-end is programmed in Java (Version 8). The back-end is responsible for the user-management, chat functionality and the persistence of all data.

Persistence

For the persistence we use an relative database. At first we use an simple in memory database (HSQL DB via Hibernate). For the production version we will substitute HSQL with PostgreSQL.

Front-End

We will develop the front-ends in ReactNative (0.55) to maximize code-reuse over different architectures (Android, iOS, Web). Both, the User- and the Admin-App, will use the back-end's REST-interface to exchange any data. Neither one will have a sophisticate logic layer. The apps will only preprocess the date from the server to display it in a convenient way, or preprocess the input to send it to the server.

User-App

The app for the users is developed in ReactNative (0.55). We will mainly test the app for Android systems, due to their high market-share and customer wishes. The app will consist out of three layers:

  • Presentation-layer
  • Logic-layer
  • Persistence-layer

The logic-layer will not be sophisticated, but enhances the quality of the data and simplifies it's transfer to the back-end.

The persistence-layer will not support any persistence on the phone itself, but cares about persisting the data on the server.

Admin-App

The admin-app will be similar to the user-app to guarantee a high code-reuse.

Interface

The communication between front and back-end will use a REST-interface. The back-end supports multiple apis:

  • /chat/… handles all chat-related issues (such as: send/receive messages, assign new task to users)
  • /user/… handles all user-related issues (such as: authorization, change password)
Clone this wiki locally