This projects contains two distinguished cross-platform applications (web app + android) whose backend is based on a microservice architecture. The application scopes are:
- ComandApp - Cliente: An application for the customers of the restaurant. The customers can:
- Book a table for a specific date and time and, if they want, provide their order in advance.
- Pre-order a meal to be prepared for the time of the reservation.
- Order a Takeaway meal and pick it up at the restaurant.
- Order a Delivery meal and have it delivered at their home.
- ComandApp - Gestore: An application for the restaurant manager. The manager can:
- Visualize and manage the preparations on the kitchen side, changing the state of the preparations between "waiting", "underway" and "ready".
- Visualize and manage the preparations on the waiter side, changing the state of the cooked preparations between "to deliver" and "delivered".
- Visualize and manage the bookings, approving or rejecting them.
- Menu
- Handles the list of meals and drinks available.
- Can add, remove or update a meal or a drink.
- Kitchen
- Handles the list of preparation for the kitchen side.
- The preparation can be in one of the following states:
- Waiting (the preparation is waiting to be cooked)
- Underway (the preparation is being cooked)
- Ready (the preparation is ready to be delivered)
- The preparation state can be updated by the kitchen staff.
- Waiter
- Handles the list of preparation for the waiter side.
- The preparation can be in one of the following states:
- To deliver
- Delivered
- The preparation state can be updated by the waiter staff.
- Order
- Receives the particular kind of order from the customer.
- Sends the preparations to cook to the kitchen based on policies.
- Provides the list of orders to the staff.
- Accepts or rejects the orders which are not in restaurant orders.
- Reservation
- Receives the reservation from the customer.
- Sends the reservation to the order microservice.
- Accepts or rejects the reservation or pre-order.
For kubernetes deployment follow the instruction in the kubernetes folder
Docker deployment can be done separately for each microservice or using docker-compose.
All the pre-built images are available on Docker Hub or can be Built using Dockerfile in the root of each microservice folder.
Two docker-compose files are available in the root of the project:
- docker-compose.yml
- docker-compose-development.yml
The first one pulls the images from Docker Hub and the second one builds the images locally. To use the first one run the following command:
docker-compose up
To use the second one first the backend must be started
docker-compose -f docker-compose-development.yml up
and then the frontend can be started. go to the frontend repository or open the submodule folder and run:
docker-compose docker-compose up