h1. Play Scala

Welcome to the Play Scala documentation. This documentation is intended for the **0.9.1 release** of the Scala module and may significantly differs from previous versions. 

Play Scala enables you to use the Scala language for your application keeping key properties of the Play framework. It uses a more functional and Scala idiomatic style of programming without giving up on simplicity and developer friendliness.

p(note). This version is still in beta but can already be used to create complete Play applications using Scala as main language. Most of the API is stabilized and future versions will just improve compatibility with the existing Play features.
 
"Check the roadmap to 1.0":roadmap.

h2. Getting started

Add Scala support to your existing Play installation.

# "Installing Scala support for Play":install
# "‘Hello World’ tutorial — Your first Play Scala application":hello-world
# "Learning Scala with Play":learnscala

h2. Manual

The Scala version of Play framework share the same philosophy and concepts than the Java version. Here are the Scala specific features deeply explained.

# "‘Play Scala’ for Play Java developers":controllers
## "Writing Play controllers in Scala":controllers
### "Scala controllers are Objects":controllers#ScalacontrollersareObjects
### "Action methods return values":controllers#Actionmethodsreturnvalues
### "Return type inference":controllers#Returntypeinference
### "Controller interceptors":controllers#Controllerinterceptors
### "Mixing controllers using Traits":controllers#MixingcontrollersusingTraits
## "HTTP to Scala data binding":dataBinding
### "Binding Option types":dataBinding#BindingOptiontypes
### "Using Scala default parameter values":dataBinding#UsingScaladefaultparametervalues
### "Binding case classes":dataBinding#Bindingcaseclasses
## "Database access options":database
### "Using Anorm":database#UsingAnorm
### "Integrating other existing Database access librairies":database#IntegratingotherexistingDatabaseaccesslibrairies
## "Testing your application":test
### "JUnit Style":test#JUnitStyle
### "JUnit Style with Should matchers":test#JUnitStylewithShouldmatchers
### "Functional suite Style":test#FunctionalsuiteStyle
### "Specification Style":test#SpecificationStyle
### "Features list Style":test#FeatureslistStyle
# "Scala templates":templates
## "Overview":templates#Overview
## "Syntax: the magic ‘@’ character":templates#Syntaxthemagiccharacter
## "Template paramters":templates#Templateparameters
## "Looping":templates#Looping
## "If-Blocks":templates#IfBlocks
## "Pattern Matching":templates#Patternmatching
## "Declaring reusable blocks":templates#Declaringreusableblocks
## "Import statements":templates#Importstatements
## "Composing templates (tags, layouts, includes, etc.)":templates#Composingtemplatestagslayoutsincludesetc.
# "Anorm, SQL data access with Play Scala":anorm
## "Overview":anorm#Overview
## "Executing SQL requests":anorm#ExecutingSQLrequests
## "Retrieving data using the Stream API":anorm#RetrievingdatausingtheStreamAPI
## "Using Pattern Matching":anorm#UsingPatternMatching
## "Dealing with Nullable columns":anorm#DealingwithNullablecolumns
## "Using the Parser combinator API":anorm#UsingtheParsercombinatorAPI
## "Adding some Magic[T]":anorm#AddingsomeMagicT

h2. Tutorial — Play Scala guide, a real world app step-by-step

Here is the Scala version of the well known **‘Yet Another Blog Engine’** Play tutorial.

# "Starting up the project":guide1
# "A first iteration of the data model":guide2
# "Building the first screen":guide3
# "The comments page":guide4
# "Setting up a Captcha":guide5
# (to be continued)