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

104 lines
No EOL
2.9 KiB
Markdown

# 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
```shell
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:
```shell
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.
```shell
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
```shell
cd frontend
cp example.env .env
npm install # Dependencies installieren
npm run dev
```
#### Backend
```shell
./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`