Skip to content

jstanislawczyk/Reservly

Repository files navigation

Reservly

Reservly is a tool for reserving game match queue

Backend technology stack

  • Scala
  • Play Framework 2
  • Slick
  • PostgreSQL
  • Swagger
  • Websockets (Akka actors)
  • Asana (Workflow planning)

Frontend

Frontend repository available here

obraz

How to run

Database

  • Install PostgreSQL
  • Create database
    • Port: default
    • Database name: reservly
    • User: postgres
    • Password: root
  • Database config can be changed in application.conf file

IntelliJ

  • Install JDK11 (openJDK)
  • Install scala support for IntelliJ
  • Import project to IntelliJ (as SBT project)
  • In IntelliJ: Edit Configurations -> Add New Configuration -> Play
  • Use default config (with http://localhost:80)
  • Run project with created config

Swagger docs

  • Swagger docs available at localhost:80/docs/
  • Secured endpoints requests need to contain Auth-Id header with existing user id

Models

Player

{ 
  "id": "1s4F",                       //[String: without whitespaces]
  "displayName": "John Smith",        //[String: size -> 2 to 100 letters]
  "email": "some@email.com",          //[String: valid email]
  "photoUrl": "www.test.com/1"        //[String: size -> 2 to 300 letters]
}

Match

{ 
  "id": "1",                           //[Long: autogenerated]
  "startDate": "2019-01-23T06:00",     //[java.sql.Timestamp: start date must be before end date]
  "endDate": "2019-01-23T06:15",       //[java.sql.Timestamp: end date must be after start date]
  "gameName": "FIFA",                  //[String: size -> 2 to 70 letters]
  "playerId": "1"                      //[String: existing player id]
}

GlobalChatMessage

{ 
  "playerId": "11",             //[String]
  "message": "Some message"     //[String: size -> 2 to 250 letters]
}

DirectChatMessage

{ 
  "id": "11",                    //[Long]
  "charRoomId": "id2_id1",       //[String: created using alphabetical ordered identifiers players in the conversation, spearated by _]
  "receiverId": "id2",           //[String: existing player id]
  "senderId": "id2",             //[String: existing player id]
  "message": "Test test",                          //[String: size -> 2 to 250 letters]
  "messageSendDate": "2019-01-01T07:00:00"         //[java.sql.Timestamp]
}

ResponseMessage

{ 
  "httpCode": "404",             //[String: one of http codes]
  "message": "Not found"         //[String]
}