563 lines
34 KiB
Markdown
563 lines
34 KiB
Markdown
# 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: Für alle Postfächer, auch unsere eigenen, nutzen wir das Hetzner-Paket **Webhosting M** (50 GB, 4,90 € pro Monat). Alle Postfächer teilen sich diesen Speicher.
|
||
- Das Admin-Panel zeigt die Summe der vergebenen Kontingente: 5 GB je laufendem Abo plus alle Pakete Zusatzspeicher.
|
||
- Maßgeblich ist der tatsächlich belegte Speicher in konsoleH. Sind 40 GB (80 %) belegt, wechseln wir auf Paket L (100 GB, 9,90 € pro Monat).
|
||
- Die Mehrkosten deckt der Zusatzspeicher: Bei Hetzner kosten 5 GB rund 0,50 € im Monat, wir berechnen 1 €.
|
||
- Domains, die nicht bei Hetzner registriert sind, kosten dort 0,76 € pro Monat extra, wenn wir Postfächer dafür anlegen. Die Domain ist in beiden Abos enthalten, deshalb ist der Umzug zu Hetzner der Normalfall.
|
||
|
||
### 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“, ganz oder mit der Zahl der Pakete (Abschnitt 14).
|
||
- 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.
|
||
- **Wirksamkeit:** Der Wechsel wird erst mit der Zahlung wirksam (Abschnitt 14).
|
||
- **Leistung:** Sie beginnt mit dem wirksamen Wechsel. 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“ bleibt stehen. Umgesetzt ist sie mit UptimeRobot (10).
|
||
- **Anlage 3:** Hier kommt kein Eintrag für UptimeRobot hinzu. UptimeRobot ruft nur die öffentlichen Seiten ab wie jeder Besucher. Formulareingaben, Postfächer und Server-Protokolle der Kunden bekommt es nicht.
|
||
|
||
### 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“. Neu in Abschnitt 3 und 12: Überwachung der Erreichbarkeit durch UptimeRobot s. r. o., Obchodná 507/2, 811 06 Bratislava (Slowakei). UptimeRobot erhält die Adressen der überwachten Websites und verarbeitet auch außerhalb der EU, auf Grundlage von Standardvertragsklauseln. Der Auftragsverarbeitungsvertrag ist Teil der UptimeRobot-Bedingungen. 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. Die neuen HTML-Vorlagen mit Textfassung liegen unter `server/mail-templates/`. Sie sind seit dem 27.09.2026 in main und live (18c3cdf). Die Nummer K11 ist dort schon vergeben („Passwort geändert“).
|
||
|
||
In den Vorlagen steht heute fest:
|
||
|
||
- „Wartungs-Abo“ in allen Betreffzeilen
|
||
- in K01 der Preiskasten „50,00 € / Monat“ und die Liste „Enthalten“ mit „1 E-Mail-Postfach“
|
||
- in K05 „Mindestlaufzeit 12 Monate“
|
||
|
||
Diese Stellen werden zu Platzhaltern wie `{{produkt}}`, `{{preis}}` und `{{leistungen}}`, die der Server aus dem Produktkatalog füllt. Neue Mails bekommen die nächsten freien Nummern.
|
||
|
||
| 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 Neues Abo | Produktname, dazu die Aufgabe „Website als Monitor in UptimeRobot anlegen“ |
|
||
| T07 Abo beendet | Produktname, dazu die Aufgabe „Monitor in UptimeRobot entfernen“ |
|
||
| T05, T06, T08, 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
|
||
|
||
- **Überwachung der Erreichbarkeit:** Sie läuft mit UptimeRobot.
|
||
- Jede Abo-Website ist dort als Monitor angelegt.
|
||
- Der Free-Plan erlaubt laut UptimeRobot-Hilfeseite (Stand 27.08.2026) auch gewerbliche Nutzung, mit 50 Monitoren und einer Prüfung alle 5 Minuten. Ab etwa 45 Monitoren prüfen wir den Tarif.
|
||
- **Hetzner-Paket M:** Vor dem Start lesen wir in konsoleH ab, wie viel Speicher schon belegt ist (Statistiken → Speicherplatz).
|
||
- 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.
|
||
|
||
Geklärt am 27.09.2026: Wir nutzen das Hetzner-Paket M, und die Erreichbarkeit überwacht UptimeRobot.
|
||
|
||
## 14. Entscheidungen aus der Rechtsrunde (28.09.2026)
|
||
|
||
Der Nutzer hat alle 19 Vorschläge des Übersichtsblatts freigegeben. Folgen für Text und Umsetzung:
|
||
|
||
1. **Wechsel erst mit Zahlung wirksam.** Scheitert die Zahlung, läuft das Hosting-Abo mit Preis und Mindestlaufzeit wie vorher weiter. Der Kunde bekommt dann Mail K14.
|
||
- Bei Karte übernimmt Stripe den Wechsel erst nach der Zahlung (`pending_if_incomplete`). Die ausstehende Aktualisierung verfällt nach spätestens 23 Stunden.
|
||
- Bei SEPA-Lastschrift geht das nicht, also gilt der Wechsel sofort. Scheitert die Lastschrift, machen wir ihn von Hand rückgängig. Der Abbuchungstag bleibt dabei der Wechseltag.
|
||
- Vertragsbedingungen § 2 Abs. 5 und § 9. Umsetzung: Task 9 und 12.
|
||
2. **Zusatzspeicher auch teilweise über den Kündigungsbutton kündigen.** Das Formular fragt die Zahl der Pakete ab. Das geht auch bei gekündigtem Abo.
|
||
- Vertragsbedingungen § 8 Abs. 7 und 8, § 10 Abs. 5. Umsetzung: Task 8, 10 und 12.
|
||
3. **Datenschutz: Aufbewahrung „drei Jahre nach Ablauf des Jahres, in dem Ihr letztes Abo endet“.** Das ist eine Präzisierung nach der Textprüfung, passend zur Verjährung und zum jährlichen Lauf. Dazu kommt eine Löschroutine mit Probelauf, Bericht ans Team und einem Lauf im Januar (Task 21).
|
||
4. **AGB der Website:**
|
||
- Modul C Nr. 4 (Haftungsausschluss für externe Anbieter) entfällt. Für die Abos gilt § 13 der Vertragsbedingungen.
|
||
- Alte Hosting-Jahresverträge: Nach einer automatischen Verlängerung können Verbraucher mit einer Frist von einem Monat kündigen.
|
||
- Die AGB bekommen beim Livegang ein Stand-Datum.
|
||
5. **Unverändert bestätigt:**
|
||
- Wertersatz beim Widerruf eines Wechsels
|
||
- Rückwechsel nur auf Anfrage
|
||
- Bestandskunden bleiben bei Fassung 3
|
||
- Formulare im Hosting-Abo nur gesondert
|
||
- Webmail zugesagt
|
||
- § 11 Abs. 3
|
||
- Rechtsgrundlagen UptimeRobot (lit. b und lit. f)
|
||
- Aufbewahrung von Kündigungs- und Widerrufserklärungen
|
||
- Kein Verlauf im Portal
|
||
- Gutschrift wird nach einem Wechsel weiter verrechnet
|
||
- Gutschrift ab Beginn des ursprünglichen Abos
|
||
- Leitfaden auf einer Seite
|
||
|
||
## 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`
|
||
- Mailvorlagen: `server/mail-templates/*.html` und `server/services/mailTemplates.js`
|
||
- 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 M, Postfach-Grenzen
|
||
- UptimeRobot: Monitore für die Abo-Websites
|