# Awesome Play1

A collection of awesome Play 1.x modules, tools, and resources.

> Inspired by awesome-php, awesome-python, frontend-dev-bookmarks and awesome-ruby.

Contributions are always welcome!

# Modules

Lists all the modules available with the following `badges` :

Badge | Meaning
--- | ---
| the module is registered in playframework.com/modules. The badge points to the registered page.
| the module is not registered in playframework.com/modules. You have to add an external repository in your `dependencies.yml` file. The badge points to the official module page.
| the module is available in MavenCentral thanks to the maven-play-plugin. The badge poins to the maven repository of the module.
| the module has been updated since playframework.com/modules has been frozen. The badge points to the official module page.

The modules are divided in the following categories : * Database * Deployment * Injection/dependencies * Language * Messaging/events * Monitoring * Persistence * Presentation * Rest * Scaffolding * Search * Security * Template * Translation * Misc

If you want to contribute information about a module, please refer to the guide.

### Database

- [carbonate] Carbonate Creates and runs database migrations using Hibernate schema update to automatically generate SQL to the migrations. See this blog post
- [chronostamp] Chronostamp Enhances Models by adding and updating timestamp fields (created_at & updated_at).
- [db] Database module Export your Play! domain model to a DDL file and import a database into your Play! domain model.
- [jpagen] JpaGen Generates JPA Entities and Composite keys (when needed) from metadata or a file containing a list of tables.
- [liquibase] Liquibase Liquibase is a simple, reliable and elegant solution for database refactoring management
- [logisimayml] logisima-yml Exports your database into an yml file
- [migrate] Database migration Maintains database versions for your project.
- [multidb] Multiple Databases Scale your application to multiple databases with a common schema.

### Deployment

- [capistrano] Capistrano Deploys a remote application using Capistrano + SSH + VCS and run it in nohup/background mode.
- [cargo] Cargo Remotely deploys your application.
- [cloudbees] CloudBees Provides integration with CloudBees.
- [cloudfoundry] CloudFoundry Automatically configure the database your application is deployed in In CloudFoundry.
- [dotcloud] Dotcloud Deploys your application to dotcloud
- [gae] Google App Engine Creates application for the Google App Engine platform.
- [heroku] Heroku Deploys your application on Heroku.
- [jelastic] Jelastic Deployment Support Deploy your application in the Jelastic Platform.
- [openebay] Open eBay Provides the basic plumbing to create an Open eBay Application
- [openshift] Openshift Openshift is Red Hat’s free, auto-scaling, cloud-based platform-as-a-service for Java, Perl, PHP, Python, and Ruby applications.
- [play-gae-q42] Q42’s Google App Engine Maintained module for Google App Engine integration. Should be used instead of [gae]
- [playapps] playapps.net playapps.net is a streamlined deployment environment designed to get your Play applications up and running quickly and efficiently
- [reverseproxy] ReverseProxy Configures your application to automatically switch between the HTTP and HTTPS protocols per page when used behind a front end.
- [router] Play Router Annotations Adds routes through annotations, allowing you to declare your routes in your controllers.
- [stax] Stax Easy deployment to Stax cloud hosting platform (http://www.stax.net).
- [vhost] VHost Adds some virtual hosts functionality with separate datasource and customizable application settings for each virtual host.

### Injection/dependencies

- [constretto] Constretto Makes integration with the Constretto configration framework easy
- [guice] Guice Injects Guice managed components into your application.
- [ivy] Ivy dependency management Manages your dependencies with apache ivy.
- [maven] Maven dependency management Manages your dependencies with apache maven
- [spring] Spring Allows to use Spring managed beans inside your play! 1.x applications.

### Language

- [googleclosure] Google Closure This module is aimed at integrating Google Closure tools with play!.
- [gwt] Google Web Toolkit This module provides a helper to simplify the integration of a GWT UI with Play as an application server.
- [gwt2] GWT2 Integrates Play with GWT
- [scala] Scala Play Scala enables you to use the Scala language for your application keeping key properties of the Play framework
- [scalagen] Scala Gen Scala code generators for the Play! framework
- [scalasecure] Scala secure This module provides basic security (authentication/ authorization) for Play applications written in Scala.

### Messaging/events

- [akka] Akka support Allows you to configure akka through The Play! framework’s conf/application.conf file.
- [camel] Camel A EIP + Messaging module for the Play! Framework
- [pusher] Pusher This module lets you easily add realtime functionality to your Play applications with Pusher using websockets.
- [rabbitmq] RabbitMQ RabbitMQ offers a highly available and scalable, and yet lightweight, messaging system.

### Monitoring

- [accesslog] Accesslog A Play framework module that performs request logging similar to an access log file in nginx or apache.
- [betterlogs] BetterLogs Enhances the default logs adding the class and method names, where the log has been called, its signature, the file name and the line.
- [infoplay] InfoPlay InfoPlay is a module which gives many informations like infophp in PHP language.
- [jpastats] Jpastats Record how many database queries were executed during a request
- [log4play] Log4Play Provides a log4j appender which publishes log entries to an EventStream
- [play-hibernate-statistics] Hibernate statistics Displays MBean Hibernate statistics
- [playerrors] Playerrors 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
- [profiler] Mini-profiler Displays a mini profiler in your application
- [recordtracking] RecordTracking RecordTracking unobtrusively tracks the creation, updating and elimination events regarding to records.
- [statsd] Statsd The module is a wrapper over StatsD which allow for dead simple statistic aggregation from within play.

### Persistence

- [associations] Associations This module reduces the code to manage bi-directional associations.
- [cream] JCR for Play! A module that seamlessly integrates Apache Jackrabbit(JCR 2.0) with Play framework
- [ebean] EBean ORM support Adds Ebean ORM to play!. Still in very experimental phase.
- [mongo] MongoDB 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.
- [morphia] MongoDB Integration Seamlessly MongoDB access integration with Play’s Model interface.
- [mybatisplay] MyBatisPlay Provides support for MyBatis persistence framework.
- [neo4j] logisima-neo4j Integrate neo4j database into your play! project.
- [objectify] Objectify Objectify is a flexible abstraction on Google App Engine/J which makes data access simple and elegant
- [orientdb] OrientDB OrientDB for Play! Framework
- [redis] Redis The Redis Play! module helps you easily use Redis in your Play! applications
- [riak] Riak Allow to use riak-java-client in play! way.
- [s3blobs] S3Blobs The S3Blobs Play Framework Module provides an easy way to read an write files from Amazon S3 from within JPA entities.
- [siena] Siena Enables Siena support to map your Java entities to GAE/MySQL/PostgreSQL/H2 from your play application
- [twig] Twig Twig superpowers Google App Engine’s Datastore for Play applications. Get a fluid API, in-memory joins, and asynchronous queries out of the box.

### Presentation

- [coffee] CoffeeScript CoffeeScript is a great way to produce javascript. This module provides support for it (Java and Scala).
- [excel] Excel Template based Excel report generator
- [formee] Formee Helps to write forms and add client and server side validation.
- [greenscript] Minimize javascript/css files Play with your javascript/css files!
- [html5validation] HTML5 Validation Client-side form validation based on your Play framework model annotations using HTML5 attributes.
- [jqueryui] Jqueryui The jQuery UI module provides working examples of jQuery UI widgets, integrated with a Play application.
- [jqvalidate] JQuery Validation Client-side form validation via jQuery, based on your model annotation
- [jqvalidation] Jqvalidation A jquery library API for validation, supports Ajax validation (per field or per form)
- [less] Less module Converts less to CSS, and handles error reporting in your Play application
- [markdown] Markdown Easily bring markdown contents into your application.
- [menu] Menu Eases the implementation of navigation menu.
- [navigation] Navigation Define and display navigation menus in your Play application.
- [paginate] Paginate A replacement for #{list} tags that allows for easy pagination.
- [pdf] PDF module Renders PDF document from your HTML templates. This module is based on the YaHP Converter library.
- [pegdown] PegDown Markdown Integrates the pegdown Markdown processor with your Play application
- [press] Minimize javascript/css files A JavaScript, CSS and Less minimizer that is designed to be transparent to the application developer.
- [sass] Syntactically Awesome Stylesheets Sass makes CSS fun again. Sass is CSS, plus nested rules, variables, mixins, and more, all in a concise, readable syntax.
- [table] Table Simplifies the code needed to display data in HTML tables.
- [tabularasa] Tabula Rasa Tabula Rasa provides support for user-customisable tables in views
- [twitterbootstrap] Twitterbootstrap Bundles up the twitter-bootstrap stylekit and the play less plugin, easing the .less files edition (changes are dynamically taken into account).

### Rest

- [jersey] Jersey Integrates Jersey into the Play! Framework.
- [resteasy] RESTEasy Play! module The RESTEasy Play! module allows you to define JAX-RS RESTful web services in the Play! Framework using RESTEasy.
- [resteasycrud] RESTEasy CRUD module The Play! RESTEasy CRUD module which allows you to automagically generate your RESTful CRUD resources for a given model
- [swagger] Swagger Creates a self-documenting meta-description for REST APIs which allows for code-gen, UI-sandbox, and test framework.

### Scaffolding

- [crudsiena] CRUD for Siena Offers a fully usable web interface for your Siena Model objects with a few more features than default [crud] module.
- [mocha] Mocha An implementation of mocha UI javascript interface for Play!
- [play-bootstrap] Basic bootstrap scaffolding Creating Bootstrap based applications (derived from the default [scaffold] module).
- [scaffold] Scaffold Scaffold will generate basic scaffolding for bootstrapping a project from your JPA or Senia entities

### Search

- [elasticsearch] ElasticSearch Elastic Search is a Distributed Search Solution based on Apache Lucene. This module provides an embedded Elastic Server instance for Rapid Development.
- [search] Search Search allows you to have basic full text search functionalities to your JPA Model. It is based on Lucene.

### Security

- [browserid] BrowserID BrowserID is an experimental new way of signing into websites. The goal with BrowserID is to design something safe and easy for users and the developers.
- [cas] logisima-cas This module is a CAS client for Play! application.
- [casino] Casino This project provides a simple method to integrate sign-up and password recovery to your project
- [deadbolt] Deadbolt Deadbolt is an authorisation mechanism for defining access rights to certain controller methods or parts of a view
- [fbconnect] Facebook connect Easily integrate Facebook based authentication into any Play framework application.
- [force] Force.com Build Play! applications that integrates to Force.com. Provides OAuth authentication and REST API adapter.
- [linkedin] LinkedIn OAuth Authentication Easily integrate LinkedIn’s OAuth authentication into your Play Framework application
- [oauth] OAuth Client This module provides tools to connect to an OAuth provider, such as Twitter or Google.
- [recaptcha] Recaptcha Quickly integrate reCaptcha.com challenge-response test in your applications.
- [securepermissions] Secure Permissions Extends the defaut secure module to add permission checks based on the rules in the Seam Framework (based on Drools rules).
- [securesocial] SecureSocial 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
- [shibboleth] Shibboleth Allow users to login to your Play! application via Shibboleth.

### Template

- [fastergt] Faster Groovy Templates Replaces the default groovy template implementation with GT-Engine which is faster and uses less memory.
- [japid] Japid Template Engine A pure Java-based fast statically typed template engine for the Play! framework version 1.2.x.
- [mustache] Mustache 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.
- [rythm] Rythm Template Engine PlayRythm is a Razor like template engine.
- [scalate] Scalate Scalate Template engine support.
- [thymeleaf] Thymeleaf Play framework module to use Thymeleaf 2.0 as a template engine.

### Testing

- [cobertura] Cobertura Integrates with Cobertura to calculate the percentage of code accessed by tests (test coverage).
- [httpmock] HttpMock Caches WebService requests to emulate them in order to overcome connection problems (lag, denial of service, HTTP errors) for fast developping.
- [mockito] Mockito Mockito is a mocking framework that tastes really good
- [qunit] QUnit The QUnit module provides integration of JUnit Javascript tests with the Play! Framework.
- [spocktests] Spock tests Runs Spock specifications and to write BDD style tests (still wrapped as junit) with the expressive power of groovy.
- [springtester] spring tester Write tests that can auto-magically inject mocks (using Mockito) into Play applications wired up using the spring module.
- [tests] Alternative Test module The Test Module for Play!Framework helps you write tests quicker, is a cleaner and reusable manner.
- [webdrive] Webdrive WebDrive module provides Selenium 2 testing support for Play framework

### Translation

- [i18ntools] I18ntools This module will add some tools to ease use of i18n in your Play! projects.
- [messages] @messages Module messages provides a web based tool for managing your application’s localizations.
- [nemrod] Nemrod This module helps to import and export translations from your application to a Nemrod instance automatically.
- [play-i18ned] Play-i18ned Converts default i18n files from an Excel Sheet and the other way around.

### Misc

- [bespin] Bespin online editor Allows you to edit all the application sources directly in the browser using bespin, the web code editor.
- [bhave] Bhave Integrates with bhave, a web-based behavior driven development (BDD) framework, for web apps, done in a funky way!
- [cheese] Cheese Simplified API for integration your application with the CheddarGetter subscription management service.
- [cms] Cms A very simple embedded CMS
- [cnm] Content Negotiation Helps using content types which are not directly supported by default such as VCard and Atom/RSS feeds using annotations.
- [externalconfig] External Config Allows easy loading of external config / properties files. This allows for easy configuration of an app deployed in a war.
- [featureflags] Feature Flags Enables you to easily use flags in your application that you can switch ON and OFF at runtime, using an admin screen.
- [googlecheckout] Google Checkout Enable your Play application to integrate with Google Checkout as a merchant.
- [gravatar] Gravatar Integrate Gravatar into your Play application
- [hazelcast] Hazelcast Dropin replacement for EhCacheImpl or MemcachedImpl from Play
- [postmark] Postmark Postmark module provides easy integration with postmarkapp.com for handling outgoing emails
- [useragentcheck] UserAgentCheck UserAgentCheck displays a banner to notify users when their browser is outdated.
- [play1-chart] Play1-Chart The Chart module allows for easy generation of chart images.

# Tools

You know a tool that every player should use? Tell us!

# Resources

- Mavenized modules and how to use them
- Using Play’s controller with a nice roundup about caching, expiration and eTags
- Using Luo’s `cache4` annotation

## License

To the extent possible under law, PerfectCarl has waived all copyright and related or neighboring rights to this work.

play1.md Github