- TypeScript 61.9%
- Kotlin 35.5%
- CSS 1.9%
- Dockerfile 0.4%
- HTML 0.3%
| .run | ||
| Bruno-Request-Config | ||
| frontend | ||
| gradle/wrapper | ||
| Lastenheft, Funktionstest ,MPM & Projekt Plan | ||
| src | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| build.gradle.kts | ||
| compose.yml | ||
| compose_db_dev.yml | ||
| Dockerfile | ||
| dump.pg.sql | ||
| dump.sql | ||
| gradlew | ||
| gradlew.bat | ||
| Lastenheft, NPM & Projekt Plan | ||
| README.md | ||
| seed.sql | ||
| settings.gradle.kts | ||
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