Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
7d0581fdd8
commit
6c195c3083
21
README.md
21
README.md
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user