header icon

The core idea of the ordered.online application is to order online at restaurants, bars, cafés and more.

See our

Use Cases

use case diagram

Trust Problems

The concept of this application comes with some serious trust problems:

  1. How can location owners confirm, that an order was placed by a real client?
  2. How can a client confirm, that he orders at the right location (i.e., not at a fake location)?
  3. How can a location owner confirm, that the client actually payed?

We assessed these trust problems and came to the following solutions:

Project Architecture

architecture

Because the application will offer both web user interfaces and native mobile application(s), it is of great importance, that the biggest part of this application is interoperable. We present an architecture, which is devided into two parts:

  1. The microservice based backend API layer
  2. The web/native frontend application layer

API specification

We provide an OpenAPI 3 specification for all of our API endpoints.

Microservice Based Backend API Layer

Architecture

To cover our use cases, we assessed the following service architecture:

Web/Native Frontend Application Layer

apps (click here for the documentation) is our frontend layer and consists of a multi-platform, react native based application.

Continous Integration

As a continuous integration service we use Travis. We use Travis as an automated service to build our developer documentation. On commit, travis pushes README changes of microservices to our documentation repository.

Containerization and Deployment Concepts

Because of our microservice based architecture, it is hard during deployment to interweave all services correctly, since some services depend on other services (e.g., verification) etc. We solve this issue by stringent containerization with Docker. Each microservice is packed into an own Docker container and interlinked with Docker networks. Each microservice obtains its own url scheme. To avoid connections via arbitrary port numbers, we use the built-in url resolving of Docker. As a high performance load balancer and webserver we use NGINX. NGINX accesses our containerized microservices via their Docker provided url schemes and combines all together to an accessible REST API. Note that the NGINX service itself is again containerized by Docker, which makes it possible to build the complete infrastructure out of the box with Docker.