///////////////////////////////////////////////////////////////
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
///////////////////////////////////////////////////////////////

:leveloffset: 1

[[tutorials,Tutorials Section]]
= Tutorials =

== Overview ==

TIP: Theses tutorials are based on actual code found in the `tutorials/` directory of the
https://zest.apache.org/download.html[Zest™ SDK sources]. You should start your favorite editor and find the code related to
this tutorial, run it and play with it.

In this section you will find a comprehensive set of tutorials about Composite Oriented Programming using Zest™.

[[tutorials-intro,Zest™ in 2 hours 42 minutes]]
=== Zest™ in 2 hours 42 minutes ===

This quite long introduction to Zest™ will start by brushing up an overview of the problems Zest™ solve, teach you what
Composite Oriented Programming is and guide you through the process of writing a complete Application around an adapted
Hello World example.

- <<two-minutes-intro>>
- <<ten-minutes-intro>>
- <<thirty-minutes-intro>>
- <<two-hours-intro>>

=== Getting real with Zest™ ===

Throughout this set of tutorials it will be shown how to depend on Zest™ in your build, how to assemble a complete
application, how to create and work with Composites and Services, how to use contextual fragments and leverage
properties.

- <<howto-depend-on-zest>>
- <<howto-assemble-application>>
- <<tut-composites>>
- <<tut-services>>
- <<howto-contextual-fragments>>
- <<howto-leverage-properties>>

=== More tutorials ===

In this other set of tutorials it will be shown how to achieve tasks that frequently arise during the development of a
typical application.

- <<howto-create-constraint>>
- <<howto-create-concern>>
- <<howto-create-sideeffect>>
- <<howto-create-entity>>
- <<howto-configure-service>>
- <<howto-use-io>>

=== Zest™ Development ===

This last set of tutorials you'll learn how to build the Zest™ SDK from sources including this very documentation website
, the Zest™ manual, binaries and sources distributions.

- <<build-system>>
- <<community-docs>>
- <<releasing-apache>>


:leveloffset: 2

include::../../../../tutorials/introduction/twominutes/src/docs/two-minutes.txt[]

:leveloffset: 2

include::../../../../tutorials/introduction/tenminutes/src/docs/ten-minutes.txt[]

:leveloffset: 2

include::../../../../tutorials/introduction/thirtyminutes/src/docs/thirty-minutes.txt[]

:leveloffset: 2

include::../../../../tutorials/introduction/twohours/src/docs/two-hours.txt[]

:leveloffset: 2

include::../tutorials/howto-depend-on-zest.txt[]

:leveloffset: 2

include::../tutorials/howto-assembly-application.txt[]

:leveloffset: 2

include::../../../../tutorials/composites/src/docs/tut-composites.txt[]

:leveloffset: 2

include::../../../../tutorials/services/src/docs/tut-services.txt[]

:leveloffset: 2

include::../tutorials/howto-contextual-fragments.txt[]

:leveloffset: 2

include::../tutorials/howto-leverage-properties.txt[]

:leveloffset: 2

include::../tutorials/howto-create-constraint.txt[]

:leveloffset: 2

include::../tutorials/howto-create-concern.txt[]

:leveloffset: 2

include::../tutorials/howto-create-sideeffect.txt[]

:leveloffset: 2

include::../tutorials/howto-create-entity.txt[]

:leveloffset: 2

include::../tutorials/howto-configure-service.txt[]

:leveloffset: 2

include::../tutorials/howto-invocation-annotation.txt[]

:leveloffset: 2

include::../tutorials/howto-use-io.txt[]

:leveloffset: 2

include::../tutorials/howto-build-system.txt[]

:leveloffset: 2

include::../tutorials/howto-writing-docs.txt[]

:leveloffset: 2

include::../tutorials/howto-releasing-apache.txt[]

:leveloffset: 2
