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.
softwareengineering-2-modar.../README.md
2025-07-25 21:45:34 +02:00

2.9 KiB

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