Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A Play-Scala-PostgreSQL-Slick stack for web applications. Created by and the Play Framework community.


PSPS is a seed project for web applications that have user accounts, a public side, and require database connectivity (a very common type indeed). It is targeted at small-to-medium sites, that can use a single main part ("monolith"). In other words, if you need a microservice-based cloud native hyper-distributed app, that’s not it. If you need a website that can be hosted on a VPS, have a public and a back-office parts, and scale up nicely, PSPS is a good start.

PSPS is based on our experience with Play for creating web applications. Some of these sites handle thousands of visitors each month, sitting on a $4/month VPS (from digitalFyre, BTW). It works for us (and on our machines!), we hope the play community will find it useful too.

Before going to production, reduce leaked system information by preventing httpd from sending detailed system info in the headers. See here.
Close tcp port 9000 for the outside world, and allow access only via the local Apache:
$ sudo iptables -A INPUT -p tcp -s localhost --dport 9000 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 9000 -j DROP
deploy status

Change Log


  • ↗️ Updated Play to 2.8.8, sbt 1.5.4, tether 1.4.7, and Bootstrap 5.

  • ↗️ Improve RTL support.

  • ↗️ πŸŽ‰ Added SVG icons library, based on Bootstrap Icons.

  • ↗️ Updated date/time formatting library.

  • ↗️ Added JS escaping in views.Helpers. Fixes an issue with informational messages that has quotes.

  • ↗️ πŸŽ‰ Added a set of components to make building forms much easier. These live in views.comps.bform._.

  • ↗️ Added views.comps.bform.sortingTH, a table header with a sorting triangle and a proper link behavior.

  • ↗️ Added an editable JS list, useful for controlled vocabularies, such as a closed list of items.

  • ↗️ πŸŽ‰ πŸŽ‰ User roles! Also, first generated user is an admin.

  • ↗️ Invitation improvements: email auto-fill

  • πŸ› cleaned warnings


  • πŸŒ€ Some minor fixes and refinements

  • πŸŽ‰ Added JsonApiHelper.scala, a controller helper mix-in that adds useful JSON-related controller methods.


  • ↗️ Updated Play to 2.8.7.

  • ↗️ Updated libraries to be compatible with 2.8.x

  • ↗️ Filters updated

  • ↗️ Sticky footer: on screen bottom when there’s not enough space to fill the screen, or at the bottom of the content when the page is higher than the screen.

  • πŸ› 0 warning-ness achieved.

  • ↗️ Fixed layout issues with the Page Title Row component.

  • πŸŽ‰ Bootstrap 5! (beta-1, but Bootstrap5 nonetheless)

  • ↗️ Floating labels at the login page.

  • πŸ› Various improvements to the site structure.

  • ↗️ Improved signup screen - no "change password" tab.

  • ↗️ Support for ES6. Existing code upgraded.

  • ↗️ Stylesheet pre-processor changed from LESS to SASS.


  • ↗️ Targeting JDK11 (current Java LTS, also supported by GraalVM 20)

  • ↗️ Slick configuration moved to profile (from the deprecated driver).


  • πŸ› Fixed minor cosmetic issues with button classes

  • ↗️ Updated SBT to version 1.3.3.

  • πŸŽ‰ Moved to Scala 2.13

  • πŸŒ€ Refined the behavior of the prompt on the public index.

  • ↗️ Updated SBT to version 1.3.0.