PSPS

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

Overview

What is this?

PSPS is a seed project for websites that have user accounts, a public side, and database connectivity. It is targeted at small-to-medium sites, that can use a single main monolith part. 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.

Why

Play framework is a very powerful, and a very non-opinionated, web platform. It’s a pleasure to use, but we found ourselves implementing standard functionality over and over again. Thus, we decided to just write it once, properly (we hope) and then fork when needed.

Demo

Why not Sub-Class Play?

Sure, that’s the textbook way of doing it. But it’s impractical, especially as Play goes through an evolution of its own (and a non-backward-compatible one, too). Additionally, Play is large enough to have a non-trivial learning curve. Which is added to Scala’s non-trivial learning curve. That’s enough curves.

Who

CodeWorth.io (as in: “us”) is a software studio that creates custom software systems. We specialize in complex systems (such as scientific software) or systems that have positive impact (or both). When we develop web systems, and are free to choose a technology stack, we tend to use Play+Scala.

PSPS is a consolidation of the knowledge and practices we’ve accumulated over the last few years, doing numerous web sites (plus some we can’t list here yet).

How

PSPS uses the following technologies:

To use PSPS

Just fork it, and change the code as needed (that’s how you use a seed project, right?). If you can think of improvements, please send us a pull request!

What does PSPS have, out of its proverbial box?

  • User accounts (including “forgot password” and “invite user” flows, profile editing page, and logged-in only sections. Users can log on using their username. or email. Database constraints prevent duplicate entries of both emails and usernames.)

  • Logged-in Template (complete with user account, logout button, etc.)

  • Localization support using standard Play localization.

  • Javascript utilities.

  • Convenience methods for template rendering.

  • Template for social media page metadata.

  • And more — see the sections to the left.