Kunden-Dashboard: - Tab-Navigation: Projekte | Was wurde gemacht | Rechnungen | Chat - Projekt-Details pro Projekt: letzte Git-Commits (Titel+Beschreibung), Projektgroesse, Datei-Uebersicht (Top-Level aggregiert), Ticket-Arbeiten - Rechnungen: gestylte Liste mit Status-Pillen, Ansehen/Zahlen-Link, PDF-Download ueber Server-Proxy (IDOR-geschuetzt) - Chat mit dem Webklar-Team (Polling, Ungelesen-Badge, viewAs blockiert) Admin-Dashboard: - Chat-Tab: Konversationsliste + Thread + Antwortfeld, Ungelesen-Badge Backend: - giteaAdmin: getRepoInfo, listRepoCommits, getRepoTreeSummary - projectInsights: 5-min-Cache, Invalidierung per Gitea-Webhook - /api/projects/:id/git|files|work mit Ownership-Check (404) - /api/chat/* (Kunde) + /api/portal-admin/chats/* (Admin), portalMessages-Collection - mailer: E-Mail-Benachrichtigung an Admins bei Kundennachricht (15-min-Throttle) - gitWorksheet: dd.mm.yyyy, voller Commit-Body, startTime leer (Zeit-Nachtrag), Auto-Webpage-Ticket bei Push auf Projekt ohne Ticket (ensureProjectTicket) - customerActivity: Git-Push-Eintraege fuer Kunden sichtbar Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
25 lines
633 B
JSON
25 lines
633 B
JSON
{
|
||
"name": "webklar-kundenbereich",
|
||
"version": "1.0.0",
|
||
"description": "Webklar Kundenportal – zentrale Ticketsystem-Appwrite-DB",
|
||
"type": "module",
|
||
"main": "server/index.js",
|
||
"scripts": {
|
||
"start": "node server/index.js",
|
||
"dev": "node --watch server/index.js",
|
||
"setup:check": "node scripts/portal-setup.mjs --check",
|
||
"setup:link": "node scripts/portal-setup.mjs --link"
|
||
},
|
||
"engines": {
|
||
"node": ">=18"
|
||
},
|
||
"dependencies": {
|
||
"cookie-parser": "^1.4.7",
|
||
"dotenv": "^16.4.7",
|
||
"express": "^4.21.2",
|
||
"jose": "^6.0.11",
|
||
"node-appwrite": "^14.1.0",
|
||
"nodemailer": "^9.0.3"
|
||
}
|
||
}
|