Projekt einer Modularbeit für Softwareengineering 2.
This repository has been archived on 2026-03-16. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • TypeScript 61.9%
  • Kotlin 35.5%
  • CSS 1.9%
  • Dockerfile 0.4%
  • HTML 0.3%
Find a file
2025-07-28 11:54:51 +02:00
.run Frontend and Compound Run Configuration 2025-04-07 23:07:02 +02:00
Bruno-Request-Config delete address 2025-07-23 21:16:36 +02:00
frontend Fix reload 2025-07-28 10:47:40 +02:00
gradle/wrapper Initial Commit 2025-03-26 17:26:38 +01:00
Lastenheft, Funktionstest ,MPM & Projekt Plan Pflichtenheft austausschen 2025-07-23 11:35:53 +02:00
src remove testcontroller 2025-07-28 11:54:51 +02:00
.gitattributes Initial Commit 2025-03-26 17:26:38 +01:00
.gitignore remove flyway 2025-07-20 17:59:07 +02:00
.gitlab-ci.yml update readme und compose file 2025-07-25 18:19:45 +02:00
build.gradle.kts remove flyway 2025-07-20 17:59:07 +02:00
compose.yml update readme und compose file 2025-07-25 18:19:45 +02:00
compose_db_dev.yml address on registration 2025-07-25 21:20:39 +02:00
Dockerfile dockerfile 2025-07-09 17:09:57 +02:00
dump.pg.sql readme 2025-07-25 21:45:34 +02:00
dump.sql addition price 2025-07-23 21:40:50 +02:00
gradlew Initial Commit 2025-03-26 17:26:38 +01:00
gradlew.bat Initial Commit 2025-03-26 17:26:38 +01:00
Lastenheft, NPM & Projekt Plan Update 2 files 2025-06-09 16:42:39 +02:00
README.md readme 2025-07-25 21:45:34 +02:00
seed.sql address on registration 2025-07-25 21:20:39 +02:00
settings.gradle.kts frontend gradle 2025-03-28 18:48:22 +01:00

SWE2 Hotelbuchungssystem

Setup

Einfaches Setup

Hier initialisiert Spring die Datenbank automatisch, erstellt also alle notwendigen Tabellen selbst. Hier müssen nur noch die Zimmer geseedet werden. Das folgende Skript ist ausreichend, damit die Anwendung läuft

docker compose -f compose.yml up -d
# Warten, bis sie gestartet sind
sleep 10
# Seeden der Datenbank
cat seed.sql | docker exec -i swe2-db psql --dbname=swe2 --username=hm

Die Anwendung läuft unter localhost:8000. Das Backend unter localhost:8080

Alleinstehende Datenbank

Alternativ kann die Datenbank unabhängig von Spring initialisiert werden:

cat dump.pg.sql | docker exec -i swe2-db psql --dbname=swe2 --username=hm

Zur Verwendung müssen noch die Zugangsdaten in die Datei application.properties eingetragen werden

Technologie-Stack

Backend

  • Sprache: Kotlin (API Version 2.1)
  • Framework: Spring Boot mit Spring MVC
  • ORM: Spring Data JPA
  • Build-Tool: Gradle
  • Java SDK: Version 21
  • Jakarta EE mit jakarta imports

Frontend

  • Sprache: TypeScript (Version 5.7.2)
  • Framework: Preact (Version 10.26.4)
  • Build-Tool: Vite (Version 6.2.0)
  • Styling: TailwindCSS (Version 4.0.17)
  • UI-Komponenten: Shadcn
  • Zusätzliche Libraries:
    • axios (API-Calls)
    • date-fns (Datumsverarbeitung)
    • zod (Schema-Validierung)
    • framer-motion (Animationen)
    • jwt-decode (JWT-Token-Handling)
    • react-day-picker (Datumsauswahl)

Datenbank

  • System: PostgreSQL 17 (Alpine)
  • Containerisierung: Docker

Weitere Tools

  • API-Testing: Bruno (ähnlich wie Postman und Co.)
  • CI/CD: GitLab CI (.gitlab-ci.yml)
  • Containerisierung: Docker & Docker Compose

Development

Für Intellij steht eine RunConfiguration bereit. Die Dev Konfiguration startet Front- und Backend.
Eine Datenbank (Postgres) muss auch in diesem Fall laufen, damit das Backend startet. Hierfür kann beispielsweise die compose_db_only.yml benutzt werden, um diese in einem Docker container zu starten.

docker compose -f compose_db_dev.yml up -d
sleep 10
cat seed.sql | docker exec -i swe2-db psql --dbname=swe2 --username=hm

Manuell Starten

Frontend

Im Ordner frontend ausführen

cd frontend
cp example.env .env
npm install  # Dependencies installieren
npm run dev

Backend

./gradlew :bootRun

API-Testing

Das Projekt enthält Bruno-Konfigurationsdateien im Ordner für das Testen der API-Endpunkte. Bruno-Request-Config/

Troubleshooting

Mögliche Probleme

  • Problem: Docker Container startet nicht Lösung: Überprüfen Sie, ob die Ports 8000 und 8080 verfügbar sind

  • Problem: Backend Container Crashed nach start sofort wieder. Lösung: Vermutlich wurde die Datenbank nicht korrekt geseedet, überüfen ob etwas in der DB steht

  • Problem: Datenbank-Verbindungsfehler Lösung: Überprüfen Sie die Zugangsdaten in application.properties