Games Galaxy ist ein PHP-basierter Online-Shop für PC-Spiele. Das Projekt bildet typische Shop-Funktionen wie Spielekatalog, Suche, optionale erweiterte KI-Suche, Benutzerkonto, Wunschliste, Warenkorb, Checkout sowie eine Rollen- und Rechteverwaltung für administrative Bereiche ab.
- Projektziel
- Aktueller Status
- Demo
- Screenshots
- Features
- Tech-Stack
- Installation und lokaler Start
- Optionale erweiterte KI-Suche
- Nutzung
- Rollen und Rechte
- Tests
- Projektstruktur
- License
Ziel des Projekts ist die Umsetzung eines strukturierten Webshops für PC-Games mit klarer Navigation, responsivem Layout und rollen- sowie rechtebasierten Funktionen. Neben der Produktansicht stehen zentrale E-Commerce-Abläufe wie Registrierung, Login, Wunschliste, Warenkorb und Kaufabwicklung im Fokus.
Das Projekt ist ein lauffähiger Prototyp aus einem Hochschulkontext. Die Anwendung nutzt PHP, MySQL und eine einfache MVC-Struktur. Die Datenbankstruktur und Beispielinhalte liegen als SQL-Datei im Repository.
| Desktop | Mobil |
|---|---|
![]() |
![]() |
| Sitemap | Flussdiagramm | ER-Modell |
|---|---|---|
![]() |
![]() |
![]() |
- Spielekatalog mit Plattformbereichen für Steam, Battle.net und Epic Games
- Detailseiten für einzelne Spiele
- Suche nach Spielen
- Optionale erweiterte KI-Suche mit Elasticsearch, Embeddings und exakten Filtern für Preis, Genre, Plattform sowie Online- und Offline-Modus
- Registrierung und Login
- Profilbearbeitung
- Wunschliste
- Warenkorb und Checkout
- Kaufverlauf
- Rollen- und Rechteverwaltung über definierte Berechtigungen
- Verwaltungsfunktionen für Benutzer und Spiele abhängig von den zugewiesenen Rechten
- Kontakt-, FAQ-, Impressums- und Dokumentationsseiten
- Responsives Layout mit Desktop- und Mobilnavigation
- Frontend: HTML, CSS, JavaScript
- Backend: PHP 8.x
- Datenbank: MySQL 8.x
- Optionale Suche: Elasticsearch 8.x und Ollama für lokale Embeddings
- Webserver: Apache, zum Beispiel über XAMPP
- Architektur: MVC-orientierte Projektstruktur
- PHP 8.x
- MySQL 8.x oder MariaDB
- Apache mit aktiviertem
mod_rewrite - Lokale Entwicklungsumgebung wie XAMPP, MAMP oder eine vergleichbare PHP/MySQL-Installation
-
Repository in das lokale Webserver-Verzeichnis legen.
Beispiel für XAMPP unter Windows:
C:\xampp\htdocs\dwp_ws2324_rkt
-
Datenbank importieren.
SOURCE gamesgalaxy/GG_DBMS.sql;
Alternativ kann die Datei
gamesgalaxy/GG_DBMS.sqlüber phpMyAdmin importiert werden. -
Datenbankverbindung prüfen.
Die Verbindung ist in
gamesgalaxy/lib/DatabaseConnection.phpdefiniert und nutzt lokal standardmäßig:Host: localhost Datenbank: gg_dbms Benutzer: root Passwort: leerAlternativ können die Werte über Umgebungsvariablen gesetzt werden:
$env:GG_DB_HOST = "localhost" $env:GG_DB_NAME = "gg_dbms" $env:GG_DB_USER = "root" $env:GG_DB_PASSWORD = ""
-
Anwendung im Browser öffnen.
http://localhost/dwp_ws2324_rkt/gamesgalaxy/Startseite/Show
Die Standardsuche unter /Search/Show?q=... bleibt unverändert. Die erweiterte KI-Suche ist zusätzlich über den Header neben der normalen Suche und unter folgendem Pfad erreichbar:
http://localhost/dwp_ws2324_rkt/gamesgalaxy/AdvancedSearch/Show
Sie verarbeitet natürliche Anfragen wie:
Shooter unter 50 Euro, online und offline spielbar
Elasticsearch übernimmt Volltext-, Vektor- und Filtersuche. Preis, Genre, Plattform sowie Online- und Offline-Modus werden als exakte Filter behandelt. Die KI erzeugt kein SQL. Die Embeddings werden lokal über Ollama erzeugt, sodass kein externer Embedding-API-Key nötig ist. Optional kann ein lokales Ollama-Chatmodell natürliche Nutzeranfragen zuerst in ein festes JSON-Format mit Suchabsicht umformen. Wenn der Query-Interpreter nicht konfiguriert ist oder ausfällt, wird der technische Parser als Fallback genutzt. Wenn Elasticsearch oder Ollama für Embeddings nicht erreichbar ist, fällt die Anwendung automatisch auf die bestehende Standardsuche zurück.
Zugangsdaten werden über Umgebungsvariablen gesetzt und nicht im Repository gespeichert. Eine Vorlage liegt in .env.example.
Für lokale Embeddings muss Ollama laufen und ein Embedding-Modell lokal vorhanden sein:
ollama pull nomic-embed-textFür die optionale mehrsprachige Umformulierung natürlicher Anfragen wird zusätzlich ein lokales Chatmodell benötigt, zum Beispiel:
ollama pull llama3.2:3bElasticsearch kann lokal über Docker Compose gestartet werden:
docker compose up -d elasticsearch$env:GG_ELASTICSEARCH_URL = "http://localhost:9200"
$env:GG_ELASTICSEARCH_INDEX = "games_galaxy_games"
$env:GG_ELASTICSEARCH_USERNAME = ""
$env:GG_ELASTICSEARCH_PASSWORD = ""
$env:GG_ELASTICSEARCH_API_KEY = ""
$env:GG_EMBEDDING_PROVIDER = "ollama"
$env:GG_EMBEDDING_ENDPOINT = "http://localhost:11434/api/embed"
$env:GG_EMBEDDING_MODEL = "nomic-embed-text"
$env:GG_EMBEDDING_DIMENSIONS = "0"
$env:GG_QUERY_INTERPRETER_ENABLED = "1"
$env:GG_QUERY_INTERPRETER_ENDPOINT = "http://localhost:11434/api/chat"
$env:GG_QUERY_INTERPRETER_MODEL = "llama3.2:3b"
$env:GG_QUERY_INTERPRETER_TIMEOUT = "15"
$env:GG_ADVANCED_SEARCH_INDEX_TOKEN = "<lokales-token>"Nach dem Datenbankimport und gesetzter Konfiguration kann der Elasticsearch-Index erzeugt werden:
http://localhost/dwp_ws2324_rkt/gamesgalaxy/AdvancedSearch/Index?token=<lokales-token>
Die Indexierung liest die Spiele aus MySQL, erzeugt lokale Ollama-Embeddings und schreibt die Dokumente mit Vektorfeld in Elasticsearch. Wenn bereits ein Index ohne Vektorfeld existiert, kann er mit reset=1 neu aufgebaut werden:
http://localhost/dwp_ws2324_rkt/gamesgalaxy/AdvancedSearch/Index?token=<lokales-token>&reset=1
Die Anwendung wird über die Navigation bedient. Besucher können Spiele durchsuchen und Detailseiten ansehen. Registrierte Benutzer können zusätzlich Wunschliste, Warenkorb, Checkout und Kaufverlauf nutzen. Benutzer mit erweiterten Rechten erhalten Zugriff auf geschützte Verwaltungsfunktionen für Spiele und Benutzer.
Nach dem Import der SQL-Datei stehen zwei Beispielkonten zur Verfügung, mit denen sich die Rechteverwaltung direkt testen lässt:
Admin Usermitadmin@example.com/adminpassRegular Usermituser@example.com/userpass
Die Rechte werden in der Tabelle user_authority verwaltet. Dort sind einzelne Berechtigungen wie create_user, change_user, delete_user, create_game, change_game und delete_game hinterlegt.
Dadurch sind Verwaltungsbereiche nicht nur über den Login geschützt, sondern zusätzlich an konkrete Berechtigungen gebunden. Der Admin-Testnutzer besitzt Vollzugriff auf Benutzer- und Spieleverwaltung. Der zweite Testnutzer deckt einen eingeschränkten Rechtefall ab und kann damit vom vollständigen Administrationszugriff unterschieden werden.
Automatisierte Tests für die optionale erweiterte Suche können lokal mit dem PHP-Binary aus XAMPP ausgeführt werden:
C:\xampp\php\php.exe tests\AdvancedSearchTest.phpDie Tests prüfen Parser, exakte Filter, Fehlerfälle und den Rückfall auf die Standardsuche. Zusätzlich sollten die wichtigsten Funktionen nach Änderungen manuell geprüft werden:
- Startseite und Navigation
- Registrierung und Login
- Suche und Spielefilter
- Wunschliste
- Warenkorb und Checkout
- Admin-Funktionen
- Responsives Verhalten auf Desktop und Mobilgeräten
.
├── docs/
│ └── screenshots/
├── gamesgalaxy/
│ ├── controller/
│ ├── images/
│ ├── js/
│ ├── lib/
│ ├── model/
│ ├── static/
│ ├── view/
│ ├── GG_DBMS.sql
│ └── index.php
├── tests/
├── .env.example
├── .htaccess
└── README.md
Copyright (c) 2026 Mohammad Taiba. All rights reserved.
This project is published for portfolio and review purposes only. See LICENSE.





