Play framework is joining the Typesafe Stack — More information in the official announcement
Community contributed extensions
Here you can find great modules contributed by the play community. Make your choice and add instant power to your application. Need help about modules? Check the manual page.
A Play framework module that performs request logging similar to an access log file in nginx or apache.
akka (http://akkasource.org) is a platform for building simple, correct, fault-tolerant, concurrent, and scalable applications for the JVM. This module allows you to configure akka through The Play! framework’s conf/application.conf file; it provides a few command-line scripts to start akka when your application starts; and it has some examples of it in action.
Antify module allows you to generate a ant project file for your play application and run it with ant.
This module is no longer maintained. The antify support is now built-in since Play 1.2.2. Unofficial instructions here
This module reduces the code to manage bi-directional associations. Instead of writing
forum1.posts.remove(post);
post.forum = forum2;
forum2.posts.add(post);
you can just write
forum2.posts.add(post);
and the module handles everything else for you.
Bespin is a Mozilla Labs experiment on how to build an extensible web code editor using HTML 5 technology. The play bespin module allows you to edit all the application sources directly in the browser using bespin.
This very simple module enhances the Play! Framework logs to bring some missing information such as the class name, the method name where the log has been called, its signature, the file name and the line.
A EIP + Messaging module for the Play! Framework
- Integration done right
Include engine from:
- Apache-Camel => EIP engine
- Apache ActiveMQ => embedded JMS Broker
Here is a draft module to deploy a remote play app using Capistrano + SSH + VCS and run it in nohup/background mode.
I’m complete noob in Ruby so this is for people who don’t want to write ruby as me yet having a few basic functions around play and this great Capistrano tool.
But this is also for those who know ruby and want to customize cap configuration.
Module for creating and running database migrations for Play application. Uses Hibernate schema update to automatically generate SQL to the migrations.
For usage examples see this blog post
This module helps you remotely deploy your Play! application.
The first version (0.1) only supports Tomcat, but 0.2 is coming soon
and will add jboss and glassfish supports.
This module is a CAS client for Play! application.
Features are :
There is also a play application for testq purpose (with unit & selenium test) here: https://github.com/sim51/logisima-play-cas-test
Simplified API for integration Play! applications with the CheddarGetter subscription management service. (Sign up here: http://zfer.us/KIt2E)
Chronostamp enhances Models by adding magic timestamp fields (created_at & updated_at) and it will automatically record creation and update timestamps of database objects in an unobtrusive way.
This module provides integration with CloudBees RUN@cloud PaaS, For a getting started guide go here
In CloudFoundry, when a database resource is linked to an application, the credentials are put in an environment variable. This module automatically reads this variable and configures the Play database.
The content negotiation module helps using content types which are not directly supported by the Play! framework such as VCard and Atom/RSS feeds using annotations.
Cobertura is a free Java tool that calculates the percentage of code accessed by tests. It can be used to identify which parts of your Java program are lacking test coverage. It is based on jcoverage.
CoffeeScript is a great way to produce javascript. This module provides support for it (Java and Scala):
Comments are welcome!
Module thats make integration with the Constretto configration framework easy. Includes the ability to inject configuration in Play controllers using the standard Constretto @Configuration annotation.
Includes a sample application and a project Wiki
A module that seamlessly integrates Apache Jackrabbit
(JCR 2.0) with Play framework. Provides:
The CRUD (Create, Read, Update, Delete) Siena module a fully usable web interface for your Siena Model objects with a few more features than default CRUD.
Export your Play! domain model to a DDL file and import a database into your Play! domain model. Please refer to the documentation for more information. The 1.1 version is for the Play! 1.1 branch while the 1.0 is for the 1.0 Play! branch.
Deadbolt is an authorisation mechanism for defining access rights to certain controller methods or parts of a view. It has a powerful but simple syntax that allows AND/OR/NOT relations. Both controller and view restrictions can be nested to allow for an elegant DRY approach to securing your application.
It’s also possible to specify pre-defined restriction trees for your controllers and thus be able to change security allowances without changing your code.
Finally, you can name controller classes, controller methods and views as resources and determine arbitrarily if access is allowed. This feature also integrates with the features above to provide specific/generic authorisation scenarios.
This module helps you deploy your Play! application to dotcloud.
First, install the module from the Play! module repository like so:
play install dotcloud
Tell Play! that you want your application to use the dotcloud module by adding it to your conf/dependencies.yml file. It might look like this:
require:
- play
- play -> dotcloud 0.2
Now run play dependencies to install the module into your application. Then, create a dotcloud.yml file in your application’s conf directory. The file might look like this:
www:
type: java
db:
type: mysql
Use
play dotcloud:deploy
For more information, consult the documentation in this module's GitHub repository.
Adds Ebean ORM to play!. Still in very experimental phase.
This module allow you to use constants in the CSS files. It is very helpful when you work with large CSS files, to avoid to repeat yourself with color, fonts...
This module is no longer maintained. You should take a look at the sass module.
Elastic Search is a Distributed Search Solution based on Apache Lucene. This module provides an embedded Elastic Server instance for Rapid Development. Documentation is available at http://geeks.aretotally.in/wp-content/uploads/2011/05/Play-Framework-ElasticSearch-Module.pdf.
Template based Excel report generator. ‘x’ version support xlsx format template but is much bigger than normal version (19MB vs. 3MB)
This is a module for Play! Framework 1 applications which replaces the default groovy template implementation with GT-Engine which is faster and uses less memory.
GT-Engine is also used in the Play 2.0 module that enables legacy support for groovy templates.
Please see documentation for more info
Easily integrate Facebook based authentication into any Play framework application.
The FbGraph module now supports OAuth 2.0 for authentication.
FbGraph module enables your application to access all the features of the Facebook Graph API via Java and the Play framework. It uses the JavaScript SDK to provide simple login and signup.
play-featureflags is a module for playframework that enables you to easily use ‘feature flags’ in your application. A feature flag is any piece of functionality in your application that you want to be able to switch ON and OFF at runtime, using an admin screen.
With this module, you can define feature flags by name, using a simple annotation on your controllers and/or a tag in your views.
This simple technique allows you to never have to branch your code again! You can safely deploy your HEAD multiple times a day to all of your environments for development, testing, production, whatever. Just use a different set of enabled features.
Feature flags are what Flickr uses to be able to do 10+ deployments to production per day. See http://code.flickr.com/blog/2009/12/02/flipping-out/ for more info.
Build Play! applications that integrates to Force.com. Provides OAuth authentication and REST API adapter.
Formee eases and helps out to build html forms designs, and also validates its data from both client-side and server-side based on model validation annotations.
Features:
- It has all the features of formee
- A form wraps an single model
- Automate validations from client-side based on Play model
annotations by using jquery.validate plugin.
- Homogeneous error messages from both client-side and server-side,
i.e., they appear in the same place.
Create play application for the Google App Engine platform.
Enable your Play application to integrate with Google Checkout as a merchant.
This module is aimed at integrating Google Closure tools with play!.
For the time being, it ONLY provides javascript client templating based on Google Closure Templates.
v1.1 renders SoyException into web page
Other tools from Google Closure will be added later but don’t hesitate to ask if you need something first.
Integrate Gravatar into your Play application
Play with your javascript/css files!
Experimental module that replace the Mina based network stack by the Grizzly one.
This module is no longer maintained. The grizzly support is now built-in since Play 1.1
The Guice module helps you to inject Guice managed components into your play application. The injection points are defined by the upcoming @javax.inject.Inject annotation, which is bundled with play at the moment.
This module provides a helper to simplify the integration of a GWT UI with Play as an application server.
GWT2 Plugin for Play!
by Vincent Buzzano
Current version is 1.8 for play 1.2.3
Project Webstie: http://github.com/vbuzzano/play-gwt2
This module has been tested with gwt 2.2.x and 2.3.0
QUICK START:
Create a new application --with gwt2
> play new myGwt2App --with gwt2
> cd myGwt2App
That’s all .. you are ok to start your project !!
#################################################
WORKAROUND FOR:
VALIDATION COMPILATION ERROR due to missing Type and Sources
#################################################
Copy validation-api-1.0.0.GA and source to your project libs. You can find them into the GWT SDK Directory.
> cp $GWT_HOME/validation-api-1.0.0.GA* lib/
This module is a dropin replacement for EhCacheImpl or MemcachedImpl from Play. It allow your application to have a clustered cache when you can’t install a memcached server on your platform. It’s also a great free open source In-Memory Data Grid.
This module makes it easy to deploy Play applications on Heroku.
Client-side form validation based on your Play framework
model annotations using HTML5 attributes.
play-httpmock caches WebService requests to emulate them in order to overcome connection problems (lag, denial of service, HTTP errors) for fast developping.
This module will add some tools to ease use of i18n in your Play! projects.
“i18n-extract” will parse your application’s files to find internationalized strings, and add missing strings to your messages files.
InfoPlay is a module which gives many informations like infophp in PHP language. It display useful informations about the running application, the framework, the virtual machine and the operating system.
This module lets you manage your dependencies with apache ivy.
A pure Java-based fast statically typed template engine for the Play! framework.
Japid is about 2X – 20X times faster than the built-in Play! template engine and delivers 3X as much total web throughput with Play!. See a third-party benchmark . The Japid change-reloading cycle is 5-10X faster than that of the Groovy/Scala based templates, a big productivity boost.
It can be used as a super fast generic template engine as well. It also contains a Eclipse plugin that helps developing in Japid in the Eclipse IDE. Please go to ${PLAY_HOME}/modules/japid_xxx/eclipse-plugin for detail. The source code is hosted on Github/Japid Eclipse Plugin .
Please go to the project home page for the code.
Version compatibility:
japid-0.8.1.2 or older: play 1.1.x
japid-0.8.2 or newer: play 1.2.x
This module helps you remotely deploy your Play! application in to Jelastic Platform.
To deploy to Jelastic :
play jelastic:deploy [app name] \
--l [your login] \
--p [your password] \
--c [your context name] \
--e [your environment name] \
--a [your api hoster provider]
To publish to Jelastic :
play jelastic:publish [appname] \
--l [your login] \
--p [your password] \
--a [your api hoster provider]
To make it easier to deploy, those fields can be put in the projects application.conf file
jelastic.api.login= your login
jelastic.api.password= your password
jelastic.api.context= your context name
jelastic.api.environment= your environment name
jelastic.api.apihoster= your api hoster provider
play jelastic:deploy
or
play jelastic:publish
Integrates Jersey into the Play! Framework. This enables you to use JAX-RS 1.1 annotations to define your endpoints.
Jackson is shipped with the plugin and used for all serialization/deserialization issues, but it should be pretty easy to provide custom providers and use whatever you want.
JPAGEN aim at generating JPA Entities and Composite keys (when needed) from metadata or a file containing a list of tables.
Record how many database queries were executed during a request. It has tags to show this and some other numbers on your pages. Additionally, it can also output these numbers in the response headers, so you can also see it for Ajax
requests etcetera.
The jQuery UI module provides working examples of jQuery UI widgets, integrated with a Play application.
Client-side form validation via jQuery, based on your
Play framework model annotations. Check the demo application
A jquery library API for validation, supports Ajax validation (per field or per Form). It saves info about the models and their fields' validation in a singleton created on Application Start Up. It’s also intended to extend the server side validation annotations as well. It’s time to make the daily routine automated, easier, and more efficient! Contributions, comments, or suggestions are welcome.
check demo for JPA & check demo for Siena & GAE
The less module converts less (http://lesscss.org/)
to CSS, similar to what the sass module does with sass.
Easily integrate LinkedIn’s OAuth authentication into your Play Framework application. Currently it feeds the following fields to the application: linkedin id, first name, last name, industry, headline and oauth token (linkedin doesn’t provide email).
"You never develop code without version control, why do you develop your db without it ? ™"
Liquibase (http://www.liquibase.org) is a simple, reliable and elegant solution for database refactoring management. It comes with main features :
Liquibase module differs from Migrate module for the main following reason :
Log4Play is a module that provides a log4j appender which publishes log entries to an EventStream. The module also provides an user interface which uses a WebSocket to create a live stream of log messages. You can use this user interface to look at the logs of your application without needing to login to the actual box.
Log4Play integrates with BetterLogs by Stephane Godbillon. Special thanks to Diogenes Buarque and Marc Deschamps.
Add configuration ‘log4play.disabled=true’ to turn off Log4Play.
Logisima-yml helps you to export your database into an yml file, just with the following command line : ‘play yml:generate’ !
New features :
- compatible with embedded annotation
- compatible with temporal annotation
Adding a testing application. @See samples-and-tests ...
Easily bring markdown contents into your application.
Version 1.7 : Added ability to read markdown files from groovy. markdownPaper upgraded to v1.2.7
version 1.6: updated markdownPapers to v1.2.6
version 1.5: fixed – compilation in prod mode fails
version 1.4: updated markdownPapers to v1.2.5
version 1.3: updated markdownPapers to v1.2.4
version 1.2 comes from with better samples and updates from the md parser
This module lets you manage your dependencies with apache maven. Use head for Play 1.1, and 1.0 for Play 1.0.
Expected behavior this module:
There is something I am consciously trying to avoid:
help app developer to easily implement navigation menu. Basically with the module what you need to do is:
Yes, that’s all!
for detail, please refer to document
Many thanks to roymax@gmail.com who test and report issues of this module
Module messages provides a web based tool for managing your application’s localizations.
Check out the usage examples in this blog post
For bug reports and feature requests use the project home page at github.
This module allows you to easily maintain database versions for your project.
Mocha module for Play! Framework is an implementation of mocha UI javascript interface for Play!. Aims of this module is to get windows Web interfaces easy to use. You don’t need to know javascript now to use this javascript interface. The implementation is only in HTML or tags for Play! Framework.
Mockito is a mocking framework that tastes really good. It lets you write beautiful tests with clean & simple API. Mockito doesn’t give you hangover because the tests are very readable and they produce clean verification errors.
This module provides a simple, elegant solution for using models stored in mongodb. For a more complex use cases, please take a look at the morphia module.
Version 1.3 addresses many issues raised by the community. Please read the documentation for usage.
Seamlessly MongoDB access integration with Play’s Model interface.
Start from morphia1.2.2beta1, support to Play-1.1 branch is dropped. Please update your play to 1.2.x. Or keep using the legacy morphia-1.2beta6.
Multiple Database module for the Play! framework.u000du000aThis module allows you to scale your Play! apps to multiple databases with a common schema.
Allows you to define logic-less template snippets that can be used server-side in your Play! views as well as client-side in your JavaScript. The snippets use Mustache, a logic-less template language that has compilers for both JavaScript and Java.
Define and display navigation menus in your Play
application.
Robust core, easily adaptable to suit your needs.
This module provides integration with Nemrod. It helps to import and export translations from your application to a Nemrod instance automatically.
More information about Nemrod and www.localizeyourapps.com here : Nemrod
Integrate neo4j database into your play! project.
Module that replaces the Mina based network stack by the Netty one.
This module has been integrated into Play core since 1.1
This module provides tools to connect to an OAuth provider, such as Twitter or Google.
Objectify is a flexible abstraction on Google App Engine/J which makes data access simple and elegant. Together the Play Framework and Objectify provide a powerful technology stack for building fast and scalable applications on Google’s infrastructure.
Sample Application:
http://play-framework-objectify.appspot.com/
This module provides the basic plumbing to create an Open eBay Application (http://apps.ebay.com/). More details about these applications can be found at eBay Developer Network (https://www.x.com/developers/ebay/products/open-ebay-apps)
Features in Version 0.1
- Gadgets Url request verification
- Username & Auth token decryption
- Open eBay parameter extraction
- Templates for Canvas, Default and Wide Views using Bootstrap.
Planned Features
- eBay Api Integration
- Subscription End point management & User Management
- eBay oAuth Integration for external pages
Openshift is Red Hat’s free, auto-scaling, cloud-based platform-as-a-service for Java, Perl, PHP, Python, and Ruby applications. With this module, you’ll be able to easily deploy and manage your play applications on Red Hat’s cloud platform, with just a couple of keystrokes from the command line.
OrientDB for Play! Framework
Features
A replacement for #{list} tags that allows for easy pagination.
A module that allows you to render PDF document from your HTML templates. This module is based on the YaHP Converter library. You can find its source code at:
Integrate the pegdown Markdown (see: https://github.com/sirthias/pegdown) processor with your Play application; this module provides SmartyPants support, as well as the other Markdown extensions which ship with pegdown.
playapps.net is a streamlined deployment environment designed to get your Play applications up and running quickly and efficiently
Playerrors gathers and informs you about the errors in your production webapps, so you can fix them before your visitors get a chance to complain
Postmark module provides easy integration with postmarkapp.com for handling outgoing emails.
The press module is a JavaScript and CSS minimizer that is designed to be transparent to the application developer:
Simply replace script tags with #{press.script} tags.
It is a simplified version of the greenscript module, with the difference that the order of JS/CSS remains the same whether or not compression is enabled, making it easier to debug. Greenscript is more feature rich and may be more appropriate for some applications.
This module lets you easily add realtime functionality to your Play applications with Pusher (http://www.pusher.com) using websockets.
The QUnit module provides integration of JUnit Javascript tests with the Play! Framework.
Features:
RabbitMQ offers a highly available and scalable, and yet lightweight, messaging system with predictable. RabbitMQ is the leading implementation of AMQP, and a great alternative to JMS. RabbitMQ supports Work Queues, Routing, PubSub, etc. This module allows your Play! application to produce and consume messages from RabbitMQ queues; it provides statistics and streaming through WebSockets; retry logic has been added on version 0.0.4.
Quickly integrate reCaptcha.com challenge-response test in your applications.
a 2 minutes integration !
1.3: support for HTTPS recaptchas
RecordTracking unobtrusively tracks the creation, updating and
elimination events regarding to records.
When one of those events occurs, writes into a log:
- The name of the action
- The date when the action was invoked
- The user who invoked the event
- The name of the model
- The model data including association id’s
The Redis Play! module helps you easily use Redis in your Play! applications. The module consists of three parts:
1. A Redis client that lets you persist data to a Redis datastore.
2. A Redis implementation of the Play! cache interface. This allows you to choose Redis as your caching system.
3. A cache monitor that helps with debugging while using Redis cache.
The RESTEasy Play! module allows you to define JAX-RS RESTful web services in the Play! Framework using RESTEasy.
The Play! RESTEasy CRUD module which allows you to automagically generate your RESTful CRUD resources for a given model. No boilerplate code needed anymore and 100% RESTful.
ReverseProxy allows developers to configure web applications to automatically switch between the HTTP and HTTPS protocols per page when used behind a front end Reverse-Proxy server such as Apache, Nginx or Lighttpd.
Configuration is done in Controllers using annotations.
Allow to use riak-java-client in play! way. All java properties is encode in JSON and save in riak with bucket and key declare in Annotation.
This module allows you to add routes through annotations, allowing you to declare your routes in your controllers.
The S3Blobs Play Framework Module provides an easy way to read an write files from Amazon S3 from within JPA entities.
{style with attitude} - Sass makes CSS fun again. Sass is CSS, plus nested rules, variables, mixins, and more, all in a concise, readable syntax.
Read more at http://sass-lang.com
scaffold will generate basic scaffolding for bootstrapping a project from your JPA or Senia entities. Unlike the CRUD module, scaffold statically generates the controllers and templates, and does not dynamically introspect your model at runtime.
Simply create your JPA or Senia models and run “play scaffold:gen --overwrite” to create controllers and CRUD templates for your models.
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.
Check the dedicated website at http://scala.playframework.org.
Scala code generators for the Play! framework
This module can be used to generate Scala code. It can generate JPA/ Siena based models, CRUD and associated test cases.
Options:
--scaffold-jpa [entity name] [attribute1:type1]* Generates the JPA based model and associated CRUD code.
--model-jpa [entity name] [attribute1:type1]* Generates the JPA based model.
--scaffold-siena [entity name] [attribute1:type1]* Generates the Siena based model and associated CRUD code.
Note: --scaffold and --model are shortcuts to generate JPA
These generators can only be used from inside a Scala Play! project.
This module provides basic security (authentication/ authorization) for Play applications written in Scala.
Scalate Template engine support (more info about scalate: http://scalate.fusesource.org ).
This module depends on the scala module, so you will need to enable both modules.
required play version: 1.1r956
required play scala version: 0.7.2
You can start a new project with the following command:
play new myapp --with scala,scalate
(assuming you have only scala-0.7.2 and scalate-0.7.2 installed)
Search allows you to have basic full text search functionalities to your JPA Model. It is based on Lucene, and requires a real file system to store its indexes.
The Secure Permissions Play! module extends the Secure module in Play! Framework to add permission checks based on the rule-based permissions in the Seam Framework (based on Drools rules).
SecureSocial allows you to add an authentication UI to your app that works with services based on OAuth1, OAuth2, OpenID and OpenID+OAuth hybrid protocols. The following services are supported:
- Twitter (OAuth1)
- Facebook (OAuth2)
- Google (OpenID + OAuth Hybrid)
- Yahoo (OpenID + OAuth Hybrid)
- LinkedIn (OAuth1)
- Foursquare (OAuth2)
- MyOpenID (OpenID)
- Wordpress (OpenID)
- Username and Password
Allow users to login to your Play! application via Shibboleth.
Shibboleth is a federated identity management protocol popular in higher education. The protocol provides a single sign on service across multiple organizational boundaries with secure attribute delivery. Shibboleth support requires that your application be proxies behind a Shibboleth capable web server such as Apache, Lighttpd, or IIS with the corresponding Shibboleth module installed. For more information on the protocol visit:
http://shibboleth.internet2.edu/
The siena module enables Siena support to map your Java entities to GAE/MySQL/PostgreSQL/H2 from your play application (at least since v2.0.0).
Main github project is: https://github.com/mandubian/play-siena
Read more on Siena at: http://www.sienaproject.com/ + https://github.com/mandubian/siena
This module allows running Spock specifications. This provides the possibility to write BDD style tests (still wrapped as junit) with the expressive power of groovy and still have the tested application be in playframework. This can also be combined with Geb which provides The future of functional web testing.
See more description on github
This module allows to use Spring managed beans inside your play! applications.
Used to write tests that can auto-magically inject mocks (using
Mockito) into Play applications wired up using the spring module.
Easy deployment to Stax cloud hosting platform (http://www.stax.net).
Creates a self-documenting meta-description for REST APIs which allows for code-gen, UI-sandbox, and test framework. See more at http://swagger.wordnik.com and at http://developer.wordnik.com/docs
This module aims to simplify the code needed to display data in HTML tables.
Tabula Rasa provides support for user-customisable tables in views. DataTables is used as the client-side table renderer. Loading data via AJAX into tables is also simplified, and can be used with or without personalized tables.
Twig superpowers Google App Engine’s Datastore for Play applications. Get a fluid API, in-memory joins, and asynchronous queries out of the box.
Play module that bundles up the twitter-bootstrap stylekit and the play less plugin, so that you can use twitter-bootstrap, edit the .less files and have your changes picked up and dynamically rendered to css.
UserAgentCheck provides an easy way to notify users when their browser is outdated. It displays a banner (blocking or non blocking) that drives the user to a page where he/she may download an upgrade.
Version 0.3: Fixes issues with IE10
Adds some virtual hosts functionality with separate datasource and customizable application settings for each virtual host.
WebDrive module provides Selenium 2 testing support for Play framework. You can use this module to test your application with any browser supported by Selenium WebDriver.