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 *

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.