mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-16 16:19:40 +02:00
234 lines
7 KiB
Markdown
234 lines
7 KiB
Markdown
# Calendar App - Cleanup Plan
|
|
|
|
Dieser Plan dokumentiert Features und Code, die überdurchschnittlich viel Komplexität erzeugen bei geringem Nutzen. Ziel ist eine schlankere, wartbarere Codebase.
|
|
|
|
## Status-Legende
|
|
|
|
- ✅ Erledigt
|
|
- 🔄 In Bearbeitung
|
|
- ⏳ Geplant
|
|
- ❌ Abgelehnt
|
|
|
|
---
|
|
|
|
## Erledigte Aufräumarbeiten
|
|
|
|
### ✅ Statistiken & Heatmap (2024-01-28)
|
|
|
|
**Commit:** `2f3473b7`
|
|
|
|
**Entfernte Dateien:**
|
|
- `src/lib/stores/statistics.svelte.ts` (270 Zeilen)
|
|
- `src/lib/stores/heatmap.svelte.ts` (190 Zeilen)
|
|
- `src/lib/components/calendar/StatsSidebarSection.svelte` (434 Zeilen)
|
|
- `src/lib/components/calendar/StatsOverlay.svelte` (257 Zeilen)
|
|
|
|
**Geänderte Dateien:**
|
|
- Heatmap-CSS aus allen View-Komponenten entfernt
|
|
- Nav-Item "Statistiken" entfernt
|
|
- Toolbar Heatmap-Toggle entfernt
|
|
|
|
**Ersparnis:** ~1.450 Zeilen
|
|
|
|
---
|
|
|
|
## Geplante Aufräumarbeiten
|
|
|
|
### Priorität 1: Quick Wins (Hoher ROI)
|
|
|
|
#### ✅ 1.1 Network View entfernen (2024-01-28)
|
|
|
|
**Commit:** `9a93ca0c`
|
|
**Ersparnis:** ~910 Zeilen
|
|
|
|
**Entfernte Dateien:**
|
|
- `src/lib/components/calendar/NetworkView.svelte` (~416 Zeilen)
|
|
- `src/lib/stores/network.svelte.ts` (~371 Zeilen)
|
|
- `src/lib/api/network.ts` (~47 Zeilen)
|
|
- `src/lib/stores/view-mode.svelte.ts` (~76 Zeilen)
|
|
|
|
**Geänderte Dateien:**
|
|
- `src/routes/(app)/+page.svelte` - Network-View Conditional entfernt
|
|
- `src/routes/(app)/+layout.svelte` - Network-Tab aus ViewSwitcher entfernt
|
|
|
|
---
|
|
|
|
#### ✅ 1.2 Session Events → Demo-Modus (2024-01-28)
|
|
|
|
**Commit:** `cef83216`
|
|
**Ersparnis:** ~150 Zeilen (netto, nach Abzug der neuen Demo-Events-Datei)
|
|
|
|
**Beschreibung:**
|
|
Session-basiertes Event-Management (sessionStorage) durch statischen Demo-Modus ersetzt. Statt frustrierender UX (Events verschwinden bei Tab-Schließung) zeigt die App jetzt Beispiel-Termine, die das Feature demonstrieren.
|
|
|
|
**Entfernte Dateien:**
|
|
- `src/lib/stores/session-events.svelte.ts` (~154 Zeilen)
|
|
|
|
**Neue Dateien:**
|
|
- `src/lib/data/demo-events.ts` (~100 Zeilen) - Statische Demo-Termine
|
|
|
|
**Geänderte Dateien:**
|
|
- `src/lib/stores/events.svelte.ts` - Session-Logik durch Demo-Events ersetzt
|
|
- `src/lib/components/AuthGateModal.svelte` - Session-Anzeige entfernt
|
|
- `src/routes/(app)/+layout.svelte` - Demo-Banner statt Gast-Banner
|
|
- `src/routes/(app)/+page.svelte` - Auth-Gate bei Event-Erstellung/Bearbeitung
|
|
|
|
**Verbesserungen:**
|
|
- Nutzer sehen realistische Beispiel-Termine beim ersten Besuch
|
|
- Klick auf Event oder "Neuer Termin" öffnet Login-Dialog
|
|
- Kein Datenverlust mehr möglich (Demo-Events sind readonly)
|
|
|
|
---
|
|
|
|
#### ⏳ 1.3 Event Parser (NLP) entfernen
|
|
|
|
**Status:** Geplant
|
|
**Geschätzte Ersparnis:** ~260 Zeilen
|
|
**Komplexität:** MITTEL | **Nutzen:** NIEDRIG
|
|
|
|
**Beschreibung:**
|
|
Natural Language Parsing für Termineinträge (nur Deutsch). Regex-basiert und fehleranfällig. Die meisten Nutzer verwenden strukturierte Formulare.
|
|
|
|
**Zu entfernende Dateien:**
|
|
- `src/lib/utils/event-parser.ts` (~261 Zeilen)
|
|
|
|
**Zu ändernde Dateien:**
|
|
- `src/routes/(app)/+layout.svelte` - QuickInputBar onCreate/onParseCreate entfernen
|
|
- QuickInputBar-Integration vereinfachen (nur Suche, kein Quick-Create)
|
|
|
|
---
|
|
|
|
### Priorität 2: Mittlerer Aufwand
|
|
|
|
#### ⏳ 2.1 Swipe Navigation entfernen
|
|
|
|
**Status:** Geplant
|
|
**Geschätzte Ersparnis:** ~180 Zeilen
|
|
**Komplexität:** MITTEL | **Nutzen:** NIEDRIG
|
|
|
|
**Beschreibung:**
|
|
Trackpad-/Touch-Swipe für horizontale Kalendernavigation. Pfeiltasten und Buttons reichen völlig aus.
|
|
|
|
**Zu entfernende Dateien:**
|
|
- `src/lib/composables/useSwipeNavigation.svelte.ts` (~183 Zeilen)
|
|
|
|
**Zu ändernde Dateien:**
|
|
- `src/lib/components/calendar/ViewCarousel.svelte` - Swipe-Integration entfernen
|
|
|
|
---
|
|
|
|
#### ⏳ 2.2 Context Menus entfernen
|
|
|
|
**Status:** Geplant
|
|
**Geschätzte Ersparnis:** ~400 Zeilen
|
|
**Komplexität:** MITTEL | **Nutzen:** NIEDRIG
|
|
|
|
**Beschreibung:**
|
|
4+ verschiedene Context-Menus mit duplizierten Aktionen. Mobile unterstützt keine Context-Menus. Aktionen besser in sichtbare Buttons verschieben.
|
|
|
|
**Zu entfernende Dateien:**
|
|
- `src/lib/components/event/EventContextMenu.svelte`
|
|
- `src/lib/components/calendar/CalendarHeaderContextMenu.svelte`
|
|
- `src/lib/components/calendar/DateStripContextMenu.svelte`
|
|
- `src/lib/components/calendar/ViewModePillContextMenu.svelte`
|
|
- `src/lib/stores/eventContextMenu.svelte.ts`
|
|
|
|
---
|
|
|
|
#### ⏳ 2.3 Settings vereinfachen
|
|
|
|
**Status:** Geplant
|
|
**Geschätzte Ersparnis:** ~200 Zeilen
|
|
**Komplexität:** MITTEL | **Nutzen:** NIEDRIG
|
|
|
|
**Beschreibung:**
|
|
Aktuell ~42 Einstellungen - die meisten Nutzer verwenden Defaults. Reduzieren auf ~8 Kern-Einstellungen.
|
|
|
|
**Zu entfernende Settings:**
|
|
- Mondphasen-Anzeige
|
|
- DateStrip-Varianten (compact, eventIndicators, etc.)
|
|
- Header-Format-Optionen
|
|
- Zeitfilter-Optionen
|
|
|
|
---
|
|
|
|
### Priorität 3: Größere Refactorings
|
|
|
|
#### ⏳ 3.1 Calendar Views reduzieren (7 → 3)
|
|
|
|
**Status:** Geplant
|
|
**Geschätzte Ersparnis:** ~1.500 Zeilen
|
|
**Komplexität:** HOCH | **Nutzen:** HOCH (Vereinfachung)
|
|
|
|
**Beschreibung:**
|
|
7 verschiedene View-Typen sind zu viel. Die meisten Nutzer brauchen nur Week, Month, Agenda.
|
|
|
|
**Behalten:**
|
|
- `WeekView.svelte` (Standard)
|
|
- `MonthView.svelte`
|
|
- `AgendaView.svelte`
|
|
|
|
**Entfernen:**
|
|
- `YearView.svelte` (~420 Zeilen)
|
|
- `DayView.svelte` (~1.104 Zeilen) - Week-View für einzelne Tage nutzen
|
|
- `MultiDayView.svelte` (~1.594 Zeilen) - Week-View mit variablem dayCount
|
|
|
|
---
|
|
|
|
#### ⏳ 3.2 Tag-System vereinfachen
|
|
|
|
**Status:** Geplant
|
|
**Geschätzte Ersparnis:** ~1.600 Zeilen
|
|
**Komplexität:** HOCH | **Nutzen:** MITTEL
|
|
|
|
**Beschreibung:**
|
|
Tag-Gruppen-Hierarchie entfernen → nur flache Tags. Drag-Drop-Sortierung entfernen → alphabetisch sortieren.
|
|
|
|
**Zu vereinfachende Dateien:**
|
|
- `src/lib/components/calendar/TagStripModal.svelte` (1.463 Zeilen → ~300 Zeilen)
|
|
- `src/lib/stores/event-tag-groups.svelte.ts` (entfernen)
|
|
- `src/lib/stores/event-tags.svelte.ts` (vereinfachen)
|
|
|
|
---
|
|
|
|
#### ⏳ 3.3 Birthday-Integration vereinfachen
|
|
|
|
**Status:** Geplant
|
|
**Geschätzte Ersparnis:** ~350 Zeilen
|
|
**Komplexität:** MITTEL | **Nutzen:** MITTEL-NIEDRIG
|
|
|
|
**Beschreibung:**
|
|
Cross-App API-Integration für Geburtstage. Ersetzbar durch manuelles Eintragen oder einfachen Import.
|
|
|
|
**Zu entfernende/vereinfachende Dateien:**
|
|
- `src/lib/stores/birthdays.svelte.ts` (~220 Zeilen)
|
|
- `src/lib/api/birthdays.ts` (~101 Zeilen)
|
|
- `src/lib/components/birthday/BirthdayPopover.svelte`
|
|
|
|
---
|
|
|
|
## Zusammenfassung
|
|
|
|
| Phase | Features | LOC Ersparnis | Status |
|
|
|-------|----------|---------------|--------|
|
|
| ✅ Done | Statistiken/Heatmap | ~1.450 | Erledigt |
|
|
| ✅ Done | Network View | ~910 | Erledigt |
|
|
| ✅ Done | Session Events → Demo | ~150 | Erledigt |
|
|
| 🟢 Prio 1 | Parser | ~260 | Geplant |
|
|
| 🟡 Prio 2 | Swipe, Context, Settings | ~780 | Geplant |
|
|
| 🔴 Prio 3 | Views, Tags, Birthdays | ~3.450 | Geplant |
|
|
| **Gesamt** | | **~7.000** | |
|
|
|
|
**Ziel:** ~30% Code-Reduktion bei gleichem/besserem Nutzererlebnis
|
|
|
|
**Bisherige Ersparnis:** ~2.510 LOC (Statistiken + Network + Sessions)
|
|
|
|
---
|
|
|
|
## Changelog
|
|
|
|
| Datum | Aktion | Commit |
|
|
|-------|--------|--------|
|
|
| 2024-01-28 | Session Events → Demo-Modus | `cef83216` |
|
|
| 2024-01-28 | Network View entfernt | `9a93ca0c` |
|
|
| 2024-01-28 | Statistiken & Heatmap entfernt | `2f3473b7` |
|