Rebrand entire project from Feels to Reflect

Complete rename across all bundle IDs, App Groups, CloudKit containers,
StoreKit product IDs, data store filenames, URL schemes, logger subsystems,
Swift identifiers, user-facing strings (7 languages), file names, directory
names, Xcode project, schemes, assets, and documentation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-02-26 11:47:16 -06:00
parent b1a54d2844
commit 0442eab1f8
380 changed files with 858 additions and 1077 deletions

View File

@@ -1,4 +1,4 @@
# Feels App - Keyword Research & Strategy
# Reflect App - Keyword Research & Strategy
## iOS App Store Keyword Strategy
@@ -196,7 +196,7 @@ diario,humor,emocoes,bem-estar,ansiedade,rastreador,saude mental,sentimentos,hab
Based on analysis of Daylio, Moodistory, and Moodnotes:
| Keyword | Daylio | Moodistory | Feels Opportunity |
| Keyword | Daylio | Moodistory | Reflect Opportunity |
|---------|--------|------------|-------------------|
| mood tracker | #1 | #8 | Target Top 10 |
| mood journal | #2 | #5 | Target Top 10 |
@@ -209,7 +209,7 @@ Based on analysis of Daylio, Moodistory, and Moodnotes:
### Blue Ocean Keywords (Low Competition)
These keywords have low competition and Feels can potentially rank quickly:
These keywords have low competition and Reflect can potentially rank quickly:
1. **live activity mood** - No major competitors
2. **mood streak tracker** - Unique positioning

View File

@@ -1,11 +1,11 @@
# Feels App - Optimized App Store Metadata
# Reflect App - Optimized App Store Metadata
## App Name Options
### iOS App Store Constraints
- **Character Limit**: 30 characters
- **Best Practice**: Brand + Primary Keyword
- **Current Name**: iFeels / Feels
- **Current Name**: Reflect
---
@@ -13,7 +13,7 @@
#### Primary Recommendation
```
Feels: Mood Tracker & Journal
Reflect: Mood Tracker & Journal
```
**Characters**: 28/30
**Rationale**: Includes brand, primary keyword (mood tracker), and secondary keyword (journal)
@@ -22,11 +22,11 @@ Feels: Mood Tracker & Journal
| Option | Characters | Pros | Cons |
|--------|------------|------|------|
| `Feels - Daily Mood Tracker` | 26 | Clear value prop | Less unique |
| `Feels: Mood Diary & Streak` | 27 | Highlights streak feature | "Diary" less searched than "tracker" |
| `Feels - Mood Journal` | 20 | Simple, clean | Missing "tracker" keyword |
| `Feels: Track Your Mood` | 23 | Action-oriented | Generic phrasing |
| `Feels - Mood & Wellness Log` | 28 | Wellness angle | May be too broad |
| `Reflect - Daily Mood Tracker` | 26 | Clear value prop | Less unique |
| `Reflect: Mood Diary & Streak` | 27 | Highlights streak feature | "Diary" less searched than "tracker" |
| `Reflect - Mood Journal` | 20 | Simple, clean | Missing "tracker" keyword |
| `Reflect: Track Your Mood` | 23 | Action-oriented | Generic phrasing |
| `Reflect - Mood & Wellness Log` | 28 | Wellness angle | May be too broad |
---
@@ -101,9 +101,9 @@ Take care of your mental health one day at a time. Track moods from Lock Screen
```
Understand your emotions. One tap at a time.
Feels makes mood tracking effortless. Log how you're feeling in just one second from your Lock Screen, Widget, Apple Watch, Control Center, or through Siri. No friction, no complicated forms - just quick check-ins that build into powerful insights.
Reflect makes mood tracking effortless. Log how you're feeling in just one second from your Lock Screen, Widget, Apple Watch, Control Center, or through Siri. No friction, no complicated forms - just quick check-ins that build into powerful insights.
WHY FEELS?
WHY REFLECT?
Log Moods From Anywhere
- Live Activity on your Lock Screen
@@ -148,7 +148,7 @@ FEATURES AT A GLANCE
START YOUR WELLNESS JOURNEY
Download Feels today and take the first step toward understanding your emotional patterns. Whether you're tracking for mental wellness, building better habits, or simply curious about your emotional life - Feels is your companion.
Download Reflect today and take the first step toward understanding your emotional patterns. Whether you're tracking for mental wellness, building better habits, or simply curious about your emotional life - Reflect is your companion.
Premium Subscription:
- Unlock all customization options
@@ -165,7 +165,7 @@ Questions or feedback? We'd love to hear from you!
### German (DE)
**Title**: `Feels: Stimmungstracker`
**Title**: `Reflect: Stimmungstracker`
**Subtitle**: `Widget, Streaks & Tagebuch`
**Promotional Text**:
```
@@ -174,7 +174,7 @@ Tracke deine Stimmung in Sekunden - vom Sperrbildschirm, Widget oder der Apple W
### Spanish (ES)
**Title**: `Feels: Estado de Animo`
**Title**: `Reflect: Estado de Animo`
**Subtitle**: `Widget, Rachas y Diario`
**Promotional Text**:
```
@@ -183,7 +183,7 @@ Registra tu estado de animo en segundos desde cualquier lugar - pantalla de bloq
### French (FR)
**Title**: `Feels: Suivi d'Humeur`
**Title**: `Reflect: Suivi d'Humeur`
**Subtitle**: `Widget, Series et Journal`
**Promotional Text**:
```
@@ -192,7 +192,7 @@ Suivez votre humeur en quelques secondes depuis l'ecran de verrouillage, le widg
### Japanese (JA)
**Title**: `Feels: 気分トラッカー`
**Title**: `Reflect: 気分トラッカー`
**Subtitle**: `ウィジェット&日記`
**Promotional Text**:
```
@@ -201,7 +201,7 @@ Suivez votre humeur en quelques secondes depuis l'ecran de verrouillage, le widg
### Korean (KO)
**Title**: `Feels: 기분 트래커`
**Title**: `Reflect: 기분 트래커`
**Subtitle**: `위젯, 연속기록 및 일기`
**Promotional Text**:
```
@@ -210,7 +210,7 @@ Suivez votre humeur en quelques secondes depuis l'ecran de verrouillage, le widg
### Portuguese - Brazil (PT-BR)
**Title**: `Feels: Rastreador Humor`
**Title**: `Reflect: Rastreador Humor`
**Subtitle**: `Widget, Sequencias e Diario`
**Promotional Text**:
```
@@ -224,7 +224,7 @@ Registre seu humor em segundos de qualquer lugar - tela de bloqueio, widget ou A
### Version 1.0.2 Template
```
Thank you for using Feels!
Thank you for using Reflect!
This update includes:
- Improved widget layout for small size
@@ -235,7 +235,7 @@ This update includes:
- Better text contrast for mood colors
- Full-screen theme preview
We're constantly improving Feels based on your feedback. If you enjoy the app, please consider leaving a review - it helps others discover us!
We're constantly improving Reflect based on your feedback. If you enjoy the app, please consider leaving a review - it helps others discover us!
```
---
@@ -243,8 +243,8 @@ We're constantly improving Feels based on your feedback. If you enjoy the app, p
## A/B Testing Priorities
### Test 1: App Name
- A: `Feels: Mood Tracker & Journal`
- B: `Feels - Daily Mood Tracker`
- A: `Reflect: Mood Tracker & Journal`
- B: `Reflect - Daily Mood Tracker`
### Test 2: Subtitle
- A: `Widget, Streaks & Live Activity`

View File

@@ -1,8 +1,8 @@
# Feels App - App Store Optimization Strategy
# Reflect App - App Store Optimization Strategy
## Executive Summary
Feels is a mood tracking app for iOS, watchOS, and macOS with strong differentiating features including Live Activities, customizable widgets, multiple entry points (Siri, Control Center, Watch), streak tracking, and journaling capabilities. This document outlines a comprehensive ASO strategy to maximize organic visibility and conversions.
Reflect is a mood tracking app for iOS, watchOS, and macOS with strong differentiating features including Live Activities, customizable widgets, multiple entry points (Siri, Control Center, Watch), streak tracking, and journaling capabilities. This document outlines a comprehensive ASO strategy to maximize organic visibility and conversions.
---
@@ -25,8 +25,8 @@ Feels is a mood tracking app for iOS, watchOS, and macOS with strong differentia
### Current Positioning
- **App Name**: iFeels / Feels
- **Bundle ID**: com.tt.ifeel
- **App Name**: Reflect
- **Bundle ID**: com.88oakapps.reflect
- **Version**: 1.0.2
- **Monetization**: Subscription ($0.99/month or $9.99/year)
@@ -36,7 +36,7 @@ Feels is a mood tracking app for iOS, watchOS, and macOS with strong differentia
### Direct Competitors
| App | Key Strength | Weakness vs. Feels |
| App | Key Strength | Weakness vs. Reflect |
|-----|-------------|-------------------|
| Daylio | Market leader, no-typing interface | No Live Activities, limited customization |
| Moodistory | Beautiful design, PDF export | Less entry points |
@@ -44,7 +44,7 @@ Feels is a mood tracking app for iOS, watchOS, and macOS with strong differentia
| Reflectly | AI journaling | Heavy on journaling, less on tracking |
| Bearable | Comprehensive health tracking | Overwhelming for simple mood tracking |
### Competitive Advantages of Feels
### Competitive Advantages of Reflect
1. **Live Activities** - Unique differentiator (few/no competitors have this)
2. **Control Center integration** - Fastest logging possible

View File

@@ -1,4 +1,4 @@
# Feels App - Visual Asset Optimization Guide
# Reflect App - Visual Asset Optimization Guide
## Overview
@@ -100,7 +100,7 @@ Visual assets account for a significant portion of App Store conversion. This gu
**Goal**: Showcase ecosystem integration
**Visual Elements**:
- Apple Watch showing the Feels app
- Apple Watch showing the Reflect app
- Mood logging interface on watch
- iPhone optional in background
- Caption: "Log moods from your wrist"
@@ -180,7 +180,7 @@ Visual assets account for a significant portion of App Store conversion. This gu
```
[0-3s]
Visual: Feels logo animates in
Visual: Reflect logo animates in
Text: "Track moods in seconds"
[3-8s]
@@ -201,7 +201,7 @@ Text: "Make it yours"
[22-25s]
Visual: App icon with download CTA
Text: "Download Feels today"
Text: "Download Reflect today"
```
### Audio Recommendations
@@ -231,7 +231,7 @@ The app likely uses a mood-related icon. Key considerations:
|---------|-------------|-----------------|
| A | Abstract smiley face | Broad appeal |
| B | Gradient orb/circle | Modern/minimal |
| C | "F" with mood colors | Brand-focused |
| C | "R" with mood colors | Brand-focused |
| D | Calendar with mood | Feature-focused |
### Color Psychology

Binary file not shown.

View File

@@ -1,30 +1,30 @@
# Apple Platform Features
This document covers the new Apple-specific features integrated into Feels, including how to trigger and test each one.
This document covers the new Apple-specific features integrated into Reflect, including how to trigger and test each one.
---
## 1. Control Center Widget
**File:** `FeelsWidget2/FeelsWidget.swift` (FeelsMoodControlWidget)
**File:** `ReflectWidget/ReflectMoodControlWidget.swift` (ReflectMoodControlWidget)
**What it does:** Adds a quick-access button to Control Center that opens Feels to log your mood.
**What it does:** Adds a quick-access button to Control Center that opens Reflect to log your mood.
### How to Add to Control Center
1. Open **Settings** > **Control Center**
2. Scroll down to find **Feels - Log Mood**
2. Scroll down to find **Reflect - Log Mood**
3. Tap the **+** button to add it
4. Alternatively: Swipe down from top-right, tap **+** button, find Feels
4. Alternatively: Swipe down from top-right, tap **+** button, find Reflect
### How to Test
1. Add the widget to Control Center (steps above)
2. Open Control Center (swipe down from top-right corner)
3. Tap the "Log Mood" button
4. Feels app should open
4. Reflect app should open
### Implementation Details
- Uses `ControlWidget` and `StaticControlConfiguration`
- `OpenFeelsIntent` (AppIntent) handles the button tap
- `OpenReflectIntent` (AppIntent) handles the button tap
- `openAppWhenRun = true` ensures the app opens
---
@@ -36,11 +36,11 @@ This document covers the new Apple-specific features integrated into Feels, incl
**What it does:** Syncs mood entries to Apple Health using the State of Mind API, allowing users to see mood correlations with sleep, exercise, and other health metrics.
### Setup Required
1. Enable HealthKit in **Settings** > **Feels** > **Health**
1. Enable HealthKit in **Settings** > **Reflect** > **Health**
2. Grant write permission for "State of Mind"
### How to Test
1. Go to Feels settings and enable HealthKit sync
1. Go to Reflect settings and enable HealthKit sync
2. Log a mood entry
3. Open **Apple Health** app
4. Go to **Browse** > **Mental Wellbeing** > **State of Mind**
@@ -72,26 +72,26 @@ This document covers the new Apple-specific features integrated into Feels, incl
#### Log Mood
- **Phrases:**
- "Log my mood in Feels"
- "Log mood as [mood] in Feels"
- "Record my mood in Feels"
- "I'm feeling [mood] in Feels"
- "Track my mood in Feels"
- "Log my mood in Reflect"
- "Log mood as [mood] in Reflect"
- "Record my mood in Reflect"
- "I'm feeling [mood] in Reflect"
- "Track my mood in Reflect"
#### Check Today's Mood
- **Phrases:**
- "What's my mood today in Feels"
- "Check today's mood in Feels"
- "How am I feeling in Feels"
- "What's my mood today in Reflect"
- "Check today's mood in Reflect"
- "How am I feeling in Reflect"
#### Get Mood Streak
- **Phrases:**
- "What's my mood streak in Feels"
- "Check my streak in Feels"
- "How many days in a row in Feels"
- "What's my mood streak in Reflect"
- "Check my streak in Reflect"
- "How many days in a row in Reflect"
### How to Test
1. Say "Hey Siri, log my mood in Feels"
1. Say "Hey Siri, log my mood in Reflect"
2. Siri will prompt you to select a mood (Horrible, Bad, Average, Good, Great)
3. Confirm selection
4. Siri responds with confirmation and shows a visual snippet
@@ -99,7 +99,7 @@ This document covers the new Apple-specific features integrated into Feels, incl
### How to Add to Shortcuts App
1. Open **Shortcuts** app
2. Tap **+** to create new shortcut
3. Search for "Feels"
3. Search for "Reflect"
4. Available actions: Log Mood, Check Today's Mood, Get Mood Streak
### Implementation Details
@@ -112,7 +112,7 @@ This document covers the new Apple-specific features integrated into Feels, incl
## 4. Custom Tips System
**Files:**
- `Shared/FeelsTips.swift` (Tips definitions and manager)
- `Shared/ReflectTips.swift` (Tips definitions and manager)
- `Shared/Views/TipModalView.swift` (Modal UI)
**What it does:** Shows themed modal tips to help users discover features throughout the app. Tips appear as beautiful sheets that match the app's current theme.
@@ -133,15 +133,15 @@ This document covers the new Apple-specific features integrated into Feels, incl
1. Tips appear automatically based on conditions (one per session)
2. To reset tips for testing:
```swift
FeelsTipsManager.shared.resetAllTips()
ReflectTipsManager.shared.resetAllTips()
```
3. To disable tips globally:
```swift
FeelsTipsManager.shared.tipsEnabled = false
ReflectTipsManager.shared.tipsEnabled = false
```
### Implementation Details
- `FeelsTipsManager.shared.resetSession()` called in `FeelsApp.init()`
- `ReflectTipsManager.shared.resetSession()` called in `ReflectApp.init()`
- Each tip has `isEligible` property based on user activity parameters
- Tips show as themed modal sheets with gradient headers
- Only one tip shown per app session
@@ -152,7 +152,7 @@ FeelsTipsManager.shared.tipsEnabled = false
**Files:**
- `Shared/MoodStreakActivity.swift` (Manager + Attributes)
- `FeelsWidget2/FeelsWidget.swift` (Widget views)
- `ReflectWidget/ReflectMoodControlWidget.swift` (Widget views)
**What it does:** Shows mood streak progress on the Lock Screen and Dynamic Island.
@@ -192,7 +192,7 @@ await LiveActivityManager.shared.endAllActivities()
- **Minimal:** Flame icon only
### How to Test
1. Ensure Live Activities are enabled: **Settings** > **Feels** > **Live Activities**
1. Ensure Live Activities are enabled: **Settings** > **Reflect** > **Live Activities**
2. Start a Live Activity (see code above)
3. Lock your phone to see Lock Screen view
4. On iPhone 14 Pro+, check Dynamic Island
@@ -223,16 +223,16 @@ New entry types added to track mood entry sources:
## Entitlements & Info.plist
### Entitlements (`Feels (iOS).entitlements`)
### Entitlements (`Reflect (iOS).entitlements`)
- `com.apple.developer.healthkit` - HealthKit access
- `com.apple.developer.healthkit.access` - health-records
### Info.plist (`Feels--iOS--Info.plist`)
### Info.plist (`Reflect--iOS--Info.plist`)
- `NSSupportsLiveActivities` - Enables Live Activities
- `NSHealthShareUsageDescription` - HealthKit read permission description
- `NSHealthUpdateUsageDescription` - HealthKit write permission description
### Widget Info.plist (`FeelsWidgetExtension-Info.plist`)
### Widget Info.plist (`ReflectWidgetExtension-Info.plist`)
- `NSSupportsLiveActivities` - Enables Live Activity widget
---
@@ -240,7 +240,7 @@ New entry types added to track mood entry sources:
## Testing Checklist
- [ ] Control Center widget appears and opens app
- [ ] Siri responds to "Log my mood in Feels"
- [ ] Siri responds to "Log my mood in Reflect"
- [ ] Siri shows mood options and confirms selection
- [ ] HealthKit sync writes State of Mind entries
- [ ] Tips appear at appropriate times

View File

@@ -307,7 +307,7 @@ Analysis of 8 direct competitors in the iOS mood tracking/journaling category. K
---
## Competitive Gaps & Opportunities for Feels
## Competitive Gaps & Opportunities for Reflect
### Underserved Areas
1. **Simplicity** - Most apps are feature-heavy; simple "vote your mood" is rare

View File

@@ -1,10 +1,10 @@
# Custom Tips System Documentation
This document describes all tips implemented in the Feels app, including their display conditions and locations.
This document describes all tips implemented in the Reflect app, including their display conditions and locations.
## Overview
Tips are displayed as themed modal sheets that match the user's chosen app theme. The system is managed by `FeelsTipsManager` (singleton) and configured with:
Tips are displayed as themed modal sheets that match the user's chosen app theme. The system is managed by `ReflectTipsManager` (singleton) and configured with:
- **Display Frequency**: One tip per app session
- **Global Toggle**: `tipsEnabled` boolean in UserDefaults
- **Persistence**: Shown tip IDs stored in UserDefaults
@@ -34,7 +34,7 @@ Tips are displayed as themed modal sheets that match the user's chosen app theme
**Display Conditions**:
- User has logged at least **7 moods**
**Parameter**: `moodLogCount: Int` (incremented via `FeelsTipsManager.shared.onMoodLogged()`)
**Parameter**: `moodLogCount: Int` (incremented via `ReflectTipsManager.shared.onMoodLogged()`)
**Location**: InsightsView (via `.aiInsightsTip()`)
@@ -43,13 +43,13 @@ Tips are displayed as themed modal sheets that match the user's chosen app theme
### 3. SiriShortcutTip
**Title**: "Use Siri to Log Moods"
**Message**: "Say 'Hey Siri, log my mood as great in Feels' for hands-free logging."
**Message**: "Say 'Hey Siri, log my mood as great in Reflect' for hands-free logging."
**Icon**: `mic.fill`
**Display Conditions**:
- User has logged at least **3 moods**
**Parameter**: `moodLogCount: Int` (incremented via `FeelsTipsManager.shared.onMoodLogged()`)
**Parameter**: `moodLogCount: Int` (incremented via `ReflectTipsManager.shared.onMoodLogged()`)
**Location**: SettingsContentView (Features section header, via `.siriShortcutTip()`)
@@ -64,7 +64,7 @@ Tips are displayed as themed modal sheets that match the user's chosen app theme
**Display Conditions**:
- User has viewed the Settings screen
**Parameter**: `hasSeenSettings: Bool` (set via `FeelsTipsManager.shared.onSettingsViewed()`)
**Parameter**: `hasSeenSettings: Bool` (set via `ReflectTipsManager.shared.onSettingsViewed()`)
**Location**: SettingsContentView (Health Kit toggle, via `.healthKitSyncTip()`)
@@ -106,29 +106,29 @@ Tips are displayed as themed modal sheets that match the user's chosen app theme
**Display Conditions**:
- User has a current streak of at least **3 days**
**Parameter**: `currentStreak: Int` (updated via `FeelsTipsManager.shared.updateStreak(_:)`)
**Parameter**: `currentStreak: Int` (updated via `ReflectTipsManager.shared.updateStreak(_:)`)
**Location**: DayView (via `.moodStreakTip()`)
---
## FeelsTipsManager API
## ReflectTipsManager API
```swift
// Reset session flag (call on app launch)
FeelsTipsManager.shared.resetSession()
ReflectTipsManager.shared.resetSession()
// Reset all tips (for testing)
FeelsTipsManager.shared.resetAllTips()
ReflectTipsManager.shared.resetAllTips()
// Update parameters
FeelsTipsManager.shared.onMoodLogged() // Increments mood log count
FeelsTipsManager.shared.onSettingsViewed() // Marks settings as viewed
FeelsTipsManager.shared.updateDaysUsingApp(_:) // Updates days using app
FeelsTipsManager.shared.updateStreak(_:) // Updates current streak
ReflectTipsManager.shared.onMoodLogged() // Increments mood log count
ReflectTipsManager.shared.onSettingsViewed() // Marks settings as viewed
ReflectTipsManager.shared.updateDaysUsingApp(_:) // Updates days using app
ReflectTipsManager.shared.updateStreak(_:) // Updates current streak
// Global toggle
FeelsTipsManager.shared.tipsEnabled = true/false
ReflectTipsManager.shared.tipsEnabled = true/false
```
---
@@ -147,7 +147,7 @@ Tips can be attached to views using these convenience modifiers:
.moodStreakTip()
// Or use the generic modifier with custom gradient colors:
.feelsTip(FeelsTips.customizeLayout, gradientColors: [.purple, .blue])
.reflectTip(ReflectTips.customizeLayout, gradientColors: [.purple, .blue])
```
---
@@ -165,6 +165,6 @@ Tips are displayed as themed modal sheets with:
## Files
- **Tips & Manager**: `Shared/FeelsTips.swift`
- **Tips & Manager**: `Shared/ReflectTips.swift`
- **Modal View**: `Shared/Views/TipModalView.swift`
- **Configuration**: `FeelsTipsManager.shared.resetSession()` called in `FeelsApp.swift`
- **Configuration**: `ReflectTipsManager.shared.resetSession()` called in `ReflectApp.swift`

View File

@@ -50,8 +50,8 @@ Override launch behavior when needed:
Targeted suite:
```bash
xcodebuild -project Feels.xcodeproj \
-scheme "Feels (iOS)" \
xcodebuild -project Reflect.xcodeproj \
-scheme "Reflect (iOS)" \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
-only-testing:"Tests iOS/<SuiteName>" \
test
@@ -60,8 +60,8 @@ xcodebuild -project Feels.xcodeproj \
Full iOS UI suite:
```bash
xcodebuild -project Feels.xcodeproj \
-scheme "Feels (iOS)" \
xcodebuild -project Reflect.xcodeproj \
-scheme "Reflect (iOS)" \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
-only-testing:"Tests iOS" \
test

View File

@@ -134,7 +134,7 @@ ASO is the process of optimizing your app's visibility and conversion rate in th
│ │
│ HIGHEST WEIGHT: App Title (30 chars) │
│ ├─ Brand name + 1-2 most important keywords │
│ └─ Example: "Feels - Mood Journal & Tracker" │
│ └─ Example: "Reflect - Mood Journal & Tracker" │
│ │
│ HIGH WEIGHT: Subtitle (30 chars) │
│ ├─ Secondary keywords & value proposition │

View File

@@ -80,7 +80,7 @@ Analysis of top 5 mood tracking app competitors on the iOS App Store.
---
## Key Takeaways for Feels
## Key Takeaways for Reflect
1. **Quick logging is valued** - Daylio and Moodistory emphasize speed
2. **Privacy is a differentiator** - Moodistory's privacy-first approach stands out