# 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](basic) - deals with all the basic steps to book flight and hotel.
Consists of single service that has both business logic and decision logic included. 

[Travel agency and visa services with persistence](extended) - deals with all the basic steps to book flight and hotel.
Consists of two services that have both business logic and decision logic included. Preserves data between service restarts and requires PostgreSQL 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
