-
Notifications
You must be signed in to change notification settings - Fork 0
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 |
+---------------->+
|
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.
For the persistence we use the relational database management system PostgreSQL.
To store file attachments of tickets and messages, we use Minio, a S3-compatible open source file storage server.
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.
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.
The admin-app is similar to the user-app to guarantee a high code-reuse.
The communication between front- and back-end uses a REST-interface. These APIs are described in REST API Documentation.