Go to file
2026-01-25 20:49:35 -06:00
Andromida Signed-off-by: Matt Bruce <mbrucedogs@gmail.com> 2026-01-25 20:49:35 -06:00
Andromida.xcodeproj Signed-off-by: Matt Bruce <mbrucedogs@gmail.com> 2026-01-25 19:56:09 -06:00
AndromidaTests Signed-off-by: Matt Bruce <mbrucedogs@gmail.com> 2026-01-25 16:05:42 -06:00
AndromidaUITests Initial Commit 2026-01-25 14:56:11 -06:00
.gitignore Signed-off-by: Matt Bruce <mbrucedogs@gmail.com> 2026-01-25 16:05:42 -06:00
AGENTS.md Signed-off-by: Matt Bruce <mbrucedogs@gmail.com> 2026-01-25 16:05:42 -06:00
README.md Signed-off-by: Matt Bruce <mbrucedogs@gmail.com> 2026-01-25 16:05:42 -06:00
TODO.md Signed-off-by: Matt Bruce <mbrucedogs@gmail.com> 2026-01-25 20:49:35 -06:00

Rituals (Andromida)

Rituals is a paid, offline-first habit tracker built around 4-week "ritual" arcs. It focuses on steady, daily check-ins with a calm visual language, zero paid backend dependencies, and optional iCloud sync for settings.

Overview

  • Concept: Habits are grouped into 4-week ritual arcs ("chapters") rather than endless streaks.
  • Tech: SwiftUI + SwiftData, Clean Architecture layering, Bedrock design system.
  • Data: Local persistence with SwiftData; settings sync via Bedrock CloudSyncManager (NSUbiquitousKeyValueStore).
  • No paid APIs: No external services required.

Feature Set

  • Today dashboard: Focus ritual, progress ring, and tap-to-complete habits.
  • Ritual library: View active and recent rituals.
  • Ritual detail: Full ritual summary + habit check-ins.
  • Insights: Lightweight metrics generated locally.
  • Settings:
    • Reminders, haptics, sound toggles
    • Ritual pacing options (focus style + length)
    • iCloud settings sync
    • DEBUG tools for icon generation and branding preview
  • Branding:
    • Bedrock AppLaunchView with custom theme
    • Native LaunchScreen.storyboard to prevent flash
    • Centralized branding config (colors, icons, launch)

Architecture

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
  • Protocols: Abstractions for stores/services

Project Structure

Andromida/
├── Andromida/                      # App target
│   ├── App/
│   │   ├── Models/                  # SwiftData + DTOs
│   │   ├── Protocols/               # Interfaces for stores/services
│   │   ├── Services/                # Stateless logic
│   │   ├── State/                   # @Observable stores
│   │   └── Views/                   # SwiftUI features + components
│   ├── Shared/                      # Bedrock theme + branding config
│   └── Resources/                   # LaunchScreen.storyboard
├── AndromidaTests/                  # Unit tests
└── AndromidaUITests/                # UI tests

Key Files

  • App entry & launch: Andromida/Andromida/AndromidaApp.swift
  • Bedrock theme: Andromida/Andromida/Shared/Theme/RitualsTheme.swift
  • Branding config: Andromida/Andromida/Shared/BrandingConfig.swift
  • Launch screen: Andromida/Andromida/Resources/LaunchScreen.storyboard
  • Ritual store: Andromida/Andromida/App/State/RitualStore.swift
  • Settings store: Andromida/Andromida/App/State/SettingsStore.swift
  • Settings UI: Andromida/Andromida/App/Views/Settings/SettingsView.swift

Data Model

  • Ritual: Title, theme, start date, duration (days), notes, habits
  • Habit: Title, symbol, goal, completion by day IDs
  • Settings: Stored via Bedrock CloudSyncManager (NSUbiquitousKeyValueStore)

Bedrock Integration

  • Theming: App-specific color providers + AppSurface, AppAccent, etc.
  • Branding: AppLaunchView, AppIconConfig, LaunchScreenConfig
  • Settings UI: SettingsToggle, SettingsSlider, SettingsSegmentedPicker, SettingsCard
  • Cloud Sync: iCloud sync for settings using CloudSyncManager

Localization

String catalogs are used for English, Spanish (Mexico), and French (Canada):

  • Andromida/Andromida/App/Localization/Localizable.xcstrings

Requirements

  • iOS 18.0+
  • Swift 5 (Bedrock requires Swift 6 in package; app builds under Swift 5 with modern concurrency)

Running

  1. Open Andromida.xcodeproj in Xcode.
  2. Build and run on iOS 18+ simulator or device.

Tests

  • Unit tests in AndromidaTests/
  • Run via Xcode Test navigator or:
    • xcodebuild test -scheme Andromida -destination 'platform=iOS Simulator,name=iPhone 15'

Notes

  • App is configured with a dark theme; the root view enforces .preferredColorScheme(.dark) to ensure semantic text legibility.
  • The launch storyboard matches the branding primary color to avoid a white flash.
  • App icon generation is available in DEBUG builds from Settings.