3.1 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Commands
Development
dart run bin/xp_nix.dart
- Run the main applicationdart test
- Run all testsdart test test/specific_test.dart
- Run a specific test filedart analyze
- Run static analysisdart pub get
- Install dependenciesnix develop
- Enter development environment with Dart and SQLite
Nix Environment
This project uses Nix flakes for development environment management. The flake provides Dart SDK and SQLite with proper library paths configured.
Architecture Overview
Dependency Injection & Testing
The codebase uses dependency injection through interfaces to enable both production and testing modes:
-
Interfaces (
lib/src/interfaces/
): Define contracts for core componentsIActivityDetector
- Window/application activity detectionIIdleMonitor
- User idle state monitoringIDesktopEnhancer
- Desktop theme/visual enhancementsITimeProvider
- Time operations (for testing time manipulation)
-
Production Implementations: Real system integrations (Hyprland, system time)
-
Test Mocks (
lib/src/testing/
): Controllable implementations for testing
Core Components
ProductivityMonitor - Central orchestrator that:
- Coordinates activity detection, idle monitoring, and desktop enhancement
- Calculates XP rewards based on activity types and time multipliers
- Manages level progression and achievement system
- Handles both event-driven (via IActivityDetector) and polling modes
Activity Classification System:
- Uses
ActivityEventType
enum for categorizing activities (coding, meetings, etc.) - Supports user-defined application classifications stored in database
- Fallback categorization based on application names and window titles
XP & Gamification:
- Time-based multipliers for deep work hours vs late night penalty
- Focus session bonuses with milestone rewards (60min, 120min, 180min)
- Level-based visual themes applied via desktop enhancer
- Achievement system with level, focus, and session-based rewards
Database Schema
SQLite database with tables for:
- Daily stats (XP, focus time, meeting time, level)
- Activity events with duration and metadata
- Application classifications (user-defined)
- Achievements and focus sessions
- Theme change history and streak tracking
Configuration
JSON-based configuration (config/xp_config.json
) defines:
- XP multipliers by activity type and time of day
- Achievement definitions and rewards
- Focus session bonus structure
- Monitoring intervals and thresholds
Web Dashboard
Built-in web server (lib/src/web/
) provides real-time dashboard at http://localhost:8080 showing stats, recent activities, and progress visualization.
Testing Strategy
The architecture supports comprehensive testing through:
- Interface-based dependency injection
- Time manipulation via
ITimeProvider
- Mock implementations that simulate user behavior
- Simulation tests that model complete work days
- Integration tests for idle detection and activity consolidation