StudentTimer – Mobile Learning Tracker & Analytics Platform
StudentTimer ist eine mobile Anwendung zur Erfassung, Kategorisierung und Auswertung von Lern-Sessions. Entwickelt mit Expo (React Native) und einem Spring Boot Backend, kombiniert sie lokale Speicherung mit serverseitiger Persistenz und statistischer Auswertung. Die App unterstützt Offline-Nutzung, Notifications und OAuth-basierte Authentifizierung.
Spring BootJavaMavenReact NativeTypeScriptExpoPostgreSQLDockerSwaggerJWTOAuthREST APISCRUM
Image of StudentTimer – Mobile Learning Tracker & Analytics Platform

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"

  1. Nutzer installiert die App und registriert sich via E-Mail oder Google Sign-In.
  2. Nach dem Login wählt er ein Lernmodul und startet den Timer für eine Lern-Session.
  3. Sessions werden lokal gespeichert – offline oder online.
  4. Bei bestehender Verbindung synchronisiert die App die Daten mit dem Backend.
  5. Das Backend berechnet aggregierte Werte und stellt Statistiken bereit.
  6. Nutzer können über Diagramme ihre Lernzeiten und Fortschritte auswerten.
  7. 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