Skip to content

codeworth-gh/PSPS

Repository files navigation

PSPS

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

Overview

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

2021-06

  • ↗️ 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

2021-02

  • 🌀 Some minor fixes and refinements

  • 🎉 Added JsonApiHelper.scala, a controller helper mix-in that adds useful JSON-related controller methods.

2021-01

  • ↗️ 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.

2020-08

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

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

2019-10

  • 🐛 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.