Files
Webklar-Kundenbereich/docs/superpowers/specs/2026-09-27-vertraege-hosting-abo-design.md
T
ClaudeandClaude Opus 5.5 65ab5013cb Konzept: Verträge, Hosting-Abo und E-Mail-Zusatzspeicher
Entwurf zur Durchsicht, noch keine Umsetzung. Beschreibt den Bereich
"Verträge", das Hosting-Abo (15 €), beliebig viele Postfächer im
Wartungs-Abo, den Wechsel Hosting -> Wartung (12 neue Monate) und den
Zusatzspeicher (5 GB je 1 €/Monat, Stückzahl im Stripe-Abo) samt
betroffener Rechtstexte, Mails und Dateien.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 14:54:10 +00:00

30 KiB
Raw Blame History

Verträge, Hosting-Abo und E-Mail-Zusatzspeicher – Konzept

Stand 27.09.2026 · Entwurf zur Durchsicht · umgesetzt ist noch nichts

Betrifft das Kundenportal (project.webklar.com), die Website (webklar.com), das Ticketsystem (ticket.webklar.com), Stripe, Hetzner konsoleH und die Rechtstexte.

1. Ziel

  1. Der Bereich „Wartung“ im Kundenportal heißt künftig Verträge. Dort liegt das Abo des Kunden.
  2. Neues Hosting-Abo für 15 € im Monat: Wir hosten die Website, dazu kommen 1 Domain und 1 E-Mail-Postfach.
  3. Wartungs-Abo (50 €): Statt einem Postfach gibt es beliebig viele, zusammen 5 GB.
  4. Hosting-Kunden können jederzeit ins Wartungs-Abo wechseln, auch in den ersten 12 Monaten.
  5. E-Mail-Zusatzspeicher: je 5 GB für 1 € im Monat, per Plus und Minus im eigenen Bereich, abgerechnet im laufenden Abo über Stripe.

Nicht Teil dieses Konzepts:

  • mehrere Abos pro Kunde, etwa für zwei Websites. Pro Kunde gibt es weiterhin höchstens ein laufendes Abo.
  • Postfächer selbst im Portal anlegen oder löschen. Hetzner bietet dafür keine Schnittstelle, deshalb läuft das per Anfrage im Chat.
  • jährliche Zahlung.
  • Rückwechsel von Wartung zu Hosting per Knopf. Das geht nur auf Anfrage (3.6).

2. Entscheidungen

Thema Entscheidung Herkunft
Name des Bereichs „Verträge“ Vorgabe
Preis Hosting-Abo 15,00 € pro Monat Vorgabe
Umfang Hosting-Abo siehe 3.1: ohne Arbeitsstunde, ohne Pflege der Website Vorschlag, bestätigt
Hosting-Abo nur für statische Websites (3.2) Vorschlag, bestätigt
Domain im Hosting-Abo ja, 1 Domain Vorschlag, bestätigt
Mindestlaufzeit beide Abos 12 Monate ab Leistungsbeginn, danach monatlich kündbar Vorschlag, bestätigt
Postfächer Hosting: 1 Postfach, 5 GB. Wartung: beliebig viele, zusammen 5 GB Vorgabe
Wechsel Hosting → Wartung jederzeit, als neuer Vertrag. Mit dem Wechsel beginnen 12 neue Monate Mindestlaufzeit (Variante A) Vorgabe
Zusatzspeicher 5 GB je Paket für 1,00 € pro Monat, in beiden Abos, als zweite Position im selben Stripe-Abo Vorgabe
Aufbau der Rechtstexte eine gemeinsame Fassung für beide Abos (8.1) Vorschlag
Offene Einzelpunkte vorbelegt, siehe 13 Vorschlag, bitte prüfen

Alle Preise sind Endpreise. Gemäß § 19 UStG wird keine Umsatzsteuer berechnet.

3. Produkte

3.1 Leistungen im Vergleich

Hosting-Abo Wartungs-Abo
Preis 15,00 € pro Monat 50,00 € pro Monat
Website auf unserem Server in Deutschland (Hetzner, Falkenstein) ✓ ✓
SSL-Zertifikat, tägliche Datensicherung, Überwachung der Erreichbarkeit ✓ ✓
Updates von Betriebssystem und Server-Software ✓ ✓
Updates und Pflege der Website selbst – ✓
Geeignet für statische Websites alle Websites und Web-Anwendungen, die wir erstellt oder zur Betreuung übernommen haben
Domain (.de, .com, .eu, .net, .org) 1 1
E-Mail 1 Postfach, 5 GB beliebig viele Postfächer, zusammen 5 GB
Zusatzspeicher je 5 GB für 1,00 € pro Monat je 5 GB für 1,00 € pro Monat
Arbeitszeit nur nach Freigabe, 100 € pro Stunde in 15-Minuten-Schritten 1 Stunde pro Monat inklusive, darüber 100 € pro Stunde
Servicezeiten und Reaktion wie heute im Wartungs-Abo (Mo–Fr 9–17 Uhr, Antwort bis Ende des nächsten Werktags) wie heute
Mindestlaufzeit 12 Monate 12 Monate, auch nach einem Wechsel

3.2 Hosting-Abo: nur statische Websites

  • Statisch heißt: Der Webserver liefert die Dateien (HTML, CSS, JavaScript, Bilder) unverändert aus. Dazu gehören auch unsere React- und Vite-Seiten.
  • Nicht erlaubt sind ein CMS, ein Login, eine Datenbank und eigener serverseitiger Code wie PHP.
  • Der Grund: Eine dynamische Website ohne laufende Updates läge ungepflegt auf demselben Server wie Kundenportal, Datenbank und Rechnungen.
  • Kontaktformulare sind nur über einen Dienst möglich, den wir zentral betreiben und pflegen (siehe 13, Punkt 7).
  • Braucht eine Website später dynamische Teile, bieten wir den Wechsel ins Wartungs-Abo an.
  • Änderungen an der Website gibt es nur nach Freigabe und gegen 100 € pro Stunde, Anfrage im Chat. Die Behebung von Störungen an Server, Domain und Postfach ist inklusive, wie im Wartungs-Abo.

3.3 Postfächer (beide Abos)

  • Die Postfächer liegen bei Hetzner Webhosting, Rechenzentrum Nürnberg. Das Hosting-Abo hat 1 Postfach, das Wartungs-Abo beliebig viele.
  • Hetzner setzt die Speichergrenze je Postfach. „Zusammen 5 GB“ heißt: Die Grenzen aller Postfächer eines Kunden ergeben zusammen höchstens 5 GB plus Zusatzspeicher.
    • Wie der Speicher verteilt wird, bestimmt der Kunde. Ohne Vorgabe teilen wir gleichmäßig auf.
  • Ist die Grenze eines Postfachs erreicht, nimmt es keine neuen Mails mehr an. Darauf weisen Portal und Bedingungen hin.
  • Anlegen, Löschen, neues Passwort oder andere Aufteilung fragt der Kunde im Chat an. Der Knopf „Postfach anfragen“ füllt die Nachricht vor.
    • Wir setzen es in konsoleH um, in der Regel innerhalb eines Werktags.
    • Zugangsdaten geben wir nur dem Kunden oder den Personen, die er in Textform benennt.
  • Faire Nutzung:
    • Postfächer nur für den Kunden, seine Beschäftigten und seine Organisation
    • kein Weiterverkauf
    • kein Newsletter- oder Massenversand
    • Es gelten die Versandgrenzen des Anbieters.
  • Kapazität: Alle Kundenpostfächer liegen in unserem Hetzner-Paket und teilen sich dessen Speicher (S 10 GB, M 50 GB, L 100 GB, XL 300 GB).
    • Das Admin-Panel zeigt die Summe der vergebenen Kontingente: 5 GB je laufendem Abo plus alle Pakete Zusatzspeicher.
    • Bevor der belegte Speicher in konsoleH 80 % erreicht, wechseln wir ins nächstgrößere Paket.

3.4 E-Mail-Zusatzspeicher

Ein Paket hat 5 GB und kostet 1,00 € pro Monat. Jeder Kunde kann 0 bis 10 Pakete buchen, in beiden Abos, auch Bestandskunden mit Version 3.

Plus (Bestellung)

  • Direkt über dem Knopf steht eine Übersicht mit:
    • neuer Gesamtgröße
    • Mehrpreis pro Monat
    • anteiligem Betrag für den Rest des laufenden Monats (aus der Stripe-Vorschau)
    • Datum der nächsten Abbuchung
    • Link auf Bedingungen und Widerrufsbelehrung
  • Der Knopf heißt „Zahlungspflichtig bestellen“ (§ 312j Abs. 3 BGB). Der Vertrag kommt mit dem Klick zustande. Bezahlt wird mit der hinterlegten Zahlungsart.
  • Abrechnung:
    • Den Rest des laufenden Monats berechnet Stripe anteilig mit der nächsten Abbuchung, danach 1,00 € je Paket und Monat.
    • Pakete, die für den laufenden Monat schon bezahlt sind (etwa nach einem Minus im selben Monat), werden nicht noch einmal berechnet.
  • Bereitstellung: Wir stellen die Grenzen in konsoleH um, in der Regel innerhalb eines Werktags. Bis dahin zeigt das Portal „wird eingerichtet“.
  • Der Kunde bekommt eine Bestätigungsmail mit Zusammenfassung und den Vertragsbedingungen als PDF.

Minus

  • Der Knopf heißt „Speichern“. Die Änderung wirkt zum Ende des laufenden Abrechnungsmonats, ohne anteilige Erstattung.
  • Das Portal zeigt „ab TT.MM. X GB“.
  • Der Dialog weist darauf hin: Passen die gespeicherten Mails dann nicht mehr hinein, nimmt das betroffene Postfach keine neuen Mails an, bis wieder Platz ist.
  • Der Kunde bekommt eine Bestätigungsmail.

Widerruf

  • Jede Bestellung hat 14 Tage Widerrufsfrist.
  • Wir verlangen keinen ausdrücklichen Sofortbeginn und stellen trotzdem sofort bereit.
  • Bei Widerruf nehmen wir das Paket zurück und erstatten alles, was dafür gezahlt wurde. Wertersatz verlangen wir nicht.

Kündigung

  • Jederzeit per Minus oder über „Verträge hier kündigen“ mit der Auswahl „Nur den E-Mail-Zusatzspeicher“.
  • Der Zusatzspeicher endet automatisch mit dem Abo. Bei einem Wechsel ins Wartungs-Abo bleibt er unverändert.

3.5 Wechsel vom Hosting- ins Wartungs-Abo

  • Wer: Kunden mit laufendem, bezahltem Hosting-Abo (Stripe-Status active). Nicht möglich ist es in der Wartezeit bis zum Leistungsbeginn und bei offener Zahlung.
  • Wann: jederzeit, auch während der Mindestlaufzeit des Hosting-Abos.
  • Rechtlich: Es ist ein neuer Vertrag über das Wartungs-Abo. Das Hosting-Abo endet mit dem Wechsel im gegenseitigen Einvernehmen.
  • Bestellung:
    • Direkt über dem Knopf steht eine Übersicht mit:
      • Wartungs-Abo 50,00 € pro Monat
      • Zusatzspeicher, falls gebucht
      • Gutschrift für die ungenutzten Hosting-Tage
      • heute fälliger Betrag (aus der Stripe-Vorschau)
      • neuer Abbuchungstag
      • Ende der neuen Mindestlaufzeit
    • Der Kunde stimmt den Vertragsbedingungen (Version 4) einschließlich der Auftragsverarbeitung zu.
    • Pflicht-Häkchen: Der Kunde verlangt ausdrücklich, dass wir sofort beginnen, und nimmt die Folge für den Wertersatz zur Kenntnis (§ 357a Abs. 2 BGB). Einen späteren Beginn bietet der Wechsel nicht an.
    • Knopf „Zahlungspflichtig bestellen“.
  • Abrechnung:
    • Es bleibt dasselbe Stripe-Abo, der Preis wechselt von Hosting auf Wartung.
    • Der Abbuchungstag wird der Wechseltag.
    • Die ungenutzten Hosting-Tage werden auf der sofort fälligen Rechnung gutgeschrieben.
  • Leistung: Sie beginnt sofort. Die erste Stunde Arbeitszeit wird gutgeschrieben, sobald die Wechsel-Rechnung bezahlt ist, danach monatlich.
  • Mindestlaufzeit: 12 Monate ab dem Wechseltag.
  • Widerruf des Wechsels:
    • Das Hosting-Abo läuft zu den bisherigen Bedingungen weiter, als hätte es den Wechsel nicht gegeben, einschließlich seiner ursprünglichen Mindestlaufzeit.
    • Wir erstatten den Mehrbetrag, abzüglich Wertersatz nach § 357a Abs. 2 BGB (anteiliger Mehrpreis bis zum Widerruf).
    • Den Preis in Stripe stellen wir von Hand zurück, wie heute bei Widerrufen.
  • Rabatte und Guthaben: Ein laufender Angebotsrabatt läuft bis zu seinem Ende weiter. Guthaben aus einer Übernahmegutschrift wird weiter verrechnet.

3.6 Wechsel vom Wartungs- ins Hosting-Abo

  • Möglich erst nach Ablauf der Mindestlaufzeit des Wartungs-Abos, zum Ende eines Abrechnungsmonats. Der Kunde meldet den Wunsch in Textform (Chat oder E-Mail), einen Knopf im Portal gibt es dafür nicht.
  • Voraussetzung ist eine statische Website (3.2). Vorher legt der Kunde fest, welches Postfach bleibt. Die anderen exportieren wir auf Wunsch.
  • Es beginnt keine neue Mindestlaufzeit, das Hosting-Abo ist danach monatlich kündbar.
  • Nicht genutzte Arbeitszeit verfällt mit dem Wechsel, wie bei Vertragsende.
  • Umsetzung von Hand: In Stripe wechselt der Preis zum Ende des Abrechnungsmonats auf Hosting, ohne anteilige Verrechnung. Der Kunde bekommt eine Bestätigungsmail.

4. Kundenportal

4.1 Navigation

  • Menüpunkt „Verträge“: Er steht am Desktop in der Seitenleiste und in der App-Ansicht in der Tab-Leiste und ersetzt den Tab „Wartung“.
    • Hash #vertraege. Alte Links mit #wartung und #abo führen dorthin, #abo steht etwa in den Angebots-Mails.
  • Seitenleisten-Karte: „Ihre Wartung“ heißt künftig „Ihr Vertrag“. Sie zeigt:
    • den Produktnamen
    • die verfügbare Arbeitszeit, nur beim Wartungs-Abo
    • die nächste Abbuchung
    • die Hinweise wie heute (Zahlungsproblem, Widerrufsfrist, Übernahmegutschrift)
  • Konto-Menü, Gruppe „Verträge“:
    • Neuer erster Eintrag „Mein Vertrag“, er führt zu #vertraege.
    • „Vertragsbedingungen“ öffnet die Fassung, der der Kunde zugestimmt hat.
    • Die übrigen Einträge bleiben: „Abo verwalten & Rechnungen“, „Verträge hier kündigen“, „Vertrag widerrufen“.

4.2 Ansicht „Verträge“

Oben steht Mein Vertrag, wenn ein Abo läuft oder beendet ist:

  • Produkt, Monatspreis einschließlich Zusatzspeicher und Status (gekündigt, Zahlungsproblem)
  • nächste Abbuchung mit Betrag und Hinweis zur Laufzeit („Mindestlaufzeit bis …“)
  • nur beim Wartungs-Abo: das Stundenkonto als Unterseite wie heute
  • E-Mail-Speicher mit Plus und Minus (4.3) und dem Knopf „Postfach anfragen“
  • Unterlagen: Vertragsbedingungen in der zugestimmten Fassung (PDF) und Rechnungen (Stripe-Kundenportal)
  • „Übernahmegutschrift beantragen“
  • während einer laufenden Widerrufsfrist hervorgehoben „Vertrag widerrufen · bis TT.MM.“ (§ 356a BGB). Das gilt auch für Wechsel und Zusatzspeicher innerhalb ihrer Frist.
  • bei einem Zahlungsproblem „Zahlungsart aktualisieren“

Darunter:

  • Hosting-Kunden: eine Karte „Zum Wartungs-Abo wechseln“ mit den zusätzlichen Leistungen und dem Knopf.
  • Ohne laufendes Abo: beide Abos nebeneinander, jeweils mit „Abo abschließen“ und eigener Bestellseite (#bestellen-hosting, #bestellen-wartung). Persönliche Angebote erscheinen bei dem Abo, für das sie gelten.

4.3 Zusatzspeicher bedienen

E-Mail-Speicher      5 GB inklusive
Zusatzspeicher       [ − ]  2  [ + ]   × 5 GB  =  15 GB gesamt
                     + 2,00 € im Monat
                     [ Zahlungspflichtig bestellen ]
  • Der Knopf erscheint erst nach einer Änderung.
    • Mehr als bisher: Es folgt die Übersicht aus 3.4 und der Knopf „Zahlungspflichtig bestellen“.
    • Weniger als bisher: Es folgt der Hinweis auf das Monatsende und der Knopf „Speichern“.
  • Solange eine Erhöhung noch nicht eingerichtet ist, steht dort „wird eingerichtet“. Bei einer geplanten Reduzierung steht dort „ab TT.MM. X GB“.
  • Plus und Minus gehen nur bei Status active, also nicht in der Wartezeit bis zum Leistungsbeginn und nicht bei einem Zahlungsproblem.

4.4 Bestellseiten

  • Neuabschluss:
    • Der Ablauf bleibt wie heute:
      • Übersicht direkt über dem Knopf
      • Zustimmung einschließlich Auftragsverarbeitung
      • Wahl zwischen sofortigem Beginn und Beginn nach der Widerrufsfrist
      • „Zahlungspflichtig bestellen“, danach Stripe Checkout
    • Neu ist, dass jedes Produkt seine eigene Übersicht, seinen Preis und seinen Stripe-Hinweistext bekommt.
  • Wechsel:
    • Eigene Seite #wechsel nach 3.5, ohne Stripe Checkout. Belastet wird die hinterlegte Zahlungsart.
    • Verlangt die Bank eine Bestätigung (3-D Secure), leitet das Portal auf die Stripe-Zahlungsseite dieser Rechnung weiter.

4.5 Öffentliche Formulare ohne Login

  • kuendigen.html: Statt des festen „WEBklar Wartungs-Abo“ wählt der Kunde zwischen zwei Möglichkeiten (§ 312k Abs. 3 BGB verlangt eine eindeutige Bezeichnung des Vertrags):

    • „Mein Abo (Hosting- oder Wartungs-Abo, mit Zusatzspeicher)“
    • „Nur den E-Mail-Zusatzspeicher“

    Die Bestätigung nennt das tatsächliche Abo.

  • widerrufen.html: Der Kunde wählt die Bestellung aus (§ 356a BGB):

    • „Abschluss meines Abos“
    • „Wechsel ins Wartungs-Abo“
    • „E-Mail-Zusatzspeicher“
  • Server: Er ordnet die Erklärung wie heute über die E-Mail-Adresse zu. Die Auswahl bestimmt, was gekündigt oder widerrufen wird.

5. Stripe

Produkte und Preise (monatlich, EUR, tax_behavior: inclusive wie heute):

Produkt Preis lookup_key
WEBklar Wartungs-Abo (besteht) 50,00 € webklar_wartung_monatlich_5000
WEBklar Hosting-Abo (neu) 15,00 € webklar_hosting_monatlich_1500
WEBklar E-Mail-Zusatzspeicher 5 GB (neu) 1,00 € je Stück webklar_mailspeicher_5gb_monatlich_100
  • Beschreibung des Wartungs-Produkts: Sie wird in Stripe auf Version 4 geändert („beliebig viele Postfächer, zusammen 5 GB“). Der Code legt Produkte nur einmal an, deshalb geht das per Skript oder im Stripe-Dashboard.
  • Aufbau: ein Stripe-Abo je Kunde mit zwei Positionen, dem Abo-Preis (Hosting oder Wartung) und optional dem Zusatzspeicher mit Stückzahl.
  • Aufrufe:
    • Plus: subscriptions.update mit der neuen Stückzahl und proration_behavior: create_prorations. Bis zur schon bezahlten Stückzahl gilt none, notfalls in zwei Schritten.
    • Minus: proration_behavior: none.
    • Wechsel: Preis der Abo-Position tauschen mit billing_cycle_anchor: now und proration_behavior: create_prorations, dabei dasselbe proration_date wie in der Vorschau.
    • Den Betrag zeigen wir vorher jeweils mit invoices.createPreview an.
  • Stripe-Kundenportal: Die Überschrift wird „WEBklar – Abo verwalten“. Tarif- und Mengenänderungen bleiben dort aus, weil Stripe unsere Mindestlaufzeiten und Bestellschritte nicht kennt. Die Kündigung dort bleibt ebenfalls aus.
  • Checkout-Hinweistext (custom_text): je Produkt mit Preis und Mindestlaufzeit, statt fest „50,00 € … 12 Monate“.

6. Daten (Appwrite, woms-database)

subscriptions (ein Dokument je Stripe-Abo) bekommt neue Felder:

  • productKey: hosting oder wartung. Alte Dokumente ohne Wert gelten als wartung.
  • termStartAt: Beginn der laufenden Mindestlaufzeit. Bei einem Neuabschluss ist das der Leistungsbeginn, bei einem Wechsel der Wechseltag.
  • storageUnits: gebuchte Pakete Zusatzspeicher.
  • storagePaidUnits und storagePaidPeriodEnd: Pakete, die für den laufenden Monat schon bezahlt sind.
  • planKey enthält künftig den lookup_key des tatsächlichen Abo-Preises.

Neue Collection contractEvents. Sie weist jede Bestellung und jede Änderung nach:

  • Felder:
    • customerId, subscriptionId
    • type: abschluss, wechsel, speicher, kuendigung oder widerruf
    • productKey
    • details: JSON mit Stückzahl alt und neu, Beträgen und Wirksamkeitsdatum
    • termsVersion, consentAt, consentIp, consentUserAgent, earlyStartConsentAt
    • status: offen, erledigt oder widerrufen
    • dueAt, doneAt, doneBy, confirmationSentAt
  • Die offenen speicher-Ereignisse sind die Aufgabenliste für konsoleH.
  • Aus diesen Ereignissen ergibt sich die Widerrufsfrist je Bestellung. Heute zählt nur startedAt.
  • Aufbewahrt werden sie wie die bisherigen Zustimmungsdaten: drei Jahre nach Vertragsende (Datenschutzerklärung, Abschnitt 7).

aboOffers bekommt ein Feld productKey. Alte Angebote gelten als wartung. Der Normalpreis kommt aus dem Produktkatalog statt fest 50 €.

Einrichtung: scripts/setup-abo-collections.mjs wird erweitert.

7. Server (Kundenportal)

server/config.js

  • Neuer Produktkatalog mit products.hosting und products.wartung. Jeder Eintrag enthält:
    • Name, Preis und lookup_key
    • Stripe-Beschreibung
    • Leistungsliste für die Oberfläche
    • Mindestlaufzeit und Minuten pro Monat (0 bzw. 60)
  • Neu ist auch mailStorage mit lookup_key, 100 Cent, 5 GB und höchstens 10 Paketen.
  • abo.termsVersion bleibt ein einziger Wert, weil es eine gemeinsame Fassung gibt (8.1).

server/services/stripeBilling.js

  • Preise werden je Produkt angelegt oder gefunden.
  • syncSubscription liest Abo-Preis und Zusatzspeicher aus den Positionen.
  • Arbeitszeit gibt es nur, wenn die bezahlte Rechnung eine Wartungs-Position enthält, die keine anteilige Verrechnung ist und mehr als 0 € kostet. Heute bekommt jede bezahlte Abo-Rechnung eine Stunde.
  • Checkout je Produkt. Die Sperre „höchstens ein laufendes Abo je Kunde“ bleibt.
  • Neu kommen Wechsel, Zusatzspeicher und die Vorschauen dazu.
  • Die Mindestlaufzeit zählt ab termStartAt.

server/routes/abo.js

  • GET /api/abo liefert:
    • den Produktkatalog
    • productKey und Speicherstand
    • ob ein Wechsel möglich ist
    • das Stundenkonto, aber nur beim Wartungs-Abo
  • Neue Aufrufe:
    • POST /api/abo/checkout mit productKey
    • POST /api/abo/switch/preview und POST /api/abo/switch
    • POST /api/abo/storage/preview und POST /api/abo/storage
  • Öffentliche Kündigung und öffentlicher Widerruf bekommen das Feld contract.

Mails (server/services/mailer.js): produktneutral, siehe 9.

Admin (public/admin.html, public/admin.js, Routen in server/routes/portalAdmin.js)

  • Die Abo-Anzeige nennt Produkt und Speicher.
  • Neuer Reiter „E-Mail-Speicher“ mit:
    • offenen Aufgaben (einrichten, reduzieren zum Datum)
    • Knopf „Erledigt“
    • Summe der vergebenen Kontingente
  • Abo-Angebote bekommen eine Produktauswahl.

Ticketsystem (WOMS): Der Schalter „aufs Stundenkonto“ im Arbeitsnachweis erscheint nur bei Kunden mit laufendem Wartungs-Abo.

8. Rechtstexte

8.1 Aufbau

Eine gemeinsame Fassung „Vertragsbedingungen für die WEBklar-Abos“ in Version 4:

  • allgemeiner Teil: Anbieter, Geltungsbereich, Vertragsschluss, Preise und Zahlung, Laufzeit und Kündigung, Wechsel, Zusatzspeicher, Vertragsende, Mängel, Haftung, Datenschutz, Änderungen, Schlussbestimmungen
  • Leistungsbeschreibung A (Hosting-Abo) und Leistungsbeschreibung B (Wartungs-Abo)
  • Widerrufsbelehrung nach dem gesetzlichen Muster (Wortlaut unverändert) mit Muster-Widerrufsformular
  • Anlage 1 Auftragsverarbeitungsvertrag, Anlage 2 TOM, Anlage 3 Unterauftragsverarbeiter, jeweils für beide Abos

Weitere Festlegungen:

  • Adresse: Sie bleibt project.webklar.com/abo-bedingungen.html, weil sie in Mails, auf der Website und im Stripe-Kundenportal steht.
  • PDF: Das neue heißt WEBklar-Abo-Vertragsunterlagen.pdf.
  • Version 3: Sie wird archiviert (HTML und PDF unter vertragsunterlagen/v3/). WEBklar-Wartungs-Abo-Vertragsunterlagen.pdf bleibt als Fassung 3 abrufbar, denn § 2 sagt zu, dass wir den Vertragstext speichern.
  • Zustimmung: Gespeichert werden Version und Produkt.
  • Versionsdatum: Es ist der Tag der Freigabe in der Rechtsrunde.

8.2 Änderungen gegenüber Version 3

  • „Das Wichtigste auf einen Blick“: beide Abos mit Preisen und Zusatzspeicher.
  • Geltungsbereich: beide Abos, mit Vorrang vor den AGB einschließlich Leistungsmodul C (jährliches Hosting).
  • Vertragsschluss:
    • Der Bestellweg führt über „Verträge“.
    • Wechsel und Zusatzspeicher sind eigene Bestellungen: Knopf, Vertragsschluss mit dem Klick, hinterlegte Zahlungsart, Bestätigungsmail.
  • Leistungen:
    • Aufteilung in A und B.
    • Postfächer: 1 bzw. beliebig viele, zusammen 5 GB, Aufteilung, Einrichtung auf Anfrage, volle Postfächer, faire Nutzung, Zugangsdaten nur an den Kunden.
    • Das Hosting-Abo gilt nur für statische Websites.
  • Stundenkontingent: nur im Wartungs-Abo. Die erste Stunde gibt es beim Wechsel.
  • Pflichten des Kunden:
    • Zugangsdaten aller Postfächer geheim halten.
    • Weitergabe an Beschäftigte in eigener Verantwortung.
    • Im Hosting-Abo keine dynamischen Inhalte ohne Wechsel.
  • Preise und Zahlung:
    • 15 €, 50 € und Zusatzspeicher.
    • Anteilige Berechnung beim Plus.
    • Abrechnung beim Wechsel.
    • Eine Sperre ist ab Verzug mit zwei Monatsgebühren möglich, statt wie bisher ab „100 €“.
  • Laufzeit und Kündigung:
    • Mindestlaufzeiten wie oben. Ein Wechsel startet 12 neue Monate.
    • Rückwechsel nach 3.6. Der Zusatzspeicher ist monatlich kündbar.
    • „Verträge hier kündigen“ bekommt die Auswahl.
  • Widerruf: Die Hinweise stehen außerhalb der Musterbelehrung:
    • Das Widerrufsrecht gilt je Bestellung.
    • Folgen beim Widerruf eines Wechsels.
    • Beim Zusatzspeicher kein Wertersatz.
  • Vertragsende: Export aller Postfächer.
  • Auftragsverarbeitung:
    • Gegenstand sind beide Abos, Datenart „Inhalte der Postfächer“.
    • Die Nutzer der Postfächer zählen zu den Betroffenen.
    • Bei Widerspruch gegen einen Unterauftragsverarbeiter wird „das Abo“ kündbar.
  • TOM: „Automatische Überwachung der Erreichbarkeit“ darf nur drinstehen, wenn sie läuft (10).

8.3 Weitere Texte

Text Änderung
Datenschutzerklärung (public/datenschutz.html + PDF) Abschnitt 2 „unsere Abos“. Abschnitt 7 heißt „Abos und Zahlung über Stripe“, Nachweisdaten auch bei Wechsel und Zusatzspeicher. Abschnitt 8: Postfächer „im Rahmen unserer Abos“. Abschnitt 9: „für die Abos über Stripe“. Neues Stand-Datum
Kündigungs- und Widerrufsseite Auswahl nach 4.5, Bestätigungsseite (legal-form.js)
Bedingungen der Übernahmegutschrift gelten für beide Abos, takeover.conditionsVersion erhöhen
AGB webklar.com, Leistungsmodul C Hosting gibt es als Hosting-Abo nach den Abo-Bedingungen. Bestehende Jahresverträge behalten ihre Fassung. Nr. 9 („jährlich im Voraus“) anpassen
Website /wartungs-abo aktualisieren, neue Seite /hosting-abo, Link im Footer
Leitfaden Empfehlungsgeber (+ PDF) beide Abos
Stripe Produktbeschreibungen, Checkout-Hinweise

9. Mails

Diese Änderungen gehören in die laufende Überarbeitung aller Portal-Mails. Alle Texte werden produktneutral, Produktname und Leistungen kommen aus dem Katalog.

Mail Änderung
K01 Vertragsbestätigung je Produkt, mit PDF der zugestimmten Fassung
K02 Kündigungsbestätigung (Stripe) Produktname. Der Hinweis auf „Abo verwalten“ ist falsch, weil die Kündigung dort aus ist
K03 Eingangsbestätigung Kündigung nennt den gekündigten Vertrag (Abo oder Zusatzspeicher)
K04 Eingangsbestätigung Widerruf nennt die widerrufene Bestellung
K05, K06 Angebote Produkt des Angebots, Normalpreis aus dem Katalog
K07–K10 Übernahmegutschrift „Ihr Abo“ statt „Wartungs-Abo“
neu: Wechsel ins Wartungs-Abo bestätigt mit PDF, Widerrufsbelehrung und neuer Mindestlaufzeit
neu: Zusatzspeicher bestellt oder geändert Zusammenfassung und Wirksamkeitsdatum, beim Plus mit PDF
T02, T05–T09 Produktname
neu intern: Wechsel Kunde und Beträge
neu intern: Speicher-Aufgabe Kunde, Postfächer, neue Größe, Fälligkeit

10. Voraussetzungen vor dem Start

  • Die Überwachung der Erreichbarkeit läuft. Beide Abos und die TOM sagen sie zu, auf dem Server ist sie heute nicht zu finden.
  • Unser Hetzner-Paket ist groß genug. Welches Paket wir haben, ist noch zu prüfen.
  • Die Rechtsrunde ist abgeschlossen: Version 4, Datenschutz, AGB, Formulare.
  • Die produktneutralen Mails sind fertig.
  • Die Stripe-Produkte sind angelegt. Ein Live-Check läuft nur mit ausdrücklicher Freigabe.

11. Reihenfolge

Die Umsetzung wird in zwei Pläne geteilt.

  1. Rechtstexte als Entwurf für die Rechtsrunde. Das läuft parallel zu Plan 1.

  2. Plan 1, unsichtbare Vorarbeiten. Sie können vorher live gehen, ohne sichtbare Änderung und ohne neuen Text:

    • Produktkatalog
    • planKey und productKey aus Stripe
    • Stunde nur fürs Wartungs-Abo
    • Tests
  3. Plan 2, sichtbarer Teil. Er geht gemeinsam mit Version 4 live und umfasst:

    • Ansicht „Verträge“, Bestellseiten, Wechsel und Zusatzspeicher
    • Formulare, Admin und Mails
    • Website, AGB, Leitfaden und WOMS

    Die Ansicht „Verträge“ kann nicht früher live gehen, weil § 2 der Version 3 den heutigen Bestellweg beschreibt.

  4. Start:

    • Stripe-Produkte anlegen
    • termsVersion auf Version 4 setzen, PDFs erzeugen
    • Portal und Website ausliefern und live prüfen

12. Tests

  • Unit-Tests (npm test):
    • Produktkatalog
    • Stundengutschrift: Hosting-Rechnung ergibt keine Stunde, Wartungs-Rechnung 60 Minuten, Wechsel-Rechnung 60 Minuten, reine Speicheränderung keine
    • Speicher-Abrechnung: Plus, Minus, erneutes Plus im selben Monat
    • Mindestlaufzeit nach einem Wechsel
    • Widerrufsfrist je Bestellung
    • Zuordnung von Kündigung und Widerruf
  • Server-Ablauf mit Appwrite-Mock, SMTP-Sink und Fake-Stripe (Aufbau wie bei den bisherigen Tests):
    • Neuabschluss je Produkt
    • Wechsel mit Vorschau
    • Plus und Minus
    • Webhooks mit mehreren Positionen
    • öffentliche Kündigung und öffentlicher Widerruf
    • alle Mails
  • Oberfläche mit Playwright und Fixtures:
    • „Verträge“ in allen Zuständen: kein Abo, Hosting, Wartung, gekündigt, Zahlungsproblem, Widerrufsfrist, Speicher in Einrichtung, Reduzierung geplant
    • jeweils auf Handy und Desktop
    • Pixelvergleich der übrigen Ansichten
  • Textprüfung: Alle Dateien im Anhang nach „1 E-Mail-Postfach“ und nach festem „Wartungs-Abo“ durchsuchen.

13. Offene Punkte zur Durchsicht

Vorbelegt mit meinem Vorschlag, bitte bestätigen oder ändern:

  1. Die Übernahmegutschrift gibt es auch fürs Hosting-Abo.
  2. Den Wechsel gibt es nur mit sofortigem Beginn (Pflicht-Häkchen).
  3. Zusatzspeicher ohne Häkchen für den Sofortbeginn. Bei Widerruf erstatten wir alles.
  4. Laufende Angebotsrabatte laufen beim Wechsel weiter.
  5. Rückwechsel von Wartung zu Hosting nur auf Anfrage nach der Mindestlaufzeit. Nicht genutzte Stunden verfallen.
  6. Höchstens 10 Pakete Zusatzspeicher je Kunde.
  7. Kontaktformulare auf statischen Seiten nur über einen Dienst, den wir zentral betreiben. Zu klären: Wie laufen Formulare heute auf Kundenseiten?
  8. Bestandskunden mit Version 3 behalten ihre Fassung.
    • Beliebig viele Postfächer bieten wir ihnen kostenlos per Mail an.
    • Zusatzspeicher können sie buchen, wenn sie dabei den Regeln zum Zusatzspeicher zustimmen.
  9. Abo-Start mit Version 3 jetzt oder erst mit Version 4: Das hängt nicht von diesem Konzept ab.

Außerdem brauche ich Angaben zu:

  • unserem Hetzner-Paket
  • dem Werkzeug für die Überwachung der Erreichbarkeit, falls schon eins läuft

Anhang: Dateiliste

Kundenportal (knso/Webklar-Kundenbereich)

  • Rechtstexte:
    • public/abo-bedingungen.html und public/WEBklar-Wartungs-Abo-Vertragsunterlagen.pdf
    • scripts/build-legal-pdfs.sh
    • public/datenschutz.html und docs/WEBklar-Datenschutzerklaerung.pdf
  • Formulare: public/kuendigen.html, public/widerrufen.html, public/legal-form.js
  • Oberfläche: public/dashboard.html, public/app.js, public/kundenbereich.css
  • Admin: public/admin.html, public/admin.js
  • Server:
    • server/config.js
    • server/services/stripeBilling.js, server/services/offers.js, server/services/takeoverCredits.js, server/services/mailer.js, server/services/hourLedger.js
    • server/routes/abo.js, server/routes/offers.js, server/routes/portalAdmin.js
  • Einrichtung: scripts/setup-abo-collections.mjs
  • Leitfaden: docs/leitfaden-empfehlungsgeber.html (+ PDF)
  • Tests: neue Dateien unter test/

Website (JUSN/Webklar)

  • src/pages/WartungsAbo.tsx
  • neu: src/pages/HostingAbo.tsx
  • src/App.tsx, src/components/Footer.tsx, src/pages/AGB.tsx

Ticketsystem (JUSN/tickte-system)

  • src/components/CreateWorksheetModal.jsx, src/components/WorksheetList.jsx, src/components/TicketRow.jsx

Außerhalb von Git

  • Stripe: Produkte, Preise, Beschreibung, Konfiguration des Kundenportals
  • Hetzner konsoleH: Paket, Postfach-Grenzen
  • Überwachung der Erreichbarkeit