 # TaskMate - Projektanweisungen
 
 ## Allgemein
  - Sprache: Deutsch fuer Benutzer-Kommunikation
  - Aenderungen immer in CHANGELOG.txt dokumentieren nach bisher bekannten Schema in der Datei
  - Beim Start ANWENDUNGSBESCHREIBUNG.txt lesen
  - Cache-Version in frontend/sw.js erhoehen nach Aenderungen
  - Ich bin kein Mensch mit Fachwissen im Bereich Coding, daher musst du sämtliche Aufgaben in der Regel übernehmen.
  
 ## Technologie
  - Frontend: Vanilla JavaScript (kein Framework)
  - Backend: Node.js mit Express
  - Datenbank: SQLite
  
 ## Konventionen
  - CSS-Variablen in frontend/css/variables.css
  - Deutsche Umlaute (ä, ö, ü) in Texten verwenden

 ## Datumsformatierung (WICHTIG)
  - NIEMALS `toISOString()` für Datumsvergleiche oder -anzeigen verwenden!
  - `toISOString()` konvertiert in UTC und verursacht Zeitzonenverschiebungen (z.B. 28.12. wird zu 27.12.)
  - Stattdessen lokale Formatierung verwenden:
    ```javascript
    // Richtig: Lokale Formatierung
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const dateStr = `${year}-${month}-${day}`;

    // Falsch: UTC-Konvertierung
    const dateStr = date.toISOString().split('T')[0]; // NICHT VERWENDEN!
    ```

 ## Echtzeit-Aktualisierung (KRITISCH)
  - ALLE Nutzeranpassungen müssen SOFORT und ÜBERALL in der Anwendung sichtbar sein
  - Der Nutzer darf NIEMALS den Browser aktualisieren müssen (F5), um Änderungen zu sehen
  - Beispiele für Änderungen, die sofort überall wirken müssen:
    - Spaltenfarbe ändern → Board, Kalender, Wochenstreifen sofort aktualisieren
    - Aufgabe erstellen/bearbeiten/löschen → alle Ansichten sofort aktualisieren
    - Labels, Benutzer, Projekte ändern → überall sofort sichtbar
  - Technische Umsetzung:
    - `store.subscribe('tasks', callback)` - für Aufgabenänderungen
    - `store.subscribe('columns', callback)` - für Spaltenänderungen
    - `store.subscribe('labels', callback)` - für Label-Änderungen
    - `store.subscribe('users', callback)` - für Benutzeränderungen
    - `window.addEventListener('app:refresh', callback)` - für allgemeine Aktualisierungen
    - `window.addEventListener('modal:close', callback)` - nach Modal-Schließung
  - Bei JEDER neuen Komponente diese Event-Listener einbauen
  - Bei JEDER Datenänderung prüfen: Welche UI-Bereiche müssen aktualisiert werden?

 ## Berechtigungen/Aktionen
  - Du sollst den Dockercontainer eigenständig - sofern erforderlich - neu starten/neu bauen, dass Änderungen wirksam werden
  - Nach Änderungen immer nach dem Neubau des Dockercontainers oder allgemein ohne Neustart des Dockercontainers, den Browser im Inkognito-Modus starten mit localhost:3000, um die Änderungen sichtbar zu machen.
  
  