ClaudeandClaude Sonnet 5.5 4c64edc057 Kundenansicht neu E-Fix M3: Fehlermeldungen der Bestellseiten und Formulare als Live-Region (role="alert")
abo-error, switch-error (und der Fehler der Wechsel-Vorschau), storage-error, tk-error samt Fehlerzeile der Rückfrage-Antwort, der Fehler von
"Zahlungsart aktualisieren" sowie login-error und form-error auf Login, Kündigen und Widerrufen waren einfache Absätze: Screenreader lasen
sie nicht vor, obwohl der Knopf wieder frei wurde. Jetzt role="alert", gepinnt in test/knEfixCss.test.js.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 21:42:07 +00:00
2026-05-22 23:51:20 +02:00

Webklar Kundenbereich

Kundenportal für Website-Projekte. Liest ausschließlich aus woms-database auf ticket.webklar.com (Ticketsystem). Es gibt keine eigene Portal-Datenbank mehr.

  • Keine Kundenanlage im Portal
  • Keine Admin-Funktionen
  • Login über Appwrite Auth (ein User pro Kunde, verknüpft über customers.appwriteUserId)

Verwaltung (Kunden, Passwörter, Projekte, Freischaltung): Ticketsystem.

Struktur

server/     Express-API, Appwrite, Gitea-Webhook
public/     Login & Dashboard (statisch)

Schnellstart

cp .env.example .env
# SESSION_SECRET (min. 32 Zeichen) und APPWRITE_API_KEY setzen
npm install
npm run dev

Öffnen: http://localhost:3000

API

Methode Pfad Beschreibung
POST /api/auth/login Appwrite Login + Portal-Prüfungen
POST /api/auth/logout Session beenden
GET /api/auth/me Aktueller Kunde
GET /api/projects Eigene websiteProjects
GET /api/features Eigene portalFeatures (enabled)
POST /webhook/gitea?token=… Gitea Push → Deploy + DB-Update

Appwrite

Schema und Collection-Anlage: siehe APPWRITE_SCHEMA.md.

Endpoint:  https://ticket.webklar.com/v1
Project:   6a1058610003c5a13a05
Database:  woms-database

Gitea / Preview

customerId wird im Ticketsystem am websiteProjects-Eintrag gesetzt, nicht im Webhook.

E-Mails

Alle automatischen Mails sind HTML-Vorlagen mit Textfassung in server/mail-templates/ (K01–K11 an Kunden, T01–T11 ans Team; Design aus Claude Design). Jede Vorlage nennt im Kopfkommentar Betreff, Platzhalter ({{name}}) und optionale Blöcke (<!-- WENN x --> … <!-- ENDE x -->). Eine neue Fassung aus dem Design kann die Datei direkt ersetzen, solange Platzhalter und Blöcke gleich heißen; npm test prüft das. Das Logo in den Mails liegt unter public/webklar-logo.png.

Deployment

npm start
# Reverse Proxy (nginx) → Port 3000
# PREVIEW_DEPLOY_ROOT für statische Vorschau-Dateien

Repositories

S
Description
Webklar-Kundenbereich
Readme
14 MiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 86.2%
HTML 11%
CSS 2.7%