Game: Never have I ever...

The game

Our game is called Ich habe noch nie, often abbreviated as IHNN, based on the drinking game Never Have I ever. It was created as part of the Software Engineering course at HAW Hamburg in the winter semester of 2022/23, where the focus was on the processes and methods of software development, not on a specific language. A project was to be developed, documented and presented as part of the examination.

It runs in the web browser, both on the PC and mobile. First, the players are created, then questions are displayed in the running game. These questions can be voted on once behind each player. Has this player already done what was asked - or not yet? At the end of the game, there is an overview of how often each player has voted yes and no.

The technical implementation

As a group, we proved here how much we know about different technologies, yet at the same time were interested in learning new ones. We developed the frontend in NodeJS/TypeScript/React, the backend gave way to a simple ExpressJS-based API and MongoDB as the database. Everything neatly delivered as Docker images and deployed to a server via a docker-compose.

Additionally, we wrote the documentation in LaTeX and had it built automatically as well. The same with the presentation, except that it was not written in LaTeX but in Markdown, with Marp as the presentation software.

The whole application is based on the state pattern, so each state (phase of the game) is linked to certain views, which are visible or invisible accordingly. The game thus progresses through the states until the end, where the user is free to end the game or play another round.

The result

Live Demo

As with the previous projects, a live demo was also build and published:

The server does not store anything. Everything runs locally, on the client. The API works and also saves submitted questions. However, the game score / current round score is gone when the page is reloaded.

Source Code

The Source Code is stored on github:


Preparing the match, entering a player, selecting a colour and confirming.
The game is running, a statement is written on the left, the players vote yes / no on the right.
End of the game, on the left is how often the players voted yes / no, on the right is a general vote distribution.