61 Zeilen
3.0 KiB
Markdown
61 Zeilen
3.0 KiB
Markdown
# TaskMate - Projektanweisungen
|
|
|
|
## Infrastruktur/Server
|
|
- **Docker-Container**: `taskmate` (hauptsächlich Backend), läuft auf Port 3001 intern → 3000 im Container
|
|
- **Frontend-Domain**: https://taskmate.aegis-sight.de
|
|
- **Gitea-Repository**: https://gitea-undso.aegis-sight.de/AegisSight/TaskMate
|
|
- **Gitea-Token**: `7c62fea51bfe0506a25131bd50ac710ac5aa7e3a9dca37a962e7822bdc7db840`
|
|
- **Projektverzeichnis auf Server**: `/home/claude-dev/TaskMate`
|
|
|
|
## Allgemein
|
|
- Sprache: Deutsch für Benutzer-Kommunikation
|
|
- Änderungen immer in CHANGELOG.txt dokumentieren nach bisher bekanntem Schema in der Datei
|
|
- Beim Start ANWENDUNGSBESCHREIBUNG.txt lesen
|
|
- Cache-Version in frontend/sw.js erhöhen nach Änderungen
|
|
- 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
|
|
- Erreichbarkeit der Anwendung über https://taskmate.aegis-sight.de (keine automatische Browser-Öffnung)
|