11 Commits

Author SHA1 Message Date
admin fdd70fc20d docker-compose.yml auf Coolify-Caddy-Proxy umgestellt
Kein Host-Port-Mapping mehr, stattdessen Anbindung an das externe
Docker-Netzwerk "coolify" mit caddy-Labels für domainbasiertes Routing
und automatisches TLS über ressourceksr.bbundco.de. README entsprechend
aktualisiert (Coolify-Deployment ohne manuelle Port-Konfiguration).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
3.0
2026-07-11 01:19:41 +02:00
admin 06ea149d41 Benutzerverwaltung mit Rollen/Rechten und Urlaubsplanung
Führt Login mit vier Rollen (Admin, Teamleiter, Mitarbeiter, Beobachter) ein,
über die Teammitglieder eigenen Urlaub inkl. Pflicht-Vertreter eintragen
können. Die Auslastungsberechnung berücksichtigt Urlaub jetzt als reduzierte
Kapazität. Neue Konten vergeben ihr Passwort selbst beim ersten Login.
Migrationsskript für bestehende Mitarbeiter aus der Vorversion inklusive.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.0
2026-07-10 22:57:25 +02:00
admin 60a0928d2f Automatische Datenbank-Backups
Sichert die SQLite-Datenbank periodisch (Standard: alle 24h) nach
server/data/backups und räumt alte Sicherungen auf (Standard: 14
behalten). Zusätzlich per POST /api/backup manuell auslösbar.
1.0
2026-07-04 11:56:38 +02:00
admin 4abbb50f8c Aufgaben-Tabelle: inline bearbeitbar, Zuweisung direkt sichtbar
Enddatum und Status lassen sich jetzt direkt in der Tabelle ändern,
Zuweisungen können entfernt werden und das Zuweisungsformular ist
direkt in der Zugewiesen-Spalte statt versteckt im Verwalten-Bereich,
damit auch bei bereits bestehenden Aufgaben nachträglich Mitarbeiter
zugewiesen werden können. Zusätzlich verhindert ein Guard doppeltes
Duplizieren durch Mehrfachklick.
2026-07-04 11:56:12 +02:00
admin 4e0f628db7 Mitarbeiter bearbeiten: Button zum Ändern bestehender Daten
Pro Mitarbeiter-Zeile ein "Bearbeiten"-Button, der die Zeile in ein
Inline-Formular umschaltet (alle Felder, insbesondere die
Wochenkapazität). "Speichern" nutzt den bereits vorhandenen
store.updateEmployee/PUT-Endpoint, "Abbrechen" verwirft die Änderung.
2026-07-04 00:30:25 +02:00
admin 29f7ca507e Fix: Team-Mitglied hinzufügen aktualisiert Anzeige ohne Reload
api.js hat bei jeder Antwort außer Status 204 zwingend versucht, den
Body als JSON zu parsen. POST /api/teams/:id/members antwortet aber
mit leerem 201-Body, wodurch ein "Unexpected end of JSON input"-Fehler
die Ausführung abbrach, bevor der neue Mitarbeiter in die reaktive
Team-Mitgliederliste gepusht wurde. request() prüft jetzt generisch,
ob überhaupt ein Body vorhanden ist, statt sich auf den Statuscode zu
verlassen.
2026-07-04 00:26:09 +02:00
admin 884f26bf25 Migrate existing employees.name to first_name/last_name in-place
Bestehende Deployments mit dem alten name-Feld verlieren beim Redeploy
keine Daten mehr: db.js erkennt das alte Schema (PRAGMA table_info),
splittet name in first_name/last_name und übernimmt alle Zeilen, statt
die Tabelle neu anzulegen. Läuft nur einmal (Spalte "name" existiert
danach nicht mehr) und lässt neue Datenbanken unverändert.
2026-07-04 00:13:10 +02:00
admin 60dd58d31f Vorname/Nachname für Mitarbeiter, Aufgaben-Duplizierung, Zeitstrahl im Zeitplan
- employees: name-Feld in first_name/last_name aufgeteilt (Schema, API,
  Formular, alle Namensanzeigen)
- Aufgaben können mit neuem Start-/Enddatum dupliziert werden
  (POST /api/tasks/:id/duplicate übernimmt Name, Stunden, Status und
  Zuweisungen 1:1, nur die Termine ändern sich)
- Zeitplan zeigt jetzt einen Zeitstrahl mit Kalenderwochen und
  Tagesnummern oberhalb der Projekt-Balken
2026-07-04 00:09:41 +02:00
admin 7a7b6408a3 Fix port conflict on Coolify host: map to 8090 instead of 8080
Coolify deployment failed with "port is already allocated" since 8080
was already bound by another resource on the host. Container still
listens on 8080 internally; host mapping moved to 8090.
2026-07-03 23:22:26 +02:00
admin 74c9fee38e Make image Coolify-ready: fix native module build, add healthcheck
- .dockerignore fehlte, wodurch node_modules vom Host (macOS-Binaries)
  das im Container frisch installierte better-sqlite3 überschrieben hat
  (invalid ELF header). node_modules jetzt rekursiv ausgeschlossen.
- Finales Image von node:20-alpine auf node:20-slim gewechselt, da
  better-sqlite3-Prebuilds gegen glibc gelinkt sind und auf musl/Alpine
  nicht laden.
- HEALTHCHECK gegen /health ergänzt.
- README um Coolify-Deployment-Anleitung erweitert.
2026-07-03 23:08:46 +02:00
admin fc25eff643 Initial commit: Ressourcenplanung-App
Vue 3 + Vite Frontend und Node/Express + SQLite Backend für
Projekt-, Aufgaben-, Mitarbeiter- und Teamverwaltung inkl.
Gantt-Zeitplan und Auslastungs-Heatmap.
2026-07-03 22:45:07 +02:00