ClaudeandClaude Sonnet 5.5 14dc2ad1bf Kundenansicht neu (Aufträge): Aufträge mit Rückfrage vor den übrigen laufenden, nie hinter "Ältere Aufträge anzeigen"
sortiereAuftraege stellt unter den laufenden Aufträgen die mit Rückfrage (braucheInfo) nach vorn, danach
wie bisher die jüngste Aktivität, dann die Reihenfolge des Servers. Erledigte und Stornierte bleiben dahinter.
Tests: Reihenfolge mit Rückfragen und Gruppierung (die Rückfrage mit der ältesten Aktivität bleibt sichtbar).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 15:47:21 +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%