feat(legal): echte Betreiberangaben eingesetzt, Impressum als Privatperson (v1.7.6)

- Betreiber: Perparim Ziberi (Privatperson), Anglikerstrasse 56, 5612 Villmergen;
  Kontakt app@lageplan.ch, Datenschutz datenschutz@lageplan.ch
- Serverstandort/Hosting: Eigenbetrieb, Schweiz (beim Betreiber) — MinIO/PostgreSQL Region = Schweiz
- Backup-Aufbewahrung: bis zu 30 Tage · Gerichtsstand: Wohnsitz des Betreibers (Schweiz)
- Impressum: Firma "Kingstickers Ziberi" + UID entfernt (auf Wunsch Privatperson), Urheberrecht
  und Copyright auf Perparim Ziberi umgestellt; Home-Footer-Copyright angeglichen
- Alle Legal-Platzhalter damit gefüllt (keine Build-Warnung mehr)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Pepe Ziberi
2026-07-23 12:47:04 +02:00
parent a14753c994
commit 836b231c42
4 changed files with 29 additions and 27 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "lageplan",
"version": "1.7.5",
"version": "1.7.6",
"description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation",
"private": true,
"scripts": {

View File

@@ -31,21 +31,23 @@ export default function ImpressumPage() {
<section>
<h2 className="text-xl font-semibold text-gray-900 mb-3">Betreiber der Webseite</h2>
<div className="bg-gray-50 rounded-xl p-6 space-y-1">
<p className="font-semibold text-gray-900">Purepixel</p>
<p>Ein Angebot der Firma Kingstickers Ziberi</p>
<p className="mt-3">Perparim Ziberi</p>
<p>Anglikerstrasse 56</p>
<p className="font-semibold text-gray-900">Perparim Ziberi</p>
<p className="text-gray-500 text-sm">Privatperson</p>
<p className="mt-3">Anglikerstrasse 56</p>
<p>5612 Villmergen</p>
<p>Schweiz</p>
<p className="mt-3">
<span className="text-gray-500">UID:</span> CHE-353.865.879
</p>
<p>
<span className="text-gray-500">E-Mail:</span>{' '}
<a href="mailto:app@lageplan.ch" className="text-red-600 hover:text-red-500">
app@lageplan.ch
</a>
</p>
<p>
<span className="text-gray-500">Datenschutz:</span>{' '}
<a href="mailto:datenschutz@lageplan.ch" className="text-red-600 hover:text-red-500">
datenschutz@lageplan.ch
</a>
</p>
</div>
</section>
@@ -89,9 +91,9 @@ export default function ImpressumPage() {
<h2 className="text-xl font-semibold text-gray-900 mb-3">Urheberrechte</h2>
<p>
Die Urheber- und alle anderen Rechte an Inhalten, Bildern, Fotos oder anderen Dateien auf
dieser Website gehören ausschliesslich der Firma Kingstickers Ziberi oder den speziell
genannten Rechtsinhabern. Für die Reproduktion jeglicher Elemente ist die schriftliche
Zustimmung der Urheberrechtsträger im Voraus einzuholen.
dieser Website gehören ausschliesslich Perparim Ziberi oder den speziell genannten
Rechtsinhabern. Für die Reproduktion jeglicher Elemente ist die schriftliche Zustimmung der
Urheberrechtsträger im Voraus einzuholen.
</p>
</section>
@@ -142,7 +144,7 @@ export default function ImpressumPage() {
</div>
<div className="mt-12 pt-8 border-t border-gray-100 text-center">
<p className="text-sm text-gray-400">&copy; {new Date().getFullYear()} Lageplan Purepixel / Kingstickers Ziberi</p>
<p className="text-sm text-gray-400">&copy; {new Date().getFullYear()} Lageplan Perparim Ziberi</p>
</div>
</main>
</div>

View File

@@ -538,7 +538,7 @@ export default function LandingPage() {
</div>
</div>
<div className="border-t border-gray-100 mt-8 pt-6 text-center space-y-1">
<p className="text-sm text-gray-500">&copy; {new Date().getFullYear()} Lageplan Purepixel. Alle Rechte vorbehalten.</p>
<p className="text-sm text-gray-500">&copy; {new Date().getFullYear()} Lageplan Perparim Ziberi. Alle Rechte vorbehalten.</p>
<p className="text-xs text-gray-500">Taktische Symbole: Bildquelle Feuerwehr Koordination Schweiz FKS</p>
<p className="text-xs text-gray-400 mt-1">v{process.env.APP_VERSION}</p>
</div>

View File

@@ -59,11 +59,11 @@ export const legal = {
* "Pepe Ziberi / Purepixel" zugeschrieben; die rechtsverbindliche Bezeichnung inkl.
* Rechtsform muss der Betreiber bestätigen.
*/
operatorName: env('LEGAL_OPERATOR_NAME', 'Pepe Ziberi'),
/** Rechtsform (z.B. Einzelunternehmen, Verein, GmbH) muss festgelegt werden */
operatorLegalForm: env('LEGAL_OPERATOR_FORM', '[RECHTSFORM]'),
operatorName: env('LEGAL_OPERATOR_NAME', 'Perparim Ziberi'),
/** Rechtsform */
operatorLegalForm: env('LEGAL_OPERATOR_FORM', 'Privatperson'),
/** Vollständige Postadresse des Betreibers */
postalAddress: env('LEGAL_POSTAL_ADDRESS', '[POSTADRESSE]'),
postalAddress: env('LEGAL_POSTAL_ADDRESS', 'Anglikerstrasse 56, 5612 Villmergen'),
// ─── Kontakt ───────────────────────────────────────────────
/** Allgemeine Support-/Kontaktadresse (im Repo öffentlich verwendet) */
@@ -81,16 +81,16 @@ export const legal = {
// ─── Recht & Gerichtsstand ────────────────────────────────
country: 'Schweiz',
governingLaw: 'Schweizer Recht',
/** Gerichtsstand nur angeben, wenn juristisch sinnvoll/bestätigt; sonst Platzhalter. */
jurisdiction: env('LEGAL_JURISDICTION', '[GERICHTSSTAND]'),
/** Gerichtsstand: gesetzlicher Standard am Wohnsitz des Betreibers; zwingende Gerichtsstände vorbehalten. */
jurisdiction: env('LEGAL_JURISDICTION', 'Wohnsitz des Betreibers in der Schweiz'),
// ─── Infrastruktur ────────────────────────────────────────
/** Hostinganbieter muss bestätigt werden (im Repo nicht eindeutig belegt) */
hostingProvider: env('LEGAL_HOSTING_PROVIDER', '[HOSTINGANBIETER]'),
/** Serverstandort muss für ALLE Anbieter, Backups und Logs bestätigt werden */
serverLocation: env('LEGAL_SERVER_LOCATION', '[SERVERSTANDORT]'),
/** Aufbewahrungsfrist von Sicherungskopien muss festgelegt werden */
backupRetention: env('LEGAL_BACKUP_RETENTION', '[BACKUP-AUFBEWAHRUNGSFRIST]'),
/** Hostinganbieter: Eigenbetrieb (selbst gehosteter Server beim Betreiber). */
hostingProvider: env('LEGAL_HOSTING_PROVIDER', 'Eigenbetrieb (selbst gehosteter Server beim Betreiber)'),
/** Serverstandort der primären Daten (DB/Objektspeicher). */
serverLocation: env('LEGAL_SERVER_LOCATION', 'Schweiz (beim Betreiber, Villmergen AG)'),
/** Aufbewahrungsfrist von Sicherungskopien. */
backupRetention: env('LEGAL_BACKUP_RETENTION', 'bis zu 30 Tage'),
// ─── Externe Dienstleister (Ist-Zustand aus dem Code abgeleitet) ──
// Nichts erfinden: nur tatsächlich im Code kontaktierte Dienste. Sitz/Region, die nicht
@@ -104,8 +104,8 @@ export const legal = {
{ name: 'Open-Elevation', purpose: 'Höhendaten (Fallback)', data: 'Koordinaten', region: '[REGION]' },
{ name: 'Stripe', purpose: 'Zahlungsabwicklung freiwilliger Unterstützungsbeiträge', data: 'Betrag, freiwilliger Name/Nachricht, Zahlungsdaten (direkt bei Stripe)', region: '[REGION u.a. USA/EU; Auslandbearbeitung möglich]', optional: true },
{ name: 'SMTP-/E-Mail-Anbieter', purpose: 'System-E-Mails (Verifizierung, Reset, Kontakt, Einladungen)', data: 'E-Mail-Adresse, Nachrichteninhalt', region: '[REGION abhängig vom konfigurierten Anbieter]', optional: true },
{ name: 'MinIO (Objektspeicher)', purpose: 'Datei-/Bild-Uploads (Pläne, Logos, Symbole)', data: 'hochgeladene Dateien', region: '[SERVERSTANDORT]' },
{ name: 'PostgreSQL (Datenbank)', purpose: 'Primäre Datenhaltung', data: 'Konto-, Organisations-, Plan- und Journaldaten', region: '[SERVERSTANDORT]' },
{ name: 'MinIO (Objektspeicher, Eigenbetrieb)', purpose: 'Datei-/Bild-Uploads (Pläne, Logos, Symbole)', data: 'hochgeladene Dateien', region: 'Schweiz (beim Betreiber)' },
{ name: 'PostgreSQL (Datenbank, Eigenbetrieb)', purpose: 'Primäre Datenhaltung', data: 'Konto-, Organisations-, Plan- und Journaldaten', region: 'Schweiz (beim Betreiber)' },
] as ExternalProcessor[],
// ─── Rechtsdokumente: bewusst gesetzte Versionen ──────────