aboutsummaryrefslogtreecommitdiff
path: root/src/main/resources/eu
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/resources/eu')
-rw-r--r--src/main/resources/eu/mulk/aendggner/web/datenschutz.html41
-rw-r--r--src/main/resources/eu/mulk/aendggner/web/impressum.html26
-rw-r--r--src/main/resources/eu/mulk/aendggner/web/index.html62
-rw-r--r--src/main/resources/eu/mulk/aendggner/web/style.css114
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);
+}