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)