From 7efe84de347239e7847d1c0f8c05a8442f0ba9b8 Mon Sep 17 00:00:00 2001 From: flemming-it Date: Thu, 18 Jun 2026 13:58:29 +0200 Subject: [PATCH] docs(legal): fill Impressum + Datenschutz from authoritative fai_web data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the [PLACEHOLDER] entries in the Recht-Tab with the real legal-entity data published on flemming.ai (single source of truth across F∆I surfaces): - Anbieter Dr. Stefan Flemming, Flemming.IT, freiberuflich - Anschrift Dardanellenweg 41, 12109 Berlin - Kontakt contact@flemming.ai, +49 30 66302929 - USt-IdNr. DE269393425 (§ 27a UStG) - Verantw. Dr. Stefan Flemming (§ 18 Abs. 2 MStV) - Hosting Hetzner Online GmbH, Gunzenhausen (AVV nach Art. 28) - Logs max. 14 Tage Also brings the wording in line with the current §-Lage: - § 5 TMG / § 7 Abs. 1 TMG → § 5 DDG / § 7 Abs. 1 DDG (Digitale-Dienste-Gesetz seit Mai 2024 — das TMG existiert in der zitierten Form nicht mehr). - Adds the standard 'Haftung für Inhalte', 'Haftung für Links' und 'Urheberrecht'-Abschnitte des fai_web-Templates, Letzterer verweist auf Abschnitt 3 (§ 5 UrhG amtliche Werke) für die in der App dargestellten Norm-Texte. Recl∆Im ist damit aus Recht-Sicht so weit, wie fai_web es ist — und gleichermaßen reif für eine öffentliche Sichtbarkeit, sobald Methodik-Beirat + Volljuristen-Approval-Kette stehen. Signed-off-by: flemming-it --- app/lib/pages/legal_page.dart | 193 +++++++++++++++++++--------------- 1 file changed, 108 insertions(+), 85 deletions(-) diff --git a/app/lib/pages/legal_page.dart b/app/lib/pages/legal_page.dart index 5380740..7f84354 100644 --- a/app/lib/pages/legal_page.dart +++ b/app/lib/pages/legal_page.dart @@ -5,24 +5,18 @@ import '../theme/reclaim_tokens.dart'; import '../widgets/reclaim_card.dart'; /// Combined legal-information page. Six sections in the order -/// a careful reader cares about them: -/// -/// 1. Disclaimer (kein Rechtsrat) — top, most visible -/// 2. EU AI Act Art. 50 (Transparenz) -/// 3. Quellen + Urheberrecht (§ 5 UrhG) -/// 4. Datenschutz (DSGVO Art. 13) -/// 5. Impressum (§ 5 TMG, § 18 MStV) -/// 6. Open Source + Lizenz -/// -/// Each section carries placeholder markers `[PLACEHOLDER]` -/// where the deployment-specific value (Anbieter-Adresse, -/// AVV-Stand, Hosting-Provider) must be filled in before any -/// public publication. The text is drafted conservatively; -/// review by einem Volljuristen bleibt obligatorisch vor der -/// ersten öffentlichen Veröffentlichung. +/// a careful reader cares about them. The legal-entity data +/// (Anbieter, Anschrift, USt-IdNr., Hosting-Provider, …) mirrors +/// the upstream fai_web (`flemming.ai`) authoritative version +/// to keep the public-facing F∆I posture consistent across +/// surfaces. class LegalPage extends StatelessWidget { const LegalPage({super.key}); + static const _email = 'contact@flemming.ai'; + static const _phone = '+49 30 66302929'; + static const _stand = 'Stand: Juni 2026'; + @override Widget build(BuildContext context) { final t = Theme.of(context).textTheme; @@ -56,7 +50,7 @@ class LegalPage extends StatelessWidget { _p(t, 'Alle Bewertungs-Zahlen tragen eine Evidenz-Tier-Stufe ' '(T1–T4). Stufen T3/T4 sind nicht peer-reviewed und ' - 'dienen ausschließlich als Hinweis-/Anregung-Wert. ' + 'dienen ausschließlich als Hinweis-/Anregungs-Wert. ' 'Eine Reform- oder Streichungs-Empfehlung der ' 'Anwendung ist ein methodischer Vorschlag, keine ' 'politische Forderung.'), @@ -74,8 +68,7 @@ class LegalPage extends StatelessWidget { // 2. AI Act ReclaimCard( child: _Section( - title: - '2. EU AI Act — Transparenz nach Art. 50', + title: '2. EU AI Act — Transparenz nach Art. 50', children: [ _p(t, 'Recl∆Im setzt Künstliche-Intelligenz-Komponenten ein: ' @@ -118,8 +111,7 @@ class LegalPage extends StatelessWidget { '§ 5 UrhG und damit gemeinfrei. Die kanonischen Quellen ' 'sind verlinkt und durch SHA-256-Prüfsummen im ' 'Audit-Log nachvollziehbar.'), - _p(t, - 'Primärquellen (T1):'), + _p(t, 'Primärquellen (T1):'), _bullet(t, 'Bundesrecht: gesetze-im-internet.de (BMJ) — § 5 UrhG.'), _bullet(t, @@ -128,8 +120,7 @@ class LegalPage extends StatelessWidget { _bullet(t, 'Landesrecht Berlin: gesetze.berlin.de / ' 'landesrecht-berlin.de — § 5 UrhG.'), - _p(t, - 'Sekundärquellen (T1/T2):'), + _p(t, 'Sekundärquellen (T1/T2):'), _bullet(t, 'Nationaler Normenkontrollrat (NKR) — ' 'Bürokratiekosten-Datenbank, Methodenleitfaden.'), @@ -141,8 +132,8 @@ class LegalPage extends StatelessWidget { 'Verbands-Erhebungen mit Quellen-Angabe.'), _p(t, 'Eigene Methodik und Software-Code sind unter ' - 'Apache License 2.0 veröffentlicht; Code-Repository: ' - 'git.flemming.ai/fai/reclaim.'), + 'Apache License 2.0 veröffentlicht; ' + 'Code-Repository: git.flemming.ai/fai/reclaim.'), ], ), ), @@ -151,41 +142,55 @@ class LegalPage extends StatelessWidget { // 4. Datenschutz ReclaimCard( child: _Section( - title: - '4. Datenschutzerklärung (DSGVO Art. 13)', + title: '4. Datenschutzerklärung (DSGVO Art. 13)', children: [ + _h(t, 'Verantwortlicher'), _p(t, - 'Verantwortlicher i.S.d. Art. 4 Nr. 7 DSGVO: ' - '[PLACEHOLDER — Name und Anschrift des Anbieters ' - 'einsetzen].'), + 'Verantwortlich für die Datenverarbeitung in dieser ' + 'Anwendung ist Dr. Stefan Flemming ' + '(Flemming.IT — Beratung und Entwicklung), ' + 'Dardanellenweg 41, 12109 Berlin, Deutschland. ' + 'Kontakt: $_email'), + _h(t, 'Hosting & Server-Logs'), _p(t, - 'Diese Anwendung verarbeitet personenbezogene Daten ' - 'nur in dem Umfang, der für ihren Betrieb erforderlich ' - 'ist. In der Demo-Konfiguration werden keine ' - 'personenbezogenen Daten erhoben; alle Pilot-Norm-Daten ' - 'sind lokal im Browser/auf dem Endgerät gespeichert.'), - _p(t, 'Beim Aufruf der Anwendung über das Internet:'), - _bullet(t, - 'Hosting-Provider: [PLACEHOLDER — etwa Hetzner Online ' - 'GmbH, Falkenstein, EU-Hosting]. AVV nach Art. 28 ' - 'DSGVO abgeschlossen.'), - _bullet(t, - 'Server-Logs (IP-Adresse, User-Agent, Zeitstempel): ' - 'für 7 Tage zur Missbrauchs-Abwehr (Rechtsgrundlage ' - 'Art. 6 Abs. 1 lit. f DSGVO, berechtigtes Interesse).'), - _bullet(t, - 'Kein Tracking, keine Analytics, keine ' - 'Marketing-Cookies.'), + 'Wird die Anwendung als Webseite bereitgestellt, läuft ' + 'sie auf Servern der Hetzner Online GmbH, ' + 'Industriestr. 25, 91710 Gunzenhausen, Deutschland. ' + 'Beim Aufruf werden technisch notwendige Zugriffsdaten ' + '(IP-Adresse, Datum/Uhrzeit, abgerufene Ressource, ' + 'Referrer, User-Agent) in Server-Logfiles verarbeitet. ' + 'Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO ' + '(berechtigtes Interesse an Betrieb und Sicherheit). ' + 'Mit Hetzner besteht ein Vertrag zur Auftragsverarbeitung ' + 'gemäß Art. 28 DSGVO; Server-Logfiles werden nach ' + 'spätestens 14 Tagen gelöscht.'), _p(t, - 'Betroffenenrechte (Art. 15–22 DSGVO): Auskunft, ' - 'Berichtigung, Löschung, Einschränkung, Datenübertragbarkeit, ' - 'Widerspruch. Kontakt: ' - '[PLACEHOLDER — Kontakt-E-Mail].'), + 'Im Desktop-/Mock-Modus werden keine personenbezogenen ' + 'Daten erhoben; alle Daten verbleiben lokal auf dem ' + 'Endgerät.'), + _h(t, 'Cookies & Tracking'), _p(t, - 'Beschwerderecht bei der Aufsichtsbehörde: ' - 'Berliner Beauftragte für Datenschutz und ' - 'Informationsfreiheit, Friedrichstr. 219, 10969 Berlin, ' - 'mailbox@datenschutz-berlin.de.'), + 'Die Anwendung setzt keine Tracking- oder ' + 'Marketing-Cookies und bindet keine externen ' + 'Analysedienste ein. Eine Cookie-Einwilligung ist daher ' + 'nicht erforderlich.'), + _h(t, 'Kontaktaufnahme'), + _p(t, + 'Wenn Sie uns per E-Mail kontaktieren, verarbeiten wir ' + 'die übermittelten Daten zur Bearbeitung Ihrer Anfrage ' + '(Art. 6 Abs. 1 lit. b bzw. f DSGVO). Die Daten werden ' + 'gelöscht, sobald sie für den Zweck nicht mehr ' + 'erforderlich sind.'), + _h(t, 'Ihre Rechte'), + _p(t, + 'Sie haben das Recht auf Auskunft, Berichtigung, ' + 'Löschung, Einschränkung der Verarbeitung, ' + 'Datenübertragbarkeit und Widerspruch ' + '(Art. 15–21 DSGVO) sowie das Recht auf Beschwerde ' + 'bei einer Aufsichtsbehörde, etwa der Berliner ' + 'Beauftragten für Datenschutz und Informationsfreiheit, ' + 'Friedrichstr. 219, 10969 Berlin.'), + _p(t, _stand), ], ), ), @@ -194,26 +199,48 @@ class LegalPage extends StatelessWidget { // 5. Impressum ReclaimCard( child: _Section( - title: - '5. Impressum (§ 5 TMG, § 18 Abs. 2 MStV)', + title: '5. Impressum', children: [ + _h(t, 'Angaben gemäß § 5 DDG'), _p(t, - 'Anbieter: [PLACEHOLDER — Name].'), + 'Dr. Stefan Flemming\n' + 'Flemming.IT — Beratung und Entwicklung, freiberuflich ' + '(www.flemming.it)\n' + 'Dardanellenweg 41\n' + '12109 Berlin\n' + 'Deutschland'), + _h(t, 'Kontakt'), + _p(t, 'E-Mail: $_email\nTelefon: $_phone'), + _h(t, 'Umsatzsteuer-ID'), _p(t, - 'Anschrift: [PLACEHOLDER — Straße, Hausnummer, ' - 'PLZ, Ort, Land].'), + 'Umsatzsteuer-Identifikationsnummer gemäß § 27a UStG: ' + 'DE269393425'), + _h(t, 'Verantwortlich i.S.d. § 18 Abs. 2 MStV'), + _p(t, 'Dr. Stefan Flemming, Anschrift wie oben.'), + _h(t, 'Haftung für Inhalte'), _p(t, - 'Kontakt: [PLACEHOLDER — E-Mail, ggf. Telefon].'), + 'Als Diensteanbieter sind wir gemäß § 7 Abs. 1 DDG für ' + 'eigene Inhalte auf diesen Seiten nach den allgemeinen ' + 'Gesetzen verantwortlich. Nach §§ 8 bis 10 DDG sind wir ' + 'als Diensteanbieter jedoch nicht verpflichtet, ' + 'übermittelte oder gespeicherte fremde Informationen ' + 'zu überwachen oder nach Umständen zu forschen, die ' + 'auf eine rechtswidrige Tätigkeit hinweisen.'), + _h(t, 'Haftung für Links'), _p(t, - 'Vertretungsberechtigt: [PLACEHOLDER — bei Vereinen, ' - 'GmbHs etc.].'), + 'Unser Angebot enthält ggf. Links zu externen Websites ' + 'Dritter, auf deren Inhalte wir keinen Einfluss haben. ' + 'Deshalb können wir für diese fremden Inhalte auch ' + 'keine Gewähr übernehmen. Für die Inhalte der ' + 'verlinkten Seiten ist stets der jeweilige Anbieter ' + 'oder Betreiber verantwortlich.'), + _h(t, 'Urheberrecht'), _p(t, - 'Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV: ' - '[PLACEHOLDER — Name und ladungsfähige Anschrift, ' - 'in der Regel identisch mit Anbieter].'), - _p(t, - 'Umsatzsteuer-Identifikationsnummer / Register-' - 'eintrag, sofern einschlägig: [PLACEHOLDER].'), + 'Die durch die Seitenbetreiber erstellten Inhalte und ' + 'Werke auf diesen Seiten unterliegen dem deutschen ' + 'Urheberrecht. Beiträge Dritter sind als solche ' + 'gekennzeichnet. Davon unberührt bleibt § 5 UrhG für ' + 'die wiedergegebenen amtlichen Werke (vgl. Abschnitt 3).'), _p(t, 'Plattform der Europäischen Kommission zur ' 'außergerichtlichen Online-Streitbeilegung (Art. 14 ' @@ -221,6 +248,7 @@ class LegalPage extends StatelessWidget { 'nicht bereit oder verpflichtet, an ' 'Streitbeilegungsverfahren vor einer ' 'Verbraucherschlichtungsstelle teilzunehmen.'), + _p(t, _stand), ], ), ), @@ -252,29 +280,15 @@ class LegalPage extends StatelessWidget { ), const SizedBox(height: ReclaimSpace.sm), _p(t, - 'Plattform: Ch∆In (Apache 2.0, ' - 'git.flemming.ai/fai/chain-private). Methodische ' - 'Vorbilder und Lizenz-Hinweise stehen in der Datei ' - 'NOTICE im Repository.'), + 'Plattform: Ch∆In (Apache 2.0). Methodische Vorbilder ' + 'und Lizenz-Hinweise stehen in der Datei NOTICE im ' + 'Repository.'), _p(t, 'Beiträge willkommen. DCO Sign-off und Conventional ' 'Commits in Englisch sind Konvention.'), ], ), ), - const SizedBox(height: ReclaimSpace.xxl), - - Text( - 'Hinweis: Vor der ersten öffentlichen Veröffentlichung ' - 'müssen alle [PLACEHOLDER]-Stellen durch konkrete ' - 'Anbieter-Angaben ersetzt und das gesamte Dokument von ' - 'einem Volljuristen geprüft werden. Diese Seite ist eine ' - 'methodische Vorlage.', - style: t.labelSmall?.copyWith( - color: ReclaimColors.tierT4, - fontStyle: FontStyle.italic, - ), - ), ], ), ); @@ -301,6 +315,15 @@ class _Section extends StatelessWidget { } } +Widget _h(TextTheme t, String s) => Padding( + padding: const EdgeInsets.only( + top: ReclaimSpace.sm, + bottom: 4, + ), + child: Text(s, + style: t.titleMedium?.copyWith(color: ReclaimColors.signal)), + ); + Widget _p(TextTheme t, String s) => Padding( padding: const EdgeInsets.only(bottom: ReclaimSpace.sm), child: SelectableText(s, style: t.bodyLarge?.copyWith(height: 1.55)),