Skip to content

sopra-fs23-group-10/sopra-fs23-group-10-server

Repository files navigation

Deploy Project to App Engine Lombok Spring Boot Spring WebSocket PostgreSQL

Table of Content

Introduction

Brain Busters is a trivia game designed to entertain and educate players on a wide range of topics, from history and geography to pop culture and sports. It provides a solution to the problem of limited entertainment and educational options for people seeking to learn, have fun, connect with others, and maybe even discover new interests.

The game stands out for its various game modes. The classic trivia game offers a traditional style of gameplay, while the image mode gradually reveals blurry pictures. Both modes challenge players on quick decision-making. The facts are accessed and updated using an API, keeping the game up-to-date and accurate.

Next to the single mode, the tournament mode adds an exciting element of competition, allowing players to participate in a bracket-style tournament, creating a more dynamic and engaging experience, as players can track their progress and compete for the ultimate title of Brain Busters champion.

Built With

  • React - Front-end JavaScript library
  • Spring - Framework that enables running JVM
  • Gradle - Build automation tool
  • STOMP - Bidirectional real time communication
  • The Trivia API - REAST API for retreiving text questions
  • Mailjet API - REST API for sending mails
  • PostgreSQL - Persistent Open Source DB

Main Components

User

The User entity is a core part of BrainBuster, since else in order to participate in a game one has to be able to log in, log out and getting their achieved points. Additionally, an important factor is that one gets recognized and is able to keep the points in their game und thus being able to compare their rank/effort with other users.

UserController

The UserController handles requests from the front-end regarding users and fulfills their requests.

Game

The Game entity is a crucial part of BainBusters since without a game the users would not be able to play and obtain their points. Nor being able to retrieve the appropriate questions.

GameController

The GameController responds to requests from the front-end regarding Games and fulfills their requests.

Websockets

The Websockets enables to directly inform the client from the server.

Deploy Locally with Gradle

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Clone Repository

Clone the client-repository onto your local machine with the help of Git.

git clone https://github.com/sopra-fs23-group-10/sopra-fs23-group-10-server.git

Build

./gradlew build

Run

Server should be up and running on localhost:8080 with a non-persistent H2-DB.

./gradlew bootRun -DSPRING_PROFILES_ACTIVE=test

Test

./gradlew test

Deployment

  • the main branch is automatically mirrored onto Google Cloud App Engine via GitHub workflow
  • Google SQL PostgreSQL instance is hosted on Google Cloud
  • Credentials for Google App Engine and SQL instances are replaced with GitHub Secrets

Create Releases

Roadmap

Features that new developers who want to contribute to our project could add.

  • new game modes, e.g. a music quiz
  • convert to iOS & Android native app
  • increase responsiveness for mobile browsers
  • add new records to our image database

Authors & Acknowledgments

Authors

Acknowledgments

We would like to thank our tutor jemaie and the whole team of the course Software Engineering Lab from the University of Zurich.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.