Skip to content

Latest commit

 

History

History
143 lines (108 loc) · 5.32 KB

File metadata and controls

143 lines (108 loc) · 5.32 KB

Implementierungsplan DevHabit

Phase 1: Project Setup

1.1 Backend-Grundgeruest

  • Spring Boot 3 Projekt mit Maven initialisieren (Spring Initializr)
  • Dependencies: Spring Web, Spring Data JPA, H2, Spring Boot Test
  • DevHabitApplication.java als Entry Point
  • application.yml mit H2-Konfiguration (In-Memory, Console aktiviert)
  • Verzeichnisstruktur fuer alle Feature-Module anlegen (habit, focus, git, stats)
  • Jedes Modul mit Unterordnern: domain, application, adapter/in/web, adapter/out/persistence, port/in, port/out

1.2 Frontend-Grundgeruest

  • React-Projekt mit Vite + TypeScript erstellen
  • Dependencies: React Query, TailwindCSS, React Router
  • Verzeichnisstruktur fuer Feature-Module anlegen (habits, focus, git, stats)
  • Jedes Modul mit Unterordnern: domain, application, infrastructure, ui
  • Shared-Ordner fuer gemeinsame Komponenten und API-Client
  • Basis-API-Client in shared/api/ einrichten

1.3 ArchUnit Setup

  • ArchUnit-Dependency im Backend hinzufuegen
  • Architektur-Tests fuer Hexagonal-Regeln schreiben (Domain keine Abhaengigkeiten zu Adaptern/Framework, Application kennt nur Domain und Ports, Adapter haengen von Ports ab)

Phase 2: Habit CRUD (Kern-Feature)

2.1 Backend - Domain & Ports

  • TDD: Tests fuer Habit Entity (name, description, frequency, startDate)
  • Habit Entity + Frequency Enum (DAILY, WEEKLY) implementieren
  • Tests fuer Use-Case-Interfaces (CreateHabitUseCase, UpdateHabitUseCase, DeleteHabitUseCase, GetHabitsUseCase)
  • Input-Port-Interfaces definieren
  • Output-Port HabitRepository Interface definieren

2.2 Backend - Application & Adapter

  • Unit-Tests fuer Application Services (mit Mockito fuer Repository)
  • HabitService implementiert alle Use-Case-Interfaces
  • Integration-Tests fuer JPA-Repository (@DataJpaTest)
  • JpaHabitRepository implementiert Output-Port
  • Integration-Tests fuer REST-Controller (@WebMvcTest)
  • HabitController (GET, POST, PUT, DELETE /api/habits)
  • DTOs fuer Request/Response erstellen

2.3 Frontend - Habit CRUD

  • Domain-Typen: Habit, Frequency, CreateHabitRequest
  • Infrastructure: API-Client fuer alle Habit-Endpoints
  • Application: Hooks useHabits, useCreateHabit, useUpdateHabit, useDeleteHabit
  • UI-Komponenten: HabitList, HabitForm, HabitCard
  • Komponenten-Tests mit React Testing Library

Phase 3: Habit Completion

3.1 Backend

  • TDD: HabitCompletion Entity (habitId, date, completed)
  • CompleteHabitUseCase Port + Application Service
  • HabitCompletionRepository Output-Port + JPA-Implementierung
  • POST /api/habits/{id}/complete Endpoint
  • Tests auf allen Ebenen

3.2 Frontend

  • Domain: HabitCompletion Typ
  • Checkbox/Button zum Abhaken in HabitCard
  • useCompleteHabit Hook mit Optimistic Update via React Query
  • Kalenderuebersicht (Mo-So) mit completed/missed Status

Phase 4: Streak Calculation

4.1 Backend

  • TDD: Domain-Service StreakCalculator (currentStreak, longestStreak)
  • Unit-Tests mit verschiedenen Szenarien (lueckenlos, Luecken, leere History)
  • Streak-Daten in Habit-Response integrieren

4.2 Frontend

  • Streak-Anzeige im HabitCard und HabitDetail
  • Visuelle Hervorhebung aktiver Streaks

Phase 5: Focus Sessions

5.1 Backend

  • TDD: FocusSession Entity (startTime, endTime, duration, habitId optional)
  • Ports: StartFocusSessionUseCase, StopFocusSessionUseCase
  • Application Service mit Start/Stop-Logik und Dauer-Berechnung
  • POST /api/focus/start und POST /api/focus/stop
  • Tests auf allen Ebenen

5.2 Frontend

  • Focus-Timer-Komponente mit Start/Stop
  • Laufende Timer-Anzeige
  • Optionale Verknuepfung mit einem Habit
  • useStartFocus, useStopFocus Hooks

Phase 6: Git Commit Tracking

6.1 Backend

  • RepositoryConfig Entity (path, enabled)
  • CommitActivity Entity (date, count)
  • Git-CLI-Adapter: Liest git log aus konfiguriertem Pfad
  • GET /api/git/activity Endpoint (commitsToday, commitsThisWeek, commitsPerDay)
  • Tests (Unit-Tests mit Mock fuer Git-Adapter)

6.2 Frontend

  • Repository-Pfad-Konfiguration
  • Git-Aktivitaetsanzeige im Dashboard
  • useGitActivity Hook

Phase 7: Stats API & Dashboard

7.1 Backend

  • GET /api/stats/weekly - Aggregierte Daten (Habits completed, Focus-Zeit, Commits)
  • Stats-Service aggregiert ueber die anderen Module

7.2 Frontend - Dashboard

  • Dashboard-Seite als Hauptansicht
  • Widgets: Today's Habits, Streak, Commits Today, Focus Time, Weekly Stats
  • Routing zwischen Dashboard, Habit List, Habit Detail, Focus Timer, Stats

Phase 8: Heatmap (Bonus)

  • GitHub-Style Contribution Heatmap Komponente
  • Basierend auf Habit-Completions und/oder Git-Commits
  • Farbabstufungen: keine / niedrig / mittel / hoch Aktivitaet
  • Integration im Stats-Modul

Phase 9: Heatmap for Focus Time

  • GitHub-Style Heatmap Komponente, zeigt die letzten zwei Wochen an.
  • Basierend auf der Focus-Zeit der letzten zwei Wochen.
  • Farbabstufungen: 1h / 2h / 4h / 8h
  • Die Heatmap soll in ein Tile neben dem Focus-Timer auf dem Dashboard angezeigt werden. Der Focus-Timer soll dafür über die Activity-Heatmap verschoben werden.