4593065f79399221a808a44fd7fc204f153d7144
- Kopfzeile mit Firmenname, Kundennr., Initialen-Avatar und Abmelden - Seitenleiste: Navigation Projekte/Fortschritt/Rechnungen/Chat mit Zaehlern (offene Rechnungen, ungelesene Nachrichten), "Dein Ansprechpartner" (Mitarbeiter des juengsten zugewiesenen Tickets, sonst WEBklar-Team) und Wartungs-Abo-Karte (Angebot bzw. Status, Stunden, naechste Abbuchung, Abo verwalten, Uebernahmegutschrift, Widerruf, Mindestlaufzeit, Kuendigen) - Projektkarte: Vorschau mit "Website oeffnen", Status, Vorschau-Adresse, Live-Domain, letzte Aenderung, Schnellzugriffe, Projektdetails - Abo-Bestellung und Stundenkonto/Verlauf sowie Uebernahmegutschrift als eigene Ansichten; Direktlinks #abo/#gutschrift (auch ueber den Login) - Pflichtlinks (Kuendigungsbutton, Widerruf, Bedingungen, Datenschutz, Impressum) als Fusszeile; Systemschriften statt externer Fonts - Mobil: Navigation im 2x2-Raster, kein horizontales Scrollen - API: /api/contact, updatedAt in /api/projects; Mail-Links auf Ansichten Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
- Template: https://git.webklar.com/knso/webklar-preview-template.git
- Webhook-URL:
https://project.webklar.com/webhook/gitea - Secret:
GITEA_WEBHOOK_TOKENin.env - Vorschau:
https://<subdomain>.project.webklar.com
customerId wird im Ticketsystem am websiteProjects-Eintrag gesetzt, nicht im Webhook.
Deployment
npm start
# Reverse Proxy (nginx) → Port 3000
# PREVIEW_DEPLOY_ROOT für statische Vorschau-Dateien
Repositories
Languages
JavaScript
86.2%
HTML
11%
CSS
2.7%