
StudentTimer – Mobile Learning Tracker & Analytics Platform
StudentTimer ist eine mobile App zur Erfassung und Analyse von Lern-Sessions, mit einem Fokus auf Offline-Nutzung, Synchronisation und statistische Auswertung.
Studierende können ihre Lernzeiten über Module und Einheiten hinweg tracken, visualisieren und analysieren.
Die Anwendung besteht aus einem Expo/React-Native-Frontend und einem Spring Boot (Java/Maven) Backend, das über REST-APIs angebunden ist und Daten in einer PostgreSQL-Datenbank persistiert.
Features
-
Timer-basiertes Tracking
Start, Pause und Stop von Lern-Sessions direkt in der App, kategorisiert nach Modulen oder Themen. -
Offline-Support
Sessions werden lokal gespeichert und bei bestehender Verbindung automatisch mit dem Backend synchronisiert. -
Statistische Auswertung
Visualisierung der Lernaktivität über verschiedene Diagrammtypen (Balken-, Linien- und Stern-Charts). -
Benachrichtigungen & Erinnerungen
Lokale Notifications, um regelmäßige Lernintervalle zu fördern. -
Nutzer-Authentifizierung
JWT-basierte Anmeldung mit optionaler Google-OAuth-Integration. -
Synchronisation & Persistenz
Automatischer Sync zwischen lokal gespeicherten Sessions und dem zentralen Backend. -
Containerisierte Infrastruktur
Vollständig dockerisierbares Backend mit PostgreSQL-Integration.
Technischer Aufbau (Tech Stack)
-
Frontend:
- Framework: Expo / React Native
- Sprache: TypeScript / React
- Architektur:
- Tooling: Metro bundler, EAS Build (Expo Application Services)
- UI: Komponentenbasiertes System mit React Native Elements / TailwindCSS (via Tailwind-RN)
-
Backend:
- Sprache & Framework: Java / Spring Boot
- Persistenz: PostgreSQL
- ORM: Spring Data JPA / Hibernate
- Authentifizierung: Spring Security + JWT
- API: REST-Endpoints (Spring Boot)
- Dokumentation: Swagger
-
DevOps & Infrastruktur:
- Containerisierung: Docker
- Build: Maven Wrapper (mvnw)
- Mobile Build: Expo / EAS
- Hosting: Render.com
Implementierung & Architektur
Architekturansatz
StudentTimer folgt einem mobile-first Client-Server-Modell mit klarer API-Trennung zwischen App und Backend.
Die App ist offline-fähig und synchronisiert Lern-Sessions automatisch mit der Server-Datenbank, sobald eine Verbindung besteht.
Frontend
Die App nutzt ein Context-basiertes Architektur-Pattern, um Zustände und API-Zugriffe zentral zu verwalten.
Komponenten wie Timer, Statistiken und Module greifen über den AxiosContext direkt auf die Backend-Schnittstellen zu.
Das UI ist vollständig komponentenbasiert aufgebaut und auf mobile Endgeräte (iOS/Android) optimiert.
Backend
Das Spring Boot Backend stellt REST-Endpoints zur Verfügung, verwaltet Authentifizierung (JWT / OAuth) und persistiert Daten in PostgreSQL.
Die Serviceschicht implementiert Business-Logik, während die Daten über JPA/Hibernate verwaltet werden.
API-Endpoints wurden mit Swagger dokumentiert, um eine klare und interaktive Nutzung sowie die reibungslose Integration durch Frontendnd Entwickler zu ermöglichen.
Die Applikation ist vollständig dockerisiert und über Docker Compose orchestriert.
"How-it-works"
- Nutzer installiert die App und registriert sich via E-Mail oder Google Sign-In.
- Nach dem Login wählt er ein Lernmodul und startet den Timer für eine Lern-Session.
- Sessions werden lokal gespeichert – offline oder online.
- Bei bestehender Verbindung synchronisiert die App die Daten mit dem Backend.
- Das Backend berechnet aggregierte Werte und stellt Statistiken bereit.
- Nutzer können über Diagramme ihre Lernzeiten und Fortschritte auswerten.
- Lokale Notifications erinnern an Lernzeiten oder Pausen.
Herausforderungen und Lösungsansätze
-
Offline-Synchronisation:
Umsetzung über lokale Speicherung (AsyncStorage) mit Synchronisationslogik beim Reconnect. -
Sichere Authentifizierung:
JWT-basierte Refresh und Access Token mit Spring Security. -
Plattformübergreifender Support:
Expo-basiertes Build-System ermöglicht einheitliche Codebasis für iOS und Android.
Projektkontext
- Rolle: Backend Development & DevOps
- Verantwortlichkeiten:
- Entwicklung und Integration des Spring Boot Backends
- Architektur und Umsetzung der Authentifizierung (JWT/OAuth)
- Dokumentation der API-Endpoints mit Swagger
- Containerisierung mit Docker Compose
- Hosting der API
- Arbeitsweise: Agile nach SCRUM
- Entwicklungszeitraum: 2023
- Hosting: durch mich, inklusive Deployment