# Kogito Travel Agency - tutorial

## Description

During this workshop we will create a software system for a startup travel agency called Kogito Travel Agency. It
will be build incrementally where each version will be a separate folder.

Starting with base version that consists just one service that deals with entire Travel Agency business

## Travel agency solutions

NOTE: Look into individual versions to learn more on how to run it or what does it take to build it.

Each version is based on previous one so it allows people perform the implementation at their own pace
and to start any any place.

[Base travel agency service with persistence](travels) - deals with all the basic steps to book flight and hotel.
Consists of single service that has both business logic and decision logic included. Preserves data between service restarts and
requires Infinispan server to be available.

## Contribution

Everyone is encouraged to contribute to this tutorial by

* trying it out and providing feedback and ideas for improvement
* create new versions of the tutorial by starting from the last version
* blogging about it
* using it on conferences and workshops

## Deploying with Kogito Operator

In the [`operator`](operator) directory you'll find the custom resources needed to deploy this example on OpenShift with the [Kogito Operator](https://docs.jboss.org/kogito/release/latest/html_single/#chap_kogito-deploying-on-openshift).
