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
- 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