How woodbutcherth1/hourstracker works
HoursTracker is an iOS work-hours and payroll companion for workers configuring Israeli work rules. The principal workflow is clocking or entering shifts, calculating overtime and estimated pay, reviewing history, and exporting reports. Separate capabilities include workplace geofence reminders, OCR-based timesheet and payslip import, an assistant over personal records, and synchronization across devices. The graph combines README-documented product behavior with relationships visible in the supplied source index and excerpts; some subsystem links are omitted where implementation wiring was not shown.
Main entry points: AppViewModel.swift Work Session Controller · AssistantEngine.swift Assistant Engine · OvertimeCalculator.swift Overtime and Pay · ExportManager.swift Report Export
Components 25
Time and Pay
- Work Session Controller
HoursTracker/ViewModels/AppViewModel.swift - Work Sessions
HoursTracker/Models/WorkSession.swift - Workplace Rules
HoursTracker/Models/WorkplaceSettings.swift - Overtime and Pay
HoursTracker/Models/OvertimeCalculator.swift - Arrival Reminders
HoursTracker/Managers/LocationReminderManager.swift
Storage and Sync
- Local Persistence
HoursTracker/Managers/PersistenceManager.swift - CloudKit Sync
HoursTracker/Managers/CloudKitSyncManager.swift - Account Sync
HoursTracker/Managers/SupabaseAccountSyncManager.swift
Documents and Imports
- Export Screen
HoursTracker/Views/ExportView.swift - Report Export
HoursTracker/Managers/ExportManager.swift - Full Data Export
HoursTracker/Managers/FullDataExportManager.swift - Timesheet Scanner
HoursTracker/Managers/TimesheetScannerManager.swift - Scanner Provider Router
HoursTracker/Managers/Scanner/ScannerLLMRouter.swift - Payslip Library
HoursTracker/Managers/PayslipStore.swift - Payslip Provider Router
HoursTracker/Managers/Scanner/PayslipLLMRouter.swift
Assistant
- Assistant Chat
HoursTracker/Views/Assistant/AssistantChatSheet.swift - Assistant Controller
HoursTracker/ViewModels/AssistantChatViewModel.swift - Assistant Engine
HoursTracker/Managers/Assistant/AssistantEngine.swift - Assistant Provider Router
HoursTracker/Managers/Assistant/AssistantLLMRouter.swift
App Surfaces
- App Shell
HoursTracker/HoursTrackerApp.swift - Home and History
HoursTracker/Views - Apple Watch App
HoursTrackerWatch/WatchSessionStore.swift - Widget and Live Activity
HoursTrackerWidget/HoursWidget.swift
Other components
- Worker
- Exported Report
Connections 29
- Worker → App Shell: uses
- App Shell → Work Session Controller: hosts
HoursTracker/HoursTrackerApp.swift - Worker → Home and History: tracks shifts
- Home and History → Work Session Controller: manages sessions
HoursTracker/Views/Assistant/AssistantChatSheet.swift - Work Session Controller → Work Sessions: updates
HoursTracker/ViewModels/AppViewModel.swift - Work Sessions → Overtime and Pay: calculates pay
HoursTracker/Models/OvertimeCalculator.swift - Workplace Rules → Overtime and Pay: sets work rules
HoursTracker/Models/OvertimeCalculator.swift - Worker → Arrival Reminders: sets workplace
- Work Session Controller → Local Persistence: persists
HoursTracker/ViewModels/AppViewModel.swift - Local Persistence → CloudKit Sync: syncs
- Worker → Account Sync: syncs account
- Worker → Export Screen: requests export
- Export Screen → Work Session Controller: requests report
- Work Session Controller → Report Export: builds report
HoursTracker/ViewModels/AppViewModel.swift - Report Export → Overtime and Pay: uses pay rules
HoursTracker/Managers/ExportManager.swift - Report Export → Exported Report: creates
HoursTracker/Managers/ExportManager.swift - Worker → Full Data Export: imports or exports data
- Work Session Controller → Timesheet Scanner: starts import
HoursTracker/ViewModels/AppViewModel.swift - Timesheet Scanner → Scanner Provider Router: structures OCR
HoursTracker/Managers/TimesheetScannerManager.swift - Worker → Payslip Library: manages payslips
- Payslip Library → Payslip Provider Router: extracts fields
- Worker → Assistant Chat: asks questions
HoursTracker/Views/Assistant/AssistantChatSheet.swift - Assistant Chat → Assistant Controller: sends chat
HoursTracker/Views/Assistant/AssistantChatSheet.swift - Assistant Controller → Assistant Engine: requests answers
- Assistant Engine → Overtime and Pay: calculates totals
HoursTracker/Managers/Assistant/AssistantEngine.swift - Assistant Engine → Payslip Library: reads records
HoursTracker/Managers/Assistant/AssistantEngine.swift - Assistant Provider Router → Assistant Engine: plans answers
- Worker → Apple Watch App: tracks on watch
- Worker → Widget and Live Activity: views activity