Skip to content

Architecture

David Haller edited this page Jul 10, 2018 · 8 revisions

Architecture

The project is divided into 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 the relational database management system PostgreSQL.

File Storage

To store file attachments of tickets and messages, we use Minio, a S3-compatible open source file storage server.

Front-End

The front-ends are developed in ReactNative (0.55) to maximize code-reuse over different architectures (Android, iOS, Web). Both, the User- and the Admin-App, use the back-end's REST-interface to exchange any data. Neither has a sophisticated logic layer. The apps only preprocess the data 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 mainly test the app for Android systems, due to their high market-share and customer wishes. The app consists of three layers:

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

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

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

Admin-App

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

Interface

The communication between front- and back-end uses a REST-interface. These APIs are described in REST API Documentation.

Clone this wiki locally