///////////////////////////////////////////////////////////////
 * 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://polygene.apache.org/download.html[Polygene™ 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 Polygene™.

[[tutorials-intro,Polygene™ in 42 minutes]]
=== Polygene™ in 42 minutes ===

This quite long introduction to Polygene™ will start by brushing up an overview of the problems Polygene™ 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 Polygene™ ===

Throughout this set of tutorials it will be shown how to depend on Polygene™ 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-polygene>>
- <<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>>

=== Polygene™ Development ===

This last set of tutorials you'll learn how to build the Polygene™ SDK from sources including this very documentation website
, the Polygene™ 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-polygene.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-build-system.txt[]

:leveloffset: 2

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

:leveloffset: 2

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

:leveloffset: 2
