2024-12-08: Project Implementation Complete

Completed

  • Created project structure with Swift Package Manager
  • Implemented TimeTrackerShared package:
    • Models: Tag, TagsFile, TimeRecord, ExportOptions
    • Services: FileStorageService, LocalFileStorageService, ExportService, TimeTrackingService
    • Unit tests for model encoding/decoding
  • Built TimeTrackerMac (macOS 14+):
    • NavigationSplitView with sidebar (Today, History, Tags)
    • Running timers with live duration updates
    • Tag management with color picker
    • Record list with delete support
  • Built TimeTrackerIOS (iOS 17+):
    • TabView navigation (Today, History, Tags, Settings)
    • Running timers section
    • CSV export with share sheet
    • Tag creation with color grid

Architecture Decisions

  • Local storage first (~/Documents/Minuta/)
  • Swift Package Manager for all builds (no Xcode workspace required for initial dev)
  • Shared AppState pattern on both platforms
  • Actor-based services for thread safety

Data Storage

  • Tags: ~/Documents/Minuta/tags.json
  • Records: ~/Documents/Minuta/records/YYYY/MM/YYYY-MM-DD_HHmmss.json

Build Commands

  • Shared: cd Shared && swift build && swift test
  • macOS: cd TimeTrackerMac && swift build && swift run
  • iOS: cd TimeTrackerIOS && swift build (requires Xcode for device deployment)

Known Limitations

  • Tests require full Xcode (not just Command Line Tools)
  • iOS app requires Xcode for simulator/device testing
  • No iCloud sync yet (local storage only)
  • No menu bar support on macOS (stretch goal)