c055091dc7adcba62ca9646e3555bf20119bb5fb
Projektübersicht — README
Übersicht
Dieses Projekt ist eine lokale Single-Page-Webanwendung zur Verwaltung elektrotechnischer Projekte und Sitzungsübersichten. Die Anwendung besteht aus:
- einem Frontend in
Test.html,styles.cssundmain.v2.js - einem einfachen Node.js-Server in
server.js - einem Datenspeicher in CSV-Dateien unter
sessions/ - einem Docker-Setup unter
Docker/
Datei- und Komponentenübersicht
Wichtige Laufzeit-Dateien
-
server.js- Node.js/Express-Server
- dient als API für das Frontend
- stellt statische Dateien (
Test.html,main.v2.js,styles.css, etc.) bereit - implementiert Endpunkte:
GET /→ liefertTest.htmlGET /load-all→ lädt alle CSV-Dateien aus dem aktivensessions/<DEPARTMENT>/-Ordner inkl._people.csvPOST /save-csv→ speichert eine CSV-Datei (Dateiname wird validiert)POST /delete-csv→ löscht eine CSV-DateiGET /health→ Gesundheitscheck
- legt das
sessions-Verzeichnis beim Start an, falls es nicht existiert - beendet sich mit aussagekräftiger Fehlermeldung, wenn der Port belegt ist
-
package.json- definiert den Node.js-Startbefehl
npm start - enthält Produktionsabhängigkeiten
expressundcors
- definiert den Node.js-Startbefehl
-
package-lock.json- wird für reproduzierbare Docker-Builds verwendet (
npm ci)
- wird für reproduzierbare Docker-Builds verwendet (
-
main.v2.js- komplette Client-Logik der Anwendung
- rendert das Projektboard, die Projekt- und Personenverwaltung sowie die Auslastungsansicht
- lädt Daten über den Server und speichert Änderungen zurück als CSV
- verwendet
currentDepartmentzur Trennung von Abteilungen (ELT,HLS,ARCH) - speichert:
sessions/<DEPT>/<WEEK>.csvsessions/<DEPT>/_people.csv(globale Personenliste pro Abteilung)
- sortiert Sitzungen nach Kalenderwoche, nicht alphabetisch
- sperrt historische Sitzungen automatisch (bis auf die chronologisch letzte)
- Personen sind global pro Abteilung verwaltet; historische Sitzungen behalten ihre lokalen Personenkopien
-
Test.html- die Benutzeroberfläche der Anwendung
- lädt
styles.cssundmain.v2.js - enthält die Abteilungsauswahl, Sitzungsnavigation, Tab-Navigation und das Passwort-Modal
-
styles.css- Layout und Styling der Oberfläche
Docker-bezogene Dateien
-
Docker/Dockerfile- Basis-Image:
node:20-alpine - kopiert
package.jsonundpackage-lock.json, installiert Produktionsabhängigkeiten mitnpm ci - kopiert den Rest des Projekts in
/app - legt sicherheitshalber
/app/sessionsan - läuft als nicht-root-User
node - enthält einen
HEALTHCHECKauf/health - startet
node server.js
- Basis-Image:
-
docker-compose.yml- definiert den Service
projektuebersicht - baut das Image aus dem Projektstamm mit
Docker/Dockerfile - mappt Port
3003:3003 - bindet das Host-Verzeichnis
./sessionsin den Container nach/app/sessions - setzt
restart: unless-stopped - definiert einen
healthcheck
- definiert den Service
-
.dockerignore- schließt unnötige Dateien aus dem Docker-Build aus:
Docker/,node_modules/,npm-debug.log,.git,.gitignore
- schließt unnötige Dateien aus dem Docker-Build aus:
Sonstige Dateien
-
dein_bild.ico- optionales Icon, wird vom Server statisch ausgeliefert, wenn angefragt
-
AGENTS.md- Projektnotizen / Dokumentation, aber nicht Teil des Anwendungslaufs
Speicherorte und Datenfluss
Speicherung
- Alle persistierten Daten werden als CSV-Dateien in
sessions/gespeichert. - Innerhalb von
sessions/existieren Abteilungsordner:sessions/ELT/sessions/HLS/sessions/ARCH/
- Jede Abteilung enthält mindestens:
_people.csv→ globale Personenliste mit Rollen und vollständigem NamenKW_XX___YYYY.csvoder vergleichbare Sitzungsdateien → Sitzungsdaten mit Projekten, Zuordnungen und Anwesenheit
Wo wird der Server erstellt?
- Der Server wird in
server.jserstellt. server.jsstartet einen Express-Server auf Port3003oder dem Wert vonprocess.env.PORT.- Das Frontend ruft diesen Server über
window.location.originan.
Wo werden die Dateien gespeichert?
- Das Frontend schreibt über den Server in das Dateisystem.
- In
main.v2.jsruft die Anwendung beim Speichern/save-csvauf. - Der Server legt CSV-Dateien unter
sessions/<DEPARTMENT>/ab. - Beispiel:
sessions/ELT/KW_32___2026.csvsessions/ELT/_people.csv
Betrieb
Lokal mit Node.js
npm install
npm start
Danach ist die Anwendung erreichbar unter http://localhost:3003.
Falls der Port belegt ist:
PORT=3004 npm start
Mit Docker
Im Projektstamm ausführen:
docker compose -f Docker/docker-compose.yml up --build
Danach ist die Anwendung erreichbar unter:
http://localhost:3003
Wichtige Hinweise
- Der Server benötigt Lese-/Schreibzugriff auf
sessions/. - Die Docker-Compose-Konfiguration mountet
./sessionsin den Container. Achte darauf, dass der relative Pfad im Kontext korrekt ist, wenn dudocker composeaus einem anderen Verzeichnis startest. main.v2.jsarbeitet mit Abteilungsparametern und speichert Daten abteilungsweise in separaten Unterordnern.- Die Passwortfunktion ist nur ein einfacher Client-Mechanismus im Frontend und kein echter Sicherheitsmechanismus.
- Globale Personen werden in
_people.csvverwaltet. Wird eine Person global gelöscht, bleibt sie in bereits existierenden Sitzungen sichtbar.
Languages
JavaScript
76.5%
CSS
17.1%
HTML
5.5%
Shell
0.8%