- Initialize iOS project with 6-tab navigation structure - Configure custom Light/Dark themes and AppColors - Define SwiftData models for Tasks, Tags, Goals, and TrackingRecords - Setup relationships (Super/Sub tags) and cascade delete rules - Implement Observable TrackingEngine for real-time timer updates
2.4 KiB
2.4 KiB
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; useIOS/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:
- task definitions,
- tag hierarchy,
- goals,
- tracking sessions / count logs,
- 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:
- Main
- Tasks
- Tags
- Goals
- Stats
- 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.