# TallyFlow ## Product summary TallyFlow is an iOS productivity tracker for measuring tasks by either time or count. It supports hierarchical tags (super tag / sub tag), flexible goals, historical statistics, widgets, Live Activities, and a paired watchOS experience. ## Source root - iOS source root folder: `IOS/` - Do not assume the default inner app folder name is `TallyFlow`; use `IOS/` as the app source root. ## Non-negotiable constraints - Use SwiftUI. - Use SwiftData as the local persistence layer. - Keep the project buildable after every milestone. - Do not scan or refactor the entire project. - Read only the files explicitly listed in each prompt. - Edit only the files explicitly listed in each prompt. - Do not mention competitor app names in code comments, docs, or commit messages. - Korean is the default app language; English must be supported. - Theme must support Light and Dark modes with custom green/yellow palettes, not generic system default vibes. - All date aggregation must respect configurable week start day and configurable custom day start time. - Time tracking must support multiple concurrent running timer tasks. - A task can have multiple tags. - Selecting a sub tag implies its parent super tag is also associated logically. ## Architecture rules - Separate app shell, domain models, services, and feature views. - Create a single source of truth for: 1. task definitions, 2. tag hierarchy, 3. goals, 4. tracking sessions / count logs, 5. calendar boundary calculations. - Avoid business logic inside SwiftUI view bodies. - Put theme colors/tokens in dedicated files. - Keep milestone 1 free of widget/watch/live activity target work; only prepare the architecture so those can be added later. ## UX rules - Tab order must be: 1. Main 2. Tasks 3. Tags 4. Goals 5. Stats 6. Settings - Add a splash/loading screen that shows the app name. - Main tab should be scaffolded for: - today / week / month summary cards, - task action buttons, - future layout-edit mode. - Settings must be scaffolded for: - theme mode, - language, - week start day, - custom day start time, - premium section entry. ## Coding style - Prefer small SwiftUI views. - Prefer explicit model names over vague names. - Add TODO markers only where the next milestone will extend logic. - Do not add placeholder lorem ipsum text. - Do not introduce third-party dependencies in milestone 1.