diff --git a/.gitignore b/.gitignore
index a10e83c2a45be2070755f5a17513cdc6c1a3a491..b2bdb7eecfcb6bdbde6b345dec34c9f24ced602c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,5 +2,6 @@
 /settings.json
 /pageSettings.json
 /pageSettings_backup.json
+/boardGames.json
 .idea/
 /*.ics
diff --git a/src/logic/tile/tiles/BoardGameTile.html b/src/logic/tile/tiles/BoardGameTile.html
new file mode 100644
index 0000000000000000000000000000000000000000..b7dffae72edac02e7fe7f8d4316ac39f46d30e31
--- /dev/null
+++ b/src/logic/tile/tiles/BoardGameTile.html
@@ -0,0 +1,99 @@
+<style>
+    .boardGameTile {
+        background-color: #2F2F2F;
+        font-size: 2.5vmin;
+        border-radius: 1vh;
+        font-weight: bold;
+        flex-direction: row;
+    }
+
+    .boardGameTile .content {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        width: 85%;
+        height: 85%;
+        text-align: center;
+    }
+
+    .boardGameTile .centered {
+        text-align: center;
+    }
+
+    .boardGameTile .text-left {
+        text-align: left;
+    }
+
+    .boardGameTile td {
+        padding: 0 4vmin;
+        vertical-align: top;
+    }
+
+    .boardGameTile .headline {
+        font-size: 3.5vmin;
+        padding-bottom: 2vmin;
+    }
+
+    .boardGameTile .small {
+        font-size: 2vmin;
+    }
+
+    .boardGameTile .randomGame {
+        border: 0.4vmin solid white;
+        border-radius: 1vmin;
+        padding: 2vmin
+    }
+</style>
+
+<div class="boardGameTile">
+    <div class="content">
+        <table>
+            <tr>
+                <td class="centered headline">
+                    Spiele
+                    <div class="small">max. 2 Spieler</div>
+                </td>
+                <td class="centered headline">
+                    Spiele
+                    <div class="small">min. 3 Spieler</div>
+                </td>
+                <td class="centered headline">
+                    Spiele
+                    <div class="small">&gt; 2 Spieler</div>
+                </td>
+                <td class="headline">
+                    Spielvorschlag
+                    <div class="small">(Klicken für neuen Vorschlag)</td>
+            </tr>
+            <tr>
+                <td>
+                    <ul class="text-left">
+                        {% for game in gamesForTwo %}
+                            <li>{{ game.name }}</li>
+                        {% endfor %}
+                    </ul>
+                </td>
+                <td>
+                    <ul class="text-left">
+                        {% for game in gamesAtLeastThree %}
+                            <li>{{ game.name }}</li>
+                        {% endfor %}
+                    </ul>
+                </td>
+                <td>
+                    <ul class="text-left">
+                        {% for game in gamesForThreeOrMore %}
+                            <li>{{ game.name }}</li>
+                        {% endfor %}
+                    </ul>
+                </td>
+                <td>
+                    <div class="randomGame">
+                        <div>{{ randomGame.name }}</div>
+                        <div class="small">{{ randomGame.minPlayers }} - {{ randomGame.maxPlayers }} Spieler</div>
+                    </div>
+                </td>
+            </tr>
+        </table>
+    </div>
+</div>
diff --git a/src/logic/tile/tiles/BoardGameTile.py b/src/logic/tile/tiles/BoardGameTile.py
new file mode 100644
index 0000000000000000000000000000000000000000..ad2fa984104a9af696727d12e45a2798a39f1871
--- /dev/null
+++ b/src/logic/tile/tiles/BoardGameTile.py
@@ -0,0 +1,61 @@
+import os
+import random
+from typing import Dict
+
+from flask import Blueprint
+
+from logic.service.ServiceManager import ServiceManager
+from logic.tile.Tile import Tile
+
+
+class BoardGameTile(Tile):
+    EXAMPLE_SETTINGS_FILE = {
+        "games": [
+            {
+                "name": "Carcassonne",
+                "minPlayers": 2,
+                "maxPlayers": 6
+            }
+        ]
+    }
+
+    EXAMPLE_SETTINGS = {
+        "path": "path/to/my/games.json"
+    }
+
+    def __init__(self, uniqueName: str, settings: Dict, intervalInSeconds: int):
+        super().__init__(uniqueName, settings, intervalInSeconds)
+        self._previousRandomGame = None
+
+    def fetch(self, pageName: str) -> Dict:
+        jsonService = ServiceManager.get_instance().get_service_by_type_name('JsonService')
+
+        cacheKey = f'{pageName}_{self._uniqueName}_{self._settings["path"]}'
+        games = jsonService.get_data(cacheKey, self._intervalInSeconds, self._settings)['data']['games']
+        games = sorted(games, key=lambda game: game['name'])
+
+        gamesForTwo = [game for game in games if game['maxPlayers'] == 2 and game['minPlayers'] == 2]
+        gamesAtLeastThree = [game for game in games if game['minPlayers'] >= 3]
+        gamesForThreeOrMore = [game for game in games if game['maxPlayers'] > 2]
+
+        randomGame = random.choice(games)
+        while randomGame == self._previousRandomGame:
+            randomGame = random.choice(games)
+        self._previousRandomGame = randomGame
+
+        return {
+            'gamesForTwo': gamesForTwo,
+            'gamesAtLeastThree': gamesAtLeastThree,
+            'gamesForThreeOrMore': gamesForThreeOrMore,
+            'randomGame': randomGame
+        }
+
+    def render(self, data: Dict) -> str:
+        return Tile.render_template(os.path.dirname(__file__), __class__.__name__,
+                                    gamesForTwo=data['gamesForTwo'],
+                                    gamesAtLeastThree=data['gamesAtLeastThree'],
+                                    gamesForThreeOrMore=data['gamesForThreeOrMore'],
+                                    randomGame=data['randomGame'])
+
+    def construct_blueprint(self, pageName: str, *args, **kwargs):
+        return Blueprint(f'{pageName}_{__class__.__name__}_{self.get_uniqueName()}', __name__)