diff options
Diffstat (limited to 'src/main/resources/eu')
4 files changed, 243 insertions, 0 deletions
diff --git a/src/main/resources/eu/mulk/aendggner/web/datenschutz.html b/src/main/resources/eu/mulk/aendggner/web/datenschutz.html new file mode 100644 index 0000000..65ec0c9 --- /dev/null +++ b/src/main/resources/eu/mulk/aendggner/web/datenschutz.html @@ -0,0 +1,41 @@ +<!doctype html> +<html lang="de"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Datenschutz — ÄndGgner</title> + <link rel="stylesheet" href="/style.css"> +</head> +<body> + <main> + <h1>Datenschutzerklärung</h1> + <p> + <strong>TODO vor dem Livegang:</strong> Bitte prüfen und um die für diesen konkreten Server + zutreffenden Angaben ergänzen (Betreiber, Kontakt, tatsächliche Speicherdauer der + Zugriffslogs, Hosting-Anbieter). + </p> + + <h2>Hochgeladene Dateien</h2> + <p> + Stammgesetz und Änderungsgesetz(e) werden ausschließlich im Arbeitsspeicher bzw. in + temporären Dateien verarbeitet, um die Synopse zu erzeugen. Nach Auslieferung der Antwort + werden diese temporären Dateien sofort gelöscht. Es findet keine dauerhafte Speicherung des + Inhalts statt. + </p> + + <h2>Zugriffsprotokolle</h2> + <p> + Wie bei jedem Webserver werden beim Aufruf technische Zugriffsdaten (u. a. IP-Adresse, + Zeitpunkt, aufgerufene Adresse) für einen begrenzten Zeitraum zur Absicherung des Betriebs + protokolliert. + </p> + + <h2>Keine Cookies, keine Konten, kein Tracking</h2> + <p> + Dieser Dienst verwendet keine Cookies, erfordert keine Registrierung und bindet keine + Analyse- oder Tracking-Dienste Dritter ein. + </p> + </main> + <footer><a href="/">Zurück zum Formular</a></footer> +</body> +</html> diff --git a/src/main/resources/eu/mulk/aendggner/web/impressum.html b/src/main/resources/eu/mulk/aendggner/web/impressum.html new file mode 100644 index 0000000..303db8e --- /dev/null +++ b/src/main/resources/eu/mulk/aendggner/web/impressum.html @@ -0,0 +1,26 @@ +<!doctype html> +<html lang="de"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Impressum — ÄndGgner</title> + <link rel="stylesheet" href="/style.css"> +</head> +<body> + <main> + <h1>Impressum</h1> + <p> + <strong>TODO vor dem Livegang:</strong> Diese Seite muss durch die nach § 5 DDG + (Digitale-Dienste-Gesetz, vormals § 5 TMG) vorgeschriebenen Angaben ersetzt werden, bevor + dieser Dienst öffentlich betrieben wird. + </p> + <address> + [Name]<br> + [Straße, Hausnummer]<br> + [PLZ, Ort]<br> + [E-Mail-Adresse] + </address> + </main> + <footer><a href="/">Zurück zum Formular</a></footer> +</body> +</html> diff --git a/src/main/resources/eu/mulk/aendggner/web/index.html b/src/main/resources/eu/mulk/aendggner/web/index.html new file mode 100644 index 0000000..ec2511a --- /dev/null +++ b/src/main/resources/eu/mulk/aendggner/web/index.html @@ -0,0 +1,62 @@ +<!doctype html> +<html lang="de"> +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>ÄndGgner — Änderungsgesetze konsolidieren</title> + <link rel="stylesheet" href="/style.css"> +</head> +<body> + <header> + <h1>ÄndGgner</h1> + <p class="tagline"> + Änderungsgesetze automatisch auf ein Stammgesetz anwenden und als Synopse darstellen. + </p> + </header> + + <main> + <form method="post" action="/synopse" enctype="multipart/form-data"> + <div class="field"> + <label for="stamm">Stammgesetz</label> + <input type="file" id="stamm" name="stamm" required> + <p class="hint"> + gii-Norm-XML von gesetze-im-internet.de, oder — für bayerisches Landesrecht — die + konsolidierte Fassung von gesetze-bayern.de (PDF oder Klartext). + </p> + </div> + + <div class="field"> + <label for="aenderung">Änderungsgesetz(e)</label> + <input type="file" id="aenderung" name="aenderung" multiple required> + <p class="hint"> + Ein oder mehrere BGBl-PDFs oder Klartextdateien. Werden bei Mehrfachauswahl in der + gewählten Reihenfolge nacheinander angewendet. + </p> + </div> + + <div class="field checkbox"> + <label> + <input type="checkbox" name="vollstaendig"> + Unveränderte Vorschriften mit in die Synopse aufnehmen + </label> + </div> + + <button type="submit">Synopse erzeugen</button> + </form> + + <p class="disclaimer"> + Die Synopse wird automatisch erstellt und ist <strong>ohne Gewähr</strong> für Vollständigkeit + und Richtigkeit; sie ersetzt keine Rechtsberatung. Uneindeutige Änderungsbefehle werden zur + manuellen Prüfung markiert statt stillschweigend verworfen. Hochgeladene Dateien werden + ausschließlich zur Erzeugung der Synopse verarbeitet und danach sofort wieder gelöscht — es + findet keine dauerhafte Speicherung statt. Bitte nur Rechtstexte hochladen. + </p> + </main> + + <footer> + <a href="/impressum">Impressum</a> · + <a href="/datenschutz">Datenschutz</a> · + <a href="https://TODO-QUELLCODE-URL-EINTRAGEN">Quellcode (AGPLv3)</a> + </footer> +</body> +</html> diff --git a/src/main/resources/eu/mulk/aendggner/web/style.css b/src/main/resources/eu/mulk/aendggner/web/style.css new file mode 100644 index 0000000..6e2ec70 --- /dev/null +++ b/src/main/resources/eu/mulk/aendggner/web/style.css @@ -0,0 +1,114 @@ +:root { + color-scheme: light dark; + --fg: #1b1b1b; + --bg: #fdfdfb; + --muted: #5a5a54; + --accent: #6b4423; + --border: #d8d3c4; +} + +@media (prefers-color-scheme: dark) { + :root { + --fg: #e8e6df; + --bg: #1c1b18; + --muted: #a6a296; + --accent: #c99a6c; + --border: #3a382f; + } +} + +* { + box-sizing: border-box; +} + +body { + margin: 0 auto; + padding: 2rem 1.25rem 3rem; + max-width: 40rem; + font-family: "Georgia", "Times New Roman", serif; + color: var(--fg); + background: var(--bg); + line-height: 1.5; +} + +header { + margin-bottom: 2rem; +} + +h1 { + margin: 0 0 0.25rem; + font-size: 1.75rem; +} + +.tagline { + color: var(--muted); + margin: 0; +} + +.field { + margin-bottom: 1.25rem; +} + +label { + display: block; + font-weight: bold; + margin-bottom: 0.35rem; +} + +.field.checkbox label { + font-weight: normal; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.hint { + margin: 0.35rem 0 0; + font-size: 0.875rem; + color: var(--muted); +} + +input[type="file"] { + width: 100%; + padding: 0.4rem; + border: 1px solid var(--border); + border-radius: 4px; + background: transparent; + color: inherit; +} + +button { + font: inherit; + font-weight: bold; + padding: 0.6rem 1.5rem; + border: 1px solid var(--accent); + border-radius: 4px; + background: var(--accent); + color: var(--bg); + cursor: pointer; +} + +button:hover { + filter: brightness(1.1); +} + +.disclaimer { + margin-top: 2rem; + padding: 1rem; + border: 1px solid var(--border); + border-radius: 6px; + font-size: 0.875rem; + color: var(--muted); +} + +footer { + margin-top: 2.5rem; + padding-top: 1rem; + border-top: 1px solid var(--border); + font-size: 0.875rem; + color: var(--muted); +} + +footer a { + color: var(--accent); +} |
