Angaben gemäß § 5 TMG
[Vor- und Nachname]
[Straße und Hausnummer]
[PLZ] [Ort]
E-Mail: [deine-email@beispiel.de]
Telefon: [optional – Telefonnummer]
[Vor- und Nachname]
[Anschrift wie oben]
Diese WebApp ist ein privates, nicht-kommerzielles Projekt zur internen Organisation einer Kinder-Handballmannschaft. Die Inhalte sind nur für registrierte Mitglieder (Eltern und Trainer) bestimmt.
Trotz sorgfältiger Kontrolle übernehmen wir keine Haftung für die Inhalte externer Links. Für den Inhalt verlinkter Seiten sind ausschließlich deren Betreiber verantwortlich.
HTML; $datenschutz = <<<'HTML'Diese WebApp ist eine rein private, nicht-kommerzielle Vereins-Webseite. Sie dient ausschließlich der internen Koordination einer Kinder-Handballmannschaft – also der Organisation von Trainings, Spielen, Turnieren, Catering und Zeitnehmer-Diensten.
Es fließen keinerlei Daten an Dritte ab. Wir verkaufen, teilen oder übermitteln keine personenbezogenen Daten an externe Unternehmen, Werbetreibende, soziale Netzwerke oder sonstige Dritte. Es gibt kein Tracking, keine Analyse-Tools, keine Werbung und keine versteckten Datenflüsse. Alle Daten verbleiben ausschließlich auf unserem Server und werden nur für den beschriebenen Vereinszweck genutzt.
[Vor- und Nachname]
[Straße und Hausnummer]
[PLZ] [Ort]
E-Mail: [deine-email@beispiel.de]
Diese WebApp ist ein geschlossenes, privates System für Eltern und Trainer einer Kinder-Handballmannschaft. Der Zugang erfolgt ausschließlich über persönliche Einladungslinks – es gibt keine offene Registrierung und keinen öffentlichen Zugang zu Inhalten. Die App ersetzt klassische Kommunikation über Messenger-Gruppen und bietet eine zentrale Plattform für:
Bei der Nutzung werden folgende personenbezogene Daten verarbeitet – nicht mehr und nicht weniger:
Die Daten werden ausschließlich zu folgenden Zwecken verarbeitet:
Es findet keine Auswertung, kein Profiling und keine automatisierte Entscheidungsfindung statt.
Die Verarbeitung erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse). Das berechtigte Interesse liegt in der effizienten Organisation der Mannschaftsaktivitäten im Rahmen einer nicht-kommerziellen, vereinsähnlichen Struktur. Sie können dieser Verarbeitung jederzeit widersprechen.
Diese WebApp verwendet ausschließlich ein einziges, technisch notwendiges Session-Cookie. Dieses Cookie ist für die Anmeldefunktion zwingend erforderlich und enthält keine personenbezogenen Daten – lediglich eine zufällige Sitzungs-ID, die beim Schließen des Browsers oder nach Ablauf der Sitzung automatisch gelöscht wird.
Es werden keine Tracking-, Analyse- oder Werbe-Cookies eingesetzt. Kein Google Analytics, kein Facebook Pixel, kein Matomo, keine Heatmaps – nichts dergleichen. Ein Cookie-Banner ist daher nach aktueller Rechtslage nicht erforderlich (§ 25 Abs. 2 Nr. 2 TDDDG), da ausschließlich technisch unbedingt erforderliche Cookies verwendet werden.
Zur Darstellung der Webseite werden einige technische Ressourcen (CSS-Stylesheets, JavaScript-Bibliotheken) von externen Servern geladen. Dabei kann Ihre IP-Adresse an diese Anbieter übermittelt werden. Dies dient ausschließlich der technischen Funktionsfähigkeit – es werden dabei keine personenbezogenen Nutzungsdaten erhoben oder ausgewertet.
Im Folgenden sind alle externen Dienste aufgeführt, mit denen diese WebApp kommuniziert. Es gibt keine weiteren versteckten Verbindungen.
Content Delivery Networks (CDN):
Diese CDNs liefern ausschließlich statische Dateien (CSS, JavaScript) aus. Es fließen keine personenbezogenen Daten an diese Dienste außer der IP-Adresse im Rahmen des technisch notwendigen HTTP-Abrufs. Die Dateien werden von Ihrem Browser zwischengespeichert (Cache), sodass bei wiederholten Besuchen keine erneuten Abrufe stattfinden.
OpenStreetMap (Kartenanzeige):
Auf Veranstaltungs-Detailseiten wird eine interaktive Karte eingebunden. Dabei werden Kartenbilder (sogenannte „Tiles") von den Servern tile.openstreetmap.org der OpenStreetMap Foundation (OSMF) geladen. Hierbei wird Ihre IP-Adresse an die OSMF übermittelt. OpenStreetMap ist ein freies, nichtkommerzielles Projekt mit Sitz in Großbritannien. Es werden keine Tracking-Cookies gesetzt und keine Nutzerprofile erstellt. Die Karte wird nur auf Veranstaltungs-Detailseiten geladen, nicht auf anderen Seiten. Datenschutzrichtlinie: osmfoundation.org/wiki/Privacy_Policy
Zusätzlich wird auf Veranstaltungs-Detailseiten ein Link zur Routenplanung über openstreetmap.org angeboten. Dieser Link öffnet sich in einem neuen Tab und wird erst durch Ihren aktiven Klick aufgerufen – es findet kein automatischer Datentransfer statt.
Photon / Komoot (Adress-Autocomplete):
Im Administrationsbereich wird für die Adresssuche bei der Erstellung von Veranstaltungen und Orten der Photon-Geocoding-Dienst genutzt (photon.komoot.io). Dabei wird der eingegebene Suchbegriff zusammen mit Ihrer IP-Adresse an die Server von Komoot GmbH (Potsdam, Deutschland) übermittelt. Photon ist ein Open-Source-Projekt, das auf OpenStreetMap-Daten basiert. Es werden keine Cookies gesetzt und keine Nutzerprofile erstellt. Dieser Dienst wird ausschließlich im Administrationsbereich und nur bei aktiver Eingabe durch einen Administrator aufgerufen – normale Benutzer lösen diesen Dienst nicht aus. Datenschutzrichtlinie: komoot.com/privacy
Nominatim (Server-seitige Adresssuche):
Ergänzend zum Photon-Dienst wird im Administrationsbereich der Nominatim-Dienst der OpenStreetMap Foundation zur Adresssuche genutzt. Anders als bei Photon erfolgt dieser Abruf über unseren Server (nicht direkt aus Ihrem Browser). Dabei wird nur der Suchbegriff übermittelt, nicht Ihre IP-Adresse. Suchergebnisse werden 24 Stunden lang auf unserem Server zwischengespeichert, um unnötige Anfragen zu vermeiden. Auch dieser Dienst wird nur bei aktiver Eingabe durch einen Administrator aufgerufen.
Übersicht: Welcher Dienst wird wann aufgerufen?
Wir geben Ihre Daten nicht weiter. Nicht an Werbepartner, nicht an soziale Netzwerke, nicht an Datenbroker, nicht an andere Vereine und nicht an sonstige Dritte. Die unter Punkt 7 genannten externen Dienste erhalten ausschließlich Ihre IP-Adresse im Rahmen technisch notwendiger HTTP-Abrufe – keine Namen, keine E-Mail-Adressen, keine Inhalte und keine sonstigen personenbezogenen Daten.
Die einzige Ausnahme wäre eine gesetzliche Verpflichtung zur Herausgabe (z. B. bei einer gerichtlichen Anordnung) – dieser Fall ist bei einer internen Vereins-Koordinationsplattform praktisch nicht relevant.
Diese WebApp wird auf einem Server in Deutschland betrieben (All-Inkl.com, Hauptstraße 68, 02742 Friedersdorf). Alle Ihre Daten (Benutzerkonten, Spielerdaten, Veranstaltungen, Dateien, Kommentare) verbleiben ausschließlich auf diesem Server in Deutschland.
Es findet kein Transfer personenbezogener Daten in Drittstaaten statt. Die einzigen Verbindungen zu Servern außerhalb Deutschlands sind die oben genannten CDN-Abrufe (bei denen lediglich Ihre IP-Adresse für den technischen Ladevorgang übermittelt wird) sowie die OpenStreetMap-Kartenkacheln. Bei keinem dieser Abrufe werden personenbezogene Inhalte (Namen, E-Mails, etc.) übertragen.
Personenbezogene Daten werden gespeichert, solange das Benutzerkonto aktiv ist bzw. solange Ihr Kind in der Mannschaft spielt. Bei Deaktivierung des Kontos durch einen Administrator werden die Daten aufbewahrt, der Zugang aber gesperrt. Eine vollständige Löschung aller Ihrer Daten kann jederzeit beim Verantwortlichen beantragt werden und wird zeitnah umgesetzt.
Sie haben gemäß DSGVO folgende Rechte:
Zur Ausübung Ihrer Rechte wenden Sie sich bitte formlos an den Verantwortlichen (siehe oben) – per E-Mail genügt. Darüber hinaus steht Ihnen ein Beschwerderecht bei einer Aufsichtsbehörde zu (Art. 77 DSGVO).
Wir setzen technische und organisatorische Maßnahmen ein, um Ihre Daten zu schützen:
Kurz und knapp: Diese WebApp ist ein privates Werkzeug zur Mannschafts-Organisation – nicht mehr und nicht weniger. Wir verdienen kein Geld damit, wir sammeln keine Daten zum Verkauf, wir tracken niemanden und wir geben nichts weiter. Ihre Daten gehören Ihnen und werden ausschließlich für den Vereinszweck genutzt.
Die einzigen externen Verbindungen dienen dem Laden von Layout-Bibliotheken und Kartenmaterial – dabei wird ausschließlich Ihre IP-Adresse im Rahmen des normalen Internetverkehrs übermittelt, niemals Ihre personenbezogenen Inhalte.
HTML; $settings = [ [ 'key' => 'app_name', 'label' => 'App-Name', 'type' => 'text', 'value' => 'Handball App', ], [ 'key' => 'impressum_html', 'label' => 'Impressum', 'type' => 'html', 'value' => $impressum, ], [ 'key' => 'datenschutz_html', 'label' => 'Datenschutzerklärung', 'type' => 'html', 'value' => $datenschutz, ], ]; foreach ($settings as $setting) { $existing = Setting::where('key', $setting['key'])->first(); if ($existing) { // Nur Metadaten aktualisieren, NICHT den Wert überschreiben $existing->update(['label' => $setting['label'], 'type' => $setting['type']]); } else { $this->createSetting($setting); } } // Slogan $sloganSettings = [ [ 'key' => 'app_slogan', 'label' => 'Slogan', 'type' => 'richtext', 'value' => 'Gemeinsam stark — auf und neben dem Spielfeld
', ], [ 'key' => 'app_favicon', 'label' => 'Favicon', 'type' => 'text', 'value' => null, ], ]; foreach ($sloganSettings as $setting) { $existing = Setting::where('key', $setting['key'])->first(); if ($existing) { $existing->update(['label' => $setting['label'], 'type' => $setting['type']]); } else { $this->createSetting($setting); } } // Statistik-Sichtbarkeit $statsEnabled = Setting::where('key', 'statistics_enabled')->first(); if ($statsEnabled) { $statsEnabled->update(['label' => 'Statistik aktiviert', 'type' => 'number']); } else { $this->createSetting([ 'key' => 'statistics_enabled', 'label' => 'Statistik aktiviert', 'type' => 'number', 'value' => '1', ]); } // Sichtbarkeits-Einstellungen (pro Feature pro Rolle) $visibilitySettings = [ ['key' => 'visibility_statistics_coach', 'label' => 'Statistik: Trainer', 'type' => 'number', 'value' => '1'], ['key' => 'visibility_statistics_parent_rep', 'label' => 'Statistik: Elternvertretung', 'type' => 'number', 'value' => '1'], ['key' => 'visibility_finances_coach', 'label' => 'Finanzen: Trainer', 'type' => 'number', 'value' => '1'], ['key' => 'visibility_finances_parent_rep', 'label' => 'Finanzen: Elternvertretung', 'type' => 'number', 'value' => '1'], ['key' => 'visibility_catering_history_coach', 'label' => 'Catering-Verlauf: Trainer', 'type' => 'number', 'value' => '1'], ['key' => 'visibility_catering_history_parent_rep', 'label' => 'Catering-Verlauf: Elternvertretung', 'type' => 'number', 'value' => '1'], ]; foreach ($visibilitySettings as $setting) { $existing = Setting::where('key', $setting['key'])->first(); if ($existing) { $existing->update(['label' => $setting['label'], 'type' => $setting['type']]); } else { $this->createSetting($setting); } } // Lizenzschlüssel $licenseKey = Setting::where('key', 'license_key')->first(); if ($licenseKey) { $licenseKey->update(['label' => 'Lizenzschlüssel', 'type' => 'text']); } else { $this->createSetting([ 'key' => 'license_key', 'label' => 'Lizenzschlüssel', 'type' => 'text', 'value' => null, ]); } // Event-Defaults für Mindestanforderungen foreach (['home_game', 'away_game', 'training', 'tournament', 'meeting'] as $type) { foreach (['players', 'catering', 'timekeepers'] as $field) { $key = "default_min_{$field}_{$type}"; $existing = Setting::where('key', $key)->first(); if ($existing) { $existing->update([ 'label' => "Default Min. " . ucfirst($field) . " (" . ucfirst($type) . ")", 'type' => 'number', ]); } else { Setting::create([ 'key' => $key, 'label' => "Default Min. " . ucfirst($field) . " (" . ucfirst($type) . ")", 'type' => 'number', 'value' => null, ]); } } } } /** * Setting erstellen mit expliziter key-Zuweisung (key nicht in $fillable). */ private function createSetting(array $data): Setting { $key = $data['key']; unset($data['key']); $setting = new Setting($data); $setting->key = $key; $setting->save(); return $setting; } }