General

Python as general purpose scripting language

Writing all scripts that helps the developer. Eg, database importer/exporter, tools for building, deploying.

Backend

Language

Java 12

Java is well known, not only considering the current core team. It has certainly one of best tooling support. We assume it to be the most popular language for programming modern backend systems.
We decided to wanted to have Jigsaw in place, to start with a pretty modular system even, when staring with monolith. As we want to use the most recent version of Java, that has mature tooling support and works with other libraries/frameworks we want to use, we decided to use version 12 of Java.

Frameworks

Basic

Spring Boot

Decided for it’s popularity and it’s fast pathed way of setting up typical backend systems. It relies on the strong foundation of Spring for Dependency Injection and AOP, making it easy to implement enterprise grade systems.

Spring Security

To secure all endpoints

Spring Data Rest

To make the creation of HAL compliant REST endpoints a breeze.

Persistence

JPA

To map database entities into Java classes. The defacto standard in the Java world.

PostgreSQL

We assume this is the most advanced relational database, that also supports things like Json datatypes and has proven for years, it’s matureness.

Frontend

Language

JavaScript/HTML/CSS as the main language for the frontend.

We are not sure if we should use Typscript. But HTLM/CSS is out of question.

Frameworks

Spring WebMVC

Use for the server side rendering of page with the help of:

Thymeleaf

As the templating engine

React

Used to deal with user interaction rich parts of the site. For the current MVP, this will be the part were the user enters his profile.