PetConnect ist eine moderne Webanwendung, die Tierhalter mit zuverlässigen Betreuern verbindet. Die Plattform bietet Profile, Bewertungen, Chatfunktionen und eine einfache Vermittlung von Tierservices wie Gassi gehen, Pflege und Urlaubsbetreuung. Ziel ist es, Vertrauen und Gemeinschaft zwischen Tierfreunden digital zu stärken.
Viele Haustierbesitzer finden kurzfristig keine geeignete Betreuung. Gleichzeitig gibt es Menschen, die gerne Tiere betreuen würden, aber keine passende Plattform finden. PetConnect bringt beide Seiten zusammen. Die Anwendung soll unkompliziert, sicher und effektiv funktionieren, damit Tierfreunde sich gegenseitig helfen können.
- Betreuer nach Ort und Verfügbarkeit finden
- Nutzerprofile mit Beschreibung, Bewertungen und Haustierbildern
- Echtzeit-Chat mit Benachrichtigungen
- Bewertungssystem mit Sternen und Kommentaren
- Anzeige und Pflege von eigenen Verfügbarkeiten
- Upload von bis zu vier Bildern pro Haustier
- Notfallknopf zum Rufen von Hilfe
.gitlab-ci.yml
docker-compose.yml
Dockerfile
README.md
src/
main/
java/
resources/
test/
.env
Das Backend basiert auf Spring Boot und stellt eine REST-API zur Verfügung. Die Daten werden in einer PostgreSQL-Datenbank gespeichert. Die Anwendung enthält Funktionen wie Nutzerverwaltung, Verfügbarkeiten, Bewertungen, Chat und Notfallmeldungen.
- Spring Boot Port: 8003
- Quellcode: src/main/java/
- Konfiguration: application.properties und .env
Die PostgreSQL-Datenbank speichert alle Nutzer-, Bewertungs- und Verfügbarkeitsdaten.
- Port: 5432
- Konfiguration: In docker-compose.yml und .env definiert
Die Datei docker-compose.yml definiert alle Services:
- app: Spring Boot REST-API
- db: PostgreSQL Datenbank
Die .gitlab-ci.yml Datei beschreibt die CI/CD-Pipeline, mit der das Projekt gebaut und getestet wird. Docker-Images werden automatisch erstellt und in die GitLab Registry geladen.
- Docker und Docker Compose installiert
docker-compose up --build- Backend API: http://localhost:8003
- Datenbank: lokal erreichbar auf Port 5432
- Java mit Spring Boot
- RESTful API Design
- Spring Security für Authentifizierung
- JPA mit PostgreSQL
- Thymeleaf mit HTML, CSS und JavaScript
- Docker und Docker Compose
- Maven als Build-Tool
- WebSocket (SockJS + STOMP) für den Chat
- JUnit und Mockito für Tests
Tests können lokal über Maven ausgeführt werden:
mvn testDas Projekt enthält:
- Unit-Tests für Controller, Services und Repositories
- Integrationstests mit MockMvc
- Verwendung von Mockito für isolierte Tests
Die Anwendung folgt dem MVC-Prinzip (Model-View-Controller), ergänzt durch eine klare Schichtung nach Verantwortlichkeiten:
Model-View-Controller (MVC) sorgt für eine klare Trennung:
- Model: Repräsentiert die Domänendaten (z. B. AppUser, Bewertung, PetPhoto)
- View: Dynamische HTML-Seiten mit Thymeleaf
- Controller: Verarbeitet Anfragen, ruft Services auf und gibt Daten an die View weiter
Zusätzlich folgt die Anwendung einer mehrschichtigen Architektur:
- Controller-Schicht: Verantwortlich für die REST-Endpunkte (z. B. /api/users)
- Service-Schicht: Enthält die Geschäftslogik (z. B. Validierung, Verarbeitung)
- Repository-Schicht: Abstraktion zur Datenbank mit Spring Data JPA
- Konfigurationsschicht: Sicherheit, WebSockets, Ressourcenverwaltung
- Frontend ↔ Backend: HTTP über REST-Endpunkte
- Live-Kommunikation: WebSocket (STOMP über SockJS) für den Chat
- Datenbankzugriff: ORM über JPA mit PostgreSQL
- Login und Registrierung mit Spring Security
- Benutzerrollen zur Unterscheidung zwischen Tierhalter und Betreuer
- Zugriffsschutz über HTTP-Security-Konfiguration
Die Anwendung ist containerisiert:
- Backend: Java Spring Boot Service
- Datenbank: PostgreSQL
- Docker Compose: Startet beide Container und verbindet sie im gleichen Netzwerk
Die modulare Struktur erlaubt es, neue Funktionen wie Buchungen, Zahlungsintegration oder Kalenderansichten problemlos zu ergänzen, da jede Schicht klar definiert und entkoppelt ist.
Zur Qualitätssicherung und sprachlichen Korrektur wurde KI eingesetzt. Die KI hat insbesondere bei der Verbesserung von Dokumentationsabschnitten geholfen, wurde aber nicht zur Codegenerierung verwendet.
Dieses Projekt dient ausschließlich Studien- und Lernzwecken. Eine kommerzielle Nutzung ist nicht vorgesehen.