diff --git a/README.md b/README.md index bfe4ece..5c9cc0b 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Rituals is a paid, offline-first habit tracker built around customizable "ritual ### Rituals Tab - View all active rituals - Create new rituals from scratch or browse preset library -- 13 categorized presets (Health, Productivity, Mindfulness, Self-Care) +- 14 categorized presets (Health, Productivity, Mindfulness, Self-Care) - Full ritual management: edit, enable/disable, archive, delete - Drag-to-reorder habits within rituals @@ -91,7 +91,7 @@ This project follows Clean Architecture and protocol-first design: - **Views**: SwiftUI UI only, no business logic - **State**: @Observable stores with app logic - **Services**: Stateless logic and data seeding -- **Models**: SwiftData models and plain structs +- **Models**: SwiftData models and plain structs. The architecture is built around **Ritual Arcs**, allowing rituals to be renewed while preserving historical accuracy. - **Protocols**: Abstractions for stores/services ## Project Structure @@ -102,7 +102,8 @@ Andromida/ │ ├── App/ │ │ ├── Models/ # SwiftData + DTOs │ │ │ ├── Ritual.swift -│ │ │ ├── Habit.swift +│ │ │ ├── RitualArc.swift +│ │ │ ├── ArcHabit.swift │ │ │ ├── HabitCompletion.swift │ │ │ ├── InsightCard.swift │ │ │ ├── Milestone.swift @@ -116,6 +117,7 @@ Andromida/ │ │ │ └── RitualSeedService.swift │ │ ├── State/ # @Observable stores │ │ │ ├── RitualStore.swift +│ │ │ ├── CategoryStore.swift │ │ │ └── SettingsStore.swift │ │ └── Views/ # SwiftUI features + components │ │ ├── Today/ @@ -141,9 +143,10 @@ Andromida/ ## Data Model -- **Ritual**: Title, theme, start date, duration (days), notes, habits, isEnabled, isArchived, timeOfDay, iconName, category -- **Habit**: Title, symbol, completedDayIDs -- **Milestone**: Day, title, symbol, isAchieved +- **Ritual**: Title, theme, notes, defaultDurationDays, timeOfDay, iconName, category, sortIndex, arcs (relationship) +- **RitualArc**: Start date, end date, arc number, isActive, habits (relationship) +- **ArcHabit**: Title, symbolName, goal, completedDayIDs, sortIndex +- **Milestone**: Day, title, symbolName, isAchieved - **Settings**: Stored via Bedrock CloudSyncManager (NSUbiquitousKeyValueStore) ## Bedrock Integration @@ -152,17 +155,17 @@ Andromida/ - **Branding**: AppLaunchView, AppIconConfig, LaunchScreenConfig - **Settings UI**: SettingsToggle, SettingsSlider, SettingsSegmentedPicker, SettingsCard - **Cloud Sync**: iCloud sync for settings using CloudSyncManager -- **Onboarding**: Sherpa walkthrough system +- **Onboarding**: Custom `SetupWizardView` flow (Sherpa integration pending) ## Localization -String catalogs are used for English, Spanish (Mexico), and French (Canada): +String catalogs are used for English (en), Spanish (es-MX), and French (fr-CA): - `Andromida/Andromida/App/Localization/Localizable.xcstrings` ## Requirements -- iOS 18.0+ +- iOS 18.6+ - Swift 5 (Bedrock requires Swift 6 in package; app builds under Swift 5 with modern concurrency) ## Running