Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>

This commit is contained in:
Matt Bruce 2026-01-27 15:24:21 -06:00
parent 7d0581fdd8
commit 6c195c3083

View File

@ -21,7 +21,7 @@ Rituals is a paid, offline-first habit tracker built around customizable "ritual
### Rituals Tab ### Rituals Tab
- View all active rituals - View all active rituals
- Create new rituals from scratch or browse preset library - 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 - Full ritual management: edit, enable/disable, archive, delete
- Drag-to-reorder habits within rituals - 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 - **Views**: SwiftUI UI only, no business logic
- **State**: @Observable stores with app logic - **State**: @Observable stores with app logic
- **Services**: Stateless logic and data seeding - **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 - **Protocols**: Abstractions for stores/services
## Project Structure ## Project Structure
@ -102,7 +102,8 @@ Andromida/
│ ├── App/ │ ├── App/
│ │ ├── Models/ # SwiftData + DTOs │ │ ├── Models/ # SwiftData + DTOs
│ │ │ ├── Ritual.swift │ │ │ ├── Ritual.swift
│ │ │ ├── Habit.swift │ │ │ ├── RitualArc.swift
│ │ │ ├── ArcHabit.swift
│ │ │ ├── HabitCompletion.swift │ │ │ ├── HabitCompletion.swift
│ │ │ ├── InsightCard.swift │ │ │ ├── InsightCard.swift
│ │ │ ├── Milestone.swift │ │ │ ├── Milestone.swift
@ -116,6 +117,7 @@ Andromida/
│ │ │ └── RitualSeedService.swift │ │ │ └── RitualSeedService.swift
│ │ ├── State/ # @Observable stores │ │ ├── State/ # @Observable stores
│ │ │ ├── RitualStore.swift │ │ │ ├── RitualStore.swift
│ │ │ ├── CategoryStore.swift
│ │ │ └── SettingsStore.swift │ │ │ └── SettingsStore.swift
│ │ └── Views/ # SwiftUI features + components │ │ └── Views/ # SwiftUI features + components
│ │ ├── Today/ │ │ ├── Today/
@ -141,9 +143,10 @@ Andromida/
## Data Model ## Data Model
- **Ritual**: Title, theme, start date, duration (days), notes, habits, isEnabled, isArchived, timeOfDay, iconName, category - **Ritual**: Title, theme, notes, defaultDurationDays, timeOfDay, iconName, category, sortIndex, arcs (relationship)
- **Habit**: Title, symbol, completedDayIDs - **RitualArc**: Start date, end date, arc number, isActive, habits (relationship)
- **Milestone**: Day, title, symbol, isAchieved - **ArcHabit**: Title, symbolName, goal, completedDayIDs, sortIndex
- **Milestone**: Day, title, symbolName, isAchieved
- **Settings**: Stored via Bedrock CloudSyncManager (NSUbiquitousKeyValueStore) - **Settings**: Stored via Bedrock CloudSyncManager (NSUbiquitousKeyValueStore)
## Bedrock Integration ## Bedrock Integration
@ -152,17 +155,17 @@ Andromida/
- **Branding**: AppLaunchView, AppIconConfig, LaunchScreenConfig - **Branding**: AppLaunchView, AppIconConfig, LaunchScreenConfig
- **Settings UI**: SettingsToggle, SettingsSlider, SettingsSegmentedPicker, SettingsCard - **Settings UI**: SettingsToggle, SettingsSlider, SettingsSegmentedPicker, SettingsCard
- **Cloud Sync**: iCloud sync for settings using CloudSyncManager - **Cloud Sync**: iCloud sync for settings using CloudSyncManager
- **Onboarding**: Sherpa walkthrough system - **Onboarding**: Custom `SetupWizardView` flow (Sherpa integration pending)
## Localization ## 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` - `Andromida/Andromida/App/Localization/Localizable.xcstrings`
## Requirements ## Requirements
- iOS 18.0+ - iOS 18.6+
- Swift 5 (Bedrock requires Swift 6 in package; app builds under Swift 5 with modern concurrency) - Swift 5 (Bedrock requires Swift 6 in package; app builds under Swift 5 with modern concurrency)
## Running ## Running