Dota-Hobby-Leauge-Manager-Backend

Spring Boot Kotlin with a PostgreSQL database.

Description

The application fetches game data from the https://steamcommunity.com/dev?. Then the application saves the data after some additional calculations on the database and via my own API I can return the data filtered and sorted. In the process I mainly use custom query and predetermined methods from the curd repository interface.

Tech-Stack

Spring Boot, Kotlin, Gradle, PostgreSQL, JPA, Hibernate, Spring Security, JWT, Jackson, Guava

  • Spring Boot

    I use Spring Boot as Framework because I am highly familiar with the Java ecosystem and Spring supports Kotlin aswell.

  • Kotlin

    In the course of this project I wanted to learn Kotlin. Kotlin is a statically typed modern programming language that can run side by side with Java while being easier to write and highly popular on github trends what caught my attention. After some time I noticed how comfortable it is to write code because the syntax is thought through well and it feels like a better version of Java.

  • Gradle

    Gradle is a build automation tool that is an open-source and builds based on the concepts of Apache Maven and Apache Ant. I chose Gradle over Maven beacuse in my opinion it is far more convenient and recommanded for Spring Boot applications with Kotlin.

  • PostgreSQL

    I started this project primarily because I had an university course last semester about databases especially PostgreSQL.

  • JPA and Hibernate

    I use JPA and Hibernate as my object-relational mapping tools. JPA and Hibernate main task is to create the tables in my database from the @Entity objects, create the connection between my programm and the datebase via simple crudrepositories and handels custom queries.

  • Spring Security

    It is more or less the standard for securing Spring-based applications. Although most of my endpoints are freely accessible there are some points (login) I have to protect.

  • JWT

    For authentication and authorization purposes I use Auth0 JWT concept. JSON Web Token is a proposed Internet standard for creating data with optional signature and/or optional encryption whose payload holds JSON that asserts some number of claims. The tokens are signed either using a private secret or a public/private key. First I am fascinated by the technology behind JWT and secound its fits perfect for my use cases.

  • Jackson

    This is my favourite library in terms of data-processing for JSON-strings. In this project I need Jackson to deserialize the response from the steamApi {sample}. The response contains the complete data about a single match i.e. who won the game and a list of players.

Deploy

At the moment I host the backend at https://www.heroku.com/ mainly for test purposes. Heroku offers a free trial for hobby developer where you can host a small project w ith a PostgreSQL database. (http://dotainhousebackend.herokuapp.com/)

Next Steps

  • implement Spring Boot Actuator for status monitoring

  • split the application into microservices

GitHub

View Github