From 40b14747fca83cc272a755c4baeecf7eb0960453 Mon Sep 17 00:00:00 2001 From: Jan-Marlon Leibl Date: Thu, 5 Jun 2025 10:02:45 +0200 Subject: [PATCH] docs: Update project documentation and titles --- docs/projektdokumentation.tex | 81 +++++++++++++++++------------------ 1 file changed, 39 insertions(+), 42 deletions(-) diff --git a/docs/projektdokumentation.tex b/docs/projektdokumentation.tex index 2e82518..37b95cb 100644 --- a/docs/projektdokumentation.tex +++ b/docs/projektdokumentation.tex @@ -80,9 +80,9 @@ \centering \vspace*{2cm} - {\Huge\bfseries Casino Gaming Platform\par} + {\Huge\bfseries Trustworthy Casino\par} \vspace{1.5cm} - {\Large\itshape Projektdokumentation für die IHK-Abschlussprüfung\par} + {\Large\itshape Projektdokumentation für das Mittelstufenprojekt\par} \vspace{2cm} {\large\bfseries Fachinformatiker für Anwendungsentwicklung\par} @@ -90,12 +90,10 @@ {\large \begin{tabular}{ll} - \textbf{Prüfling:} & [Name des Prüflings] \\ - \textbf{Prüflingsnummer:} & [Prüflingsnummer] \\ \textbf{Ausbildungsbetrieb:} & Hitec GmbH \\ - \textbf{Projektbetreuer:} & [Betreuer] \\ - \textbf{Projektdauer:} & 70 Stunden \\ - \textbf{Abgabedatum:} & \today \\ + \textbf{Projektbetreuer:} & Herr Heidemann / Frau Deeken \\ + \textbf{Projektdauer:} & 10 Wochen \\ + \textbf{Abgabedatum:} & 12.06.2025 \\ \end{tabular} \par} @@ -112,17 +110,16 @@ \chapter{Beschreibung} \section{Umfeld} -Das Projekt wurde im Rahmen der Abschlussprüfung zum Fachinformatiker für Anwendungsentwicklung bei der Hitec GmbH entwickelt. +Das Projekt wurde im Rahmen des Mittelstufenprojektes entwickelt. \subsection{Produktportfolio der Hitec GmbH} -Die Hitec GmbH ist ein innovatives IT-Unternehmen, das sich auf die Entwicklung moderner Webanwendungen und digitaler Lösungen spezialisiert hat. Das Unternehmen deckt ein breites Spektrum an Technologien ab, von klassischen Enterprise-Anwendungen bis hin zu modernen Cloud-nativen Lösungen. +Die Hitec GmbH ist ein innovatives IT-Unternehmen, das sich auf die Entwicklung moderner Webanwendungen und digitaler Lösungen spezialisiert hat. Das Unternehmen deckt ein breites Spektrum an Technologien ab. \subsection{Weg zur Produktidee} Die Casino Gaming Platform entstand als LF08 Projekt mit dem Ziel, eine vollständige Online-Casino-Plattform zu entwickeln. Die Produktidee basiert auf: \begin{itemize} \item \textbf{Gamification-Trend:} Wachsende Nachfrage nach Online-Gaming-Plattformen - \item \textbf{Technologie-Demonstration:} Showcase moderner Full-Stack-Entwicklung (Angular 20 + Spring Boot 3.5) \item \textbf{Bildungsziel:} Praktische Anwendung von Enterprise-Patterns und modernen Web-Technologien \item \textbf{Marktforschung:} Integration aktueller Standards (OAuth2, Stripe, responsive Design) \end{itemize} @@ -185,14 +182,14 @@ Detaillierte Beschreibung des Problems oder der Marktlücke, welche unser Produk \chapter{Durchführung} \section{Vorgehensweise} -Für die Projektdurchführung wurde Scrum als Vorgehensmodell gewählt. Dadurch wird am Anfang des Projektes und eines Sprints festgelegt, was gemacht werden soll, und jeder ist auf dem gleichen Wissensstand. Des Weiteren gibt es tägliche Updates vom Fortschritt, Probleme können schnell erkannt und angesprochen werden. Dazu kann man auch neue Anforderungen flexibel mit einbringen. +Für die Projektdurchführung wurde Scrum als Vorgehensmodell gewählt bzw. vorgeschrieben. Dadurch wird am Anfang des Projektes und eines Sprints festgelegt, was gemacht werden soll, und jeder ist auf dem gleichen Wissensstand. Des Weiteren gibt es tägliche Updates vom Fortschritt, Probleme können schnell erkannt und angesprochen werden. Dazu kann man auch neue Anforderungen flexibel mit einbringen. \subsection{Verwendete Tools und Methoden} \begin{itemize} \item \textbf{Scrum:} Agile Projektmanagement-Methodik \item \textbf{Jira:} Ticketing und Sprint-Planning \item \textbf{Git:} Versionskontrolle mit Feature-Branch-Workflow - \item \textbf{CI/CD:} Automatisierte Build- und Deployment-Pipelines + \item \textbf{CI/CD:} Automatisierte Build- und Deployment-Pipelines welche gleichzeitig auch die Qualitätssicherung übernimmt \end{itemize} \section{Umsetzung} @@ -325,13 +322,13 @@ Das Container-Diagramm zeigt die High-Level-Architektur der Software und stellt \node[webapp] (person) at (-10, 5) {\textbf{Casino-Spieler}\\Person\\Nutzt Webbrowser\\oder Mobile App}; % Frontend-Container -\node[webapp] (frontend) at (-5, 1) {\textbf{Webanwendung}\\Angular 20, TypeScript\\Liefert statische Inhalte\\und Casino-Spiele-UI}; +\node[webapp] (frontend) at (-10, 1) {\textbf{Webanwendung}\\Angular 20, TypeScript\\Liefert statische Inhalte\\und Casino-Spiele-UI}; % Backend-Container -\node[api] (backend) at (2, 1) {\textbf{API-Anwendung}\\Spring Boot, Java\\Stellt Spiellogik,\\Benutzerverwaltung und\\Geschäftsregeln bereit}; +\node[api] (backend) at (0, 1) {\textbf{API-Anwendung}\\Spring Boot, Java\\Stellt Spiellogik,\\Benutzerverwaltung und\\Geschäftsregeln bereit}; % Datenbank -\node[database] (database) at (2, -4) {\textbf{Datenbank}\\PostgreSQL\\Speichert Benutzerkonten,\\Spielhistorie und\\Transaktionen}; +\node[database] (database) at (0, -4) {\textbf{Datenbank}\\PostgreSQL\\Speichert Benutzerkonten,\\Spielhistorie und\\Transaktionen}; % Externe Systeme \node[external] (stripe) at (9, 4) {\textbf{Stripe API}\\Zahlungssystem}; @@ -339,11 +336,11 @@ Das Container-Diagramm zeigt die High-Level-Architektur der Software und stellt \node[external] (oauth) at (9, -2) {\textbf{OAuth-Provider}\\Authentifizierungsdienste}; % Beziehungen -\draw (person) -- (frontend) node[midway, above] {HTTPS}; +\draw (person) -- (frontend) node[midway, right] {HTTPS}; \draw (frontend) -- (backend) node[midway, above] {REST API\\JSON/HTTPS}; -\draw (backend) -- (database) node[midway, right] {JDBC\\SQL}; +\draw (backend) -- (database) node[midway, left] {JDBC\\SQL}; \draw (backend) -- (stripe) node[midway, above] {HTTPS\\Webhooks}; -\draw (backend) -- (email) node[midway, right] {SMTP}; +\draw (backend) -- (email) node[midway, above] {SMTP}; \draw (backend) -- (oauth) node[midway, below] {OAuth2\\HTTPS}; \end{tikzpicture} @@ -381,7 +378,7 @@ Das Komponenten-Diagramm zeigt die interne Struktur des Backend API-Containers u \node[repository] (transaction-repo) at (4.5, 0) {\textbf{Transaktions-Repo}\\JPA/Hibernate}; % Sicherheitskomponenten -\node[component] (security) at (-11, 2.5) {\textbf{Security Config}\\JWT-Filter,\\CORS, OAuth2}; +\node[component] (security) at (-13, 2.5) {\textbf{Security Config}\\JWT-Filter,\\CORS, OAuth2}; % Relationships \draw (auth-ctrl) -- (auth-svc); @@ -415,14 +412,14 @@ Das Code-Diagramm zeigt exemplarisch die Implementierungsdetails des Blackjack G \node[interface] (game-interface) at (0, 6) {\textbf{<>}\\GameService\\+spielStarten()\\+zugVerarbeiten()\\+ergebnisBerechnen()}; % Haupt-Service-Klasse -\node[class] (blackjack-service) at (0, 2) {\textbf{BlackjackService}\\implementiert GameService\\- kartendeck: Deck\\- spielRepository: Repository\\+ neuesSpielStarten(einsatz)\\+ ziehen(spielId)\\+ halten(spielId)\\+ verdoppeln(spielId)}; +\node[class] (blackjack-service) at (0, 1) {\textbf{BlackjackService}\\implementiert GameService\\- kartendeck: Deck\\- spielRepository: Repository\\+ neuesSpielStarten(einsatz)\\+ ziehen(spielId)\\+ halten(spielId)\\+ verdoppeln(spielId)}; % Unterstützende Klassen - mit größerem Abstand -\node[class] (card-deck) at (-7, 2) {\textbf{Kartendeck}\\- karten: List\\+ mischen()\\+ karteGeben()\\+ zurücksetzen()}; +\node[class] (card-deck) at (-8, 1) {\textbf{Kartendeck}\\- karten: List\\+ mischen()\\+ karteGeben()\\+ zurücksetzen()}; -\node[class] (game-entity) at (7, 2) {\textbf{BlackjackSpielEntity}\\- id: Long\\- spielerKarten: List\\- dealerKarten: List\\- einsatzBetrag: BigDecimal\\- spielZustand: SpielZustand}; +\node[class] (game-entity) at (8, 1) {\textbf{BlackjackSpielEntity}\\- id: Long\\- spielerKarten: List\\- dealerKarten: List\\- einsatzBetrag: BigDecimal\\- spielZustand: SpielZustand}; -\node[class] (balance-service) at (0, -2.5) {\textbf{GuthabenService}\\+ guthabenAktualisieren()\\+ ausreichendGuthaben()\\+ transaktionErstellen()}; +\node[class] (balance-service) at (0, -3.5) {\textbf{GuthabenService}\\+ guthabenAktualisieren()\\+ ausreichendGuthaben()\\+ transaktionErstellen()}; % Beziehungen \draw (blackjack-service) -- (game-interface) node[midway, right] {implementiert}; @@ -449,11 +446,11 @@ Das Deployment-Diagramm zeigt die Verteilung der Software-Container auf die phys \node[node] (docker-host) at (0, 0) {\textbf{Docker-Host}\\Ubuntu Linux\\Docker Engine 24.x}; % Container innerhalb des Docker-Hosts - mit mehr Abstand -\node[container] (nginx) at (-5, 3.5) {\textbf{nginx}\\Webserver\\Port 80/443}; +\node[container] (nginx) at (-7, 3.5) {\textbf{nginx}\\Webserver\\Port 80/443}; \node[container] (angular) at (-2, 3.5) {\textbf{Frontend}\\Angular-App\\Statische Dateien}; \node[container] (spring) at (2, 3.5) {\textbf{Backend}\\Spring Boot\\Port 8080}; -\node[container] (postgres) at (5, 3.5) {\textbf{Datenbank}\\PostgreSQL\\Port 5432}; -\node[container] (mailpit) at (0, -3.5) {\textbf{Mailpit}\\E-Mail-Service\\Port 1025/8025}; +\node[container] (postgres) at (7, 3.5) {\textbf{Datenbank}\\PostgreSQL\\Port 5432}; +\node[container] (mailpit) at (2, -3.5) {\textbf{Mailpit}\\E-Mail-Service\\Port 1025/8025}; % Externe Dienste - mit mehr Abstand \node[node] (cloud) at (9, 0) {\textbf{Cloud-Dienste}\\Stripe API\\OAuth-Provider}; @@ -522,25 +519,25 @@ Das Komponenten-Diagramm zeigt die interne Struktur der Angular Frontend-Anwendu ->, >=Stealth, node distance=3.5cm, thick ] -% Kern-Module - kompaktere Anordnung -\node[module] (app) at (0, 5) {\textbf{App-Modul}\\Haupt-Modul\\mit Routing}; -\node[module] (shared) at (-6, 3) {\textbf{Shared-Modul}\\Gemeinsame Komponenten\\Navbar, Footer}; +% Kern-Module +\node[module] (app) at (4, 6) {\textbf{App}\\Haupt-Modul}; +\node[module] (shared) at (-6, 2) {\textbf{Shared}\\Gemeinsame Komponenten}; -% Feature-Module - dichter angeordnet -\node[module] (auth) at (-3, 3) {\textbf{Auth-Modul}\\Anmeldung, Registrierung\\OAuth2, Wiederherstellung}; -\node[module] (games) at (0, 3) {\textbf{Spiele-Modul}\\Blackjack, Slots\\Würfel, Coinflip}; -\node[module] (deposit) at (3, 3) {\textbf{Einzahlungs-Modul}\\Zahlungsintegration\\Stripe}; -\node[module] (home) at (6, 3) {\textbf{Home-Modul}\\Dashboard\\Benutzerprofil}; +% Feature-Module +\node[module] (auth) at (-1, 2) {\textbf{Auth}\\Anmeldung, OAuth2}; +\node[module] (games) at (3.75, 2) {\textbf{Spiele}\\Blackjack, Slots, Würfel}; +\node[module] (deposit) at (8.25, 2) {\textbf{Einzahlung}\\Stripe}; +\node[module] (home) at (12.25, 2){\textbf{Home}\\Dashboard}; -% Service-Schicht - kompakter -\node[service] (auth-svc) at (-4.5, 0.5) {\textbf{Auth Service}\\JWT-Verwaltung\\Benutzerstatus}; -\node[service] (user-svc) at (-1.5, 0.5) {\textbf{User Service}\\Profilverwaltung\\Guthaben-Updates}; -\node[service] (game-svc) at (1.5, 0.5) {\textbf{Spiele-Services}\\API-Kommunikation\\Spiellogik}; -\node[service] (payment-svc) at (4.5, 0.5) {\textbf{Payment Service}\\Stripe-Integration\\Einzahlungen}; +% Services +\node[service] (auth-svc) at (-1, -1.5) {\textbf{Auth}\\JWT, Benutzerstatus}; +\node[service] (user-svc) at (12.25, -1.5) {\textbf{User}\\Profil, Guthaben}; +\node[service] (game-svc) at (3.75, -1.5) {\textbf{Spiele}\\API, Logik}; +\node[service] (payment-svc) at (8.25, -1.5) {\textbf{Payment}\\Stripe}; -% Guards und Interceptors - kompakter -\node[guard] (auth-guard) at (-1.5, -1.5) {\textbf{Auth Guard}\\Routen-Schutz}; -\node[guard] (http-interceptor) at (1.5, -1.5) {\textbf{HTTP Interceptor}\\JWT-Injection\\CORS-Headers}; +% Guards +\node[guard] (auth-guard) at (-1.5, -4.5) {\textbf{Auth}\\Routen-Schutz}; +\node[guard] (http-interceptor) at (2, -4.5) {\textbf{HTTP}\\JWT, CORS}; % Relationships \draw (app) -- (shared);