
Projekt | Powda Mobile App
Von David Grünberger am 13.03.2025
Im Rahmen des Semesterprojekts im ersten Semester der Masterklasse Mobile habe ich eine erste Version der App Powda entwickelt: eine mobile Anwendung, die in Zukunft für Ridesharing und als Buchungsplattform im Bereich Wintersport dienen soll.
Hauptziel des Projekts war es, neue Technologien kennenzulernen und ein technisches Framework zu schaffen, welches mit möglichst wenig Wartungs- und Kostenaufwand die Entwicklung einer App für eine große Usergruppe ermöglicht. Hauptaugenmerk lag dabei auf der Verwendung von einer Cross-Plattform-Technologie und Cloud-Services für beispielsweise Userverwaltung und Deployment.
In diesem Blogbeitrag werde ich den Entwicklungsprozess erläutern, die verwendeten Technologien vorstellen und auf Herausforderungen eingehen, die mir während der Umsetzung begegnet sind.
Technologie-Stack
Powda basiert auf einer modernen Architektur mit einer Kombination aus Kotlin Spring Boot für das REST-Backend und React Native mit Expo für das App-Frontend. Die Daten werden in einer PostgreSQL-Datenbank gespeichert, die über Supabase gehostet wird. Hier ein Überblick über die wichtigsten Technologien:
Backend: Kotlin mit Spring Boot
Für das Backend fiel die Wahl auf Kotlin Spring Boot, da es eine robuste und skalierbare Grundlage für Webservices bietet. Aufgrund meiner Erfahrung mit Kotlin aus dem Bereich Android Development, habe ich diese Programmiersprache gewählt, um auch im Backend damit Erfahrungen zu machen.
- Spring Boot mit JPA: Die Datenbank wird über Java Persistence API (JPA) definiert, was eine effiziente Abbildung der Datenbanktabellen auf Kotlin-Klassen ermöglicht.
- Authentifizierung mit Clerk JWKS: Geschützte Routen werden durch eine JSON Web Key Set (JWKS)-Verifizierung abgesichert, sodass nur authentifizierte Nutzer Zugriff auf sensible Daten haben.
Datenbank: PostgreSQL mit Supabase
Da die App mit relationalen Daten arbeitet, wurde PostgreSQL als Datenbank gewählt. Das Hosting erfolgt über Supabase, eine leistungsstarke Backend-as-a-Service-Plattform.
- Gehostet über Supabase: Dies ermöglicht eine einfache Verwaltung und Skalierung der Datenbank
- Zugriff über Spring JPA: Die Kommunikation zwischen Backend und Datenbank erfolgt effizient durch die Spring Data JPA.
Frontend: React Native mit Expo
Für das Frontend kam React Native in Verbindung mit Expo zum Einsatz. Diese Kombination erlaubt eine schnelle Entwicklung und einen einfachen Deployment-Prozess.
- React Native: Ermöglicht die plattformübergreifende Entwicklung für iOS und Android.
- Expo: Eine leistungsfähige Entwicklungsumgebung für React Native, die den Build- und Deployment-Prozess erleichtert.
- Clerk für Authentifizierung: Die Benutzeranmeldung erfolgt über den Authentifizierungsdienst Clerk, der eine sichere und einfache Lösung für Nutzerverwaltung bietet und passenderweise auch ein SDK für Expo bereitstellt.
UI & Design: UI Kitten und Figma
Das Design der App basiert auf UI Kitten, einer umfangreichen UI-Bibliothek für React Native, die auf dem Eva Design System basiert.
- UI Kitten: Bietet eine Vielzahl an fertigen UI-Komponenten mit Dark Mode-Unterstützung
- Figma: Wurde zur Erstellung des Designs und App-/Splashscreen-Icons genutzt, um ein ansprechendes und konsistentes User Interface sicherzustellen

Deployment: Backend & Frontend
Backend Deployment: Render & Docker
Das Backend wurde auf Render gehostet, einem Cloud-Hosting-Service, der einfache CI/CD-Workflows ermöglicht.
- Docker-Container: Das Backend läuft in einem Docker-Container, was eine einfache Portabilität und Skalierbarkeit bietet.
- Automatisiertes Deployment: Änderungen im Backend werden automatisch über Render bereitgestellt, getriggert nach jedem Commit am Master-Branch im Powda Github-Repository.
Frontend Deployment
Das Frontend wird mit Expo entwickelt und in Zukunft auch deployed, wodurch die App leicht auf verschiedenen Plattformen getestet und veröffentlicht werden kann. Die Kombination aus Expo und React Native sorgt für eine stabile Umgebung mit Hot Reloading für schnelle Entwicklungszyklen.
Der Expo Application Service (EAS) ermöglicht es, iOS-Apps in der Cloud zu kompilieren, ohne sich dafür extra ein Gerät mit Mac OS anschaffen zu müssen.

Herausforderungen & Learnings
Während der Entwicklung von Powda gab es einige Herausforderungen, die ich meistern musste:
- JWKS-Authentifizierung mit Clerk: Die Integration der Token-Verifizierung in das Kotlin-Backend erforderte eine genaue Konfiguration der Middleware, um Sicherheitsrisiken zu vermeiden.
- PostgreSQL und Supabase: Die Kombination aus gehosteter Datenbank und Spring JPA führte gelegentlich zu Synchronisationsproblemen, insbesondere bei Migrationen.
- Free Tiers der SaaS-Plattformen: Es sind zwar alle Services gratis, die ich verwendet habe – ich bin aber auf einige kleine Hürden gestoßen. Beispielsweise schaltet sich das Render Backend nach 10min auf inaktiv, wenn es keine Anfragen erhält. Dieses Problem habe ich mit einem Cron-Job umgangen, der alle 10min eine Anfrage an das Backend schickt, um es am Leben zu erhalten.
Fazit
Die Entwicklung von Powda war eine spannende Herausforderung, die mir wertvolle Einblicke in Plattform-übergreifende App-Entwicklung gegeben hat. Durch die Kombination aus Kotlin Spring Boot, React Native, PostgreSQL und Clerk konnte ich eine sichere und performante Anwendung umsetzen. Der Einsatz von Docker und Render erleichterte das Deployment des Backends, während Expo für eine reibungslose Bereitstellung des Frontends sorgte.
Dieses Projekt hat mir nicht nur technisches Wissen vermittelt, sondern auch gezeigt, wie wichtig eine durchdachte Architektur und ein effizienter Entwicklungsprozess sind. Ich freue mich darauf, Powda im zweiten Semester der Masterklasse weiterzuentwickeln.
The comments are closed.