Case Study
REST-API zur Verwaltung von Bewerbungen
Eine REST-API, die den Status eigener Bewerbungen durchgängig abbildet – von „beworben" bis „angenommen". Bewusst als Übungsprojekt während der Jobsuche gebaut, um API-Design, Containerisierung und automatisierte Tests praxisnah zu vertiefen.
Tech-Stack
- Backend: PHP 8.3, Symfony 7, Doctrine ORM
- Datenbank: MySQL 8
- Infrastruktur: Docker & Docker Compose (Nginx, PHP-FPM, MySQL als getrennte Container)
- Tests: PHPUnit – Unit- und funktionale Tests (15 Tests)
Herausforderungen & Lösungen
1. Gültige Status-Übergänge erzwingen
Eine Bewerbung darf nicht von jedem Status in jeden anderen wechseln (z. B. nicht direkt von „beworben" zu „angenommen"). Die Übergangslogik sitzt als eigene Business-Regel im Domänen-Code statt verstreut im Controller, mit einem dedizierten PATCH-Endpunkt für Statuswechsel.
2. Sauberes REST-Design statt roher CRUD-Endpunkte
Endpunkte liefern konsistente HTTP-Statuscodes (200, 201, 204, 404, 422) und strukturierte Validierungsfehler, damit ein Client zuverlässig zwischen „ungültige Eingabe" und „nicht gefunden" unterscheiden kann.
3. Von Anfang an testgetrieben
15 Tests decken sowohl die Statuslogik auf Unit-Ebene als auch die HTTP-Endpunkte funktional ab – bewusst als Übung, Tests parallel zur Funktionalität zu schreiben statt nachträglich.
4. Reproduzierbare Umgebung mit Docker
Nginx, PHP-FPM und MySQL laufen als getrennte Container über Docker Compose. Ein „docker compose up -d --build" plus Migration reicht, um die Anwendung überall identisch zum Laufen zu bringen.
Meine Rolle
Alleiniger Entwickler: API-Design, Domänenlogik, Datenbank-Modellierung, Tests und Docker-Setup stammen vollständig von mir – als gezieltes Übungsprojekt für Backend- und DevOps-Praxis.
Ergebnis
Eine funktionierende, vollständig containerisierte REST-API mit sauberem Status-Lifecycle, konsistenten HTTP-Antworten und 15 bestehenden Tests – ein kompakter Nachweis für API-Design, Testdisziplin und Docker-Kenntnisse.