documentation/manual/tutorial/Tutorials.md
Play's documentation shows the available features and how to use them, but the documentation will not show how to create an application from start to finish. This is where tutorials and examples come in.
Tutorials and examples are useful for showing a single application at work, especially when it comes to integrating with other systems such as databases or Javascript frameworks.
The play-samples GitHub repository offers Play examples that cover a huge number of cases. There you can find projects in Java, Scala and for multiple versions of Play. You can pick one that demonstrates functionality of interest to you. Make sure you have verified the [[requirements for running Play|Requirements]]. You can either clone the play-samples GitHub repository or download its contents, which include all samples, as a zip file. Alternatively, for a more streamlined option, you can download individual samples as zip files from the list below. This is recommended, as these zip files exclude unnecessary files for building and testing the samples.
| Example | Download |
|---|---|
| Play Java Hello World Example | Download (zip) |
| Play Java Starter Example | Download (zip) |
| Play Java gRPC Example | Download (zip) |
| REST API Example | Download (zip) |
| File Upload Example | Download (zip) |
| Forms Example | Download (zip) |
| JPA Example | Download (zip) |
| Ebean Example | Download (zip) |
| Websocket Example | Download (zip) |
| Chatroom using Websockets Example | Download (zip) |
| Streaming Example | Download (zip) |
| Compile Time Dependency Injection Example | Download (zip) |
| Using Dagger 2 for Compile Time DI | Download (zip) |
| Example | Download |
|---|---|
| Play Scala Hello World Example | Download (zip) |
| Play Scala Starter Example | Download (zip) |
| Play Scala gRPC Example | Download (zip) |
| REST API Example | Download (zip) |
| File Upload Example | Download (zip) |
| Forms Example | Download (zip) |
| Anorm Example | Download (zip) |
| Integrated Slick Example | Download (zip) |
| Isolated Slick Example | Download (zip) |
| Websocket Example | Download (zip) |
| Chatroom using Websockets Example | Download (zip) |
| Streaming Example | Download (zip) |
| Compile Time Dependency Injection Example | Download (zip) |
| Dependency Injection using Macwire Example | Download (zip) |
| Secure Session Example | Download (zip) |
| TLS Example | Download (zip) |
The Play community also has a number of tutorials and templates that cover aspects of Play better than the documentation can, or has a different angle. Templates listed here are not maintained by the Play team, and so may be out of date.
This is an incomplete list of several helpful blog posts, and because some of the blog posts have been written a while ago, this section is organized by Play version.
GET, POST, PUT and DELETE APIs for CRUD operations.GET, POST, PUT and DELETE APIs for CRUD operations.A tutorial video series by Radix Code provides an initial overview to Play, walking through initial IDE setup, defining routes, creating a CRUD application, enabling ORM support, and customizing the views with bootstrap.
Semisafe has an excellent series on Play in general:
Justin Rodenbostel of SPR Consulting also has two blog posts on building REST APIs in Play:
Marius Soutier has an excellent series on setting up a Javascript interface using AngularJS with Play and sbt-web. It was originally written for Play 2.1.x, but has been updated for Play 2.4.x.
Knoldus has a nice series of blog posts on Anorm: