Mama Calendar – plattformübergreifende Erinnerungs-App

Written by

in

Mama Calendar ist eine plattformübergreifende Ereignis- und Erinnerungsanwendung, die in React Native (Expo) mit zwei Backend-Implementierungen geschrieben wurde: Node.js + MongoDB und PHP + MariaDB.

Mit der Anwendung können Sie Ereignisse mit Emoji-Kategorisierung erstellen, die Art der Wiederholung auswählen (einmal, jährlich, monatlich, wöchentlich, täglich) und wichtige Ereignisse für die nächsten 3 Tage in einer separaten Registerkarte „Wichtige Ereignisse“ anzeigen.

Technologie-Stack

Das Frontend ist in React Native 0.86 über Expo SDK 57 mit TypeScript, Expo Router für die Navigation und react-native-reanimated für Animationen geschrieben. Expo-Symbole werden für Icons verwendet (SF-Symbole auf iOS, Material-Symbole auf Android/Web).

Das Backend ist in zwei Versionen implementiert:

  • Node.js: Express 4, MongoDB 8 über nativen Treiber, benutzerdefinierte Authentifizierung mit Scrypt + Salt, manuelle Token-Verwaltung. Docker Compose ruft den Client (nginx), den Server und MongoDB auf.
  • PHP: PHP 8.2 ohne Frameworks, PDO + MariaDB 11, bcrypt für Passwort-Hashing, Ihr eigener Router und PSR-4-Autoloading über Composer.

Anwendungsfunktionen

  • Registrierung und Autorisierung: einfaches System mit Benutzername/Passwort und Bearer-Token
  • CRUD-Ereignisse: Ereignisse mit Datum, Emoji und Wiederholungstyp erstellen, anzeigen, bearbeiten und löschen
  • Intelligente Filterung: Auf der Registerkarte „Wichtige Ereignisse“ werden Ereignisse der nächsten drei Tage unter Berücksichtigung von Wiederholungsregeln angezeigt. Jährliche Ereignisse zeigen beispielsweise das nächstgelegene jährliche Ereignis an, monatlich – nach Tag des Monats, wöchentlich – nach Tag der Woche
  • Emoji-Auswahl: 20 voreingestellte Emojis zur schnellen Kategorisierung von Ereignissen
  • Heutige Ereignisse hervorheben: Die heutigen Ereignisse werden mit einem roten Hintergrund hervorgehoben (#B71C1C)
  • Dunkles Thema: Automatische Erkennung des Systemfarbschemas mit separaten Paletten für helles und dunkles Thema
  • Internationalisierung: Russische und englische Sprachen über React Context
  • Анимации: анимированный сплэш-скрин с Keyframe API и упругой интерполяцией, анимированная иконка приложения с вращающимся свечением
  • Admin-Endpunkte: Verwaltung von Benutzern, Tokens und Löschen der Datenbank über Master-Tokens

Warum zwei Backend-Implementierungen?

Die Node.js-Version ist die Hauptversion, aber die PHP-Version existiert als Alternative für klassischeres Hosting. Die API ist völlig identisch, sodass Sie zwischen ihnen wechseln können, ohne den Client-Code zu ändern.

Infrastruktur

Der gesamte Stack wird durch Docker Compose angehoben: Der Client wird durch einen mehrstufigen Build (Expo-Export → Nginx Alpine) zusammengestellt, ein Server auf Node.js, MongoDB 8. Für die PHP-Version gibt es eine separate Compose-Datei mit MariaDB 11 und phpunit für Tests.

Die Zusammenstellung der Webversion wird durch ein PowerShell-Skript automatisiert, das die API_URL vor dem expo export patcht und die Originale danach wiederherstellt.

Ausgabe

Mama Calendar ist eine plattformübergreifende Anwendung mit vollem Funktionsumfang, die den gesamten Zyklus abdeckt: vom mobilen und Web-Frontend auf React Native bis hin zu zwei serverseitigen Optionen. Das Projekt ist aufgrund seiner Architektur, der Nutzung moderner Expo SDK-Funktionen und der Dual-Backend-Implementierung interessant.

Links

https://github.com/zefir1990/Mama-Calendar
https://demensdeum.com/software/mama-calendar/events

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *