docs(legal): fill Impressum + Datenschutz from authoritative fai_web data

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 <sf@flemming.it>
This commit is contained in:
flemming-it 2026-06-18 13:58:29 +02:00
parent 214f909c1f
commit 7efe84de34

View file

@ -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 FI 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 '
'(T1T4). 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. 1522 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. 1521 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)),