-
Notifications
You must be signed in to change notification settings - Fork 0
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 |
+---------------->+
|
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 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.
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.
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.
The admin-app will be similar to the user-app to guarantee a high code-reuse.
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)