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.
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.
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.
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.
- 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
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.
- .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.
Vue 3 + Vite Frontend und Node/Express + SQLite Backend für
Projekt-, Aufgaben-, Mitarbeiter- und Teamverwaltung inkl.
Gantt-Zeitplan und Auslastungs-Heatmap.