104 lines
No EOL
2.9 KiB
Markdown
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` |