Reaffirm 🎙️
A beautiful iOS app for recording and looping personal affirmations.
Features ✨
- Record Affirmations: Create audio recordings of your affirmations with a simple, intuitive interface
- Playback Controls: Play, pause, and seek through your affirmations with an expandable playhead
- Auto-Play Loop: Automatically play all affirmations in sequence, looping back to the start
- Drag to Reorder: Rearrange your affirmations by dragging them into any order
- Rename Recordings: Tap on any affirmation name to edit it
- Background Music: Listen to music while your affirmations play - they mix together seamlessly
- Settings: Toggle auto-play on/off and view statistics about your affirmations
How It Works 🎯
- Create: Tap the + button to record a new affirmation
- Organize: Drag recordings to reorder, tap names to rename
- Listen: Tap play on any affirmation - it expands to show playback controls
- Loop: With auto-play enabled, affirmations play continuously in sequence
- Reflect: Play your favorite music in the background while affirmations play over it
Technical Details 🛠️
- iOS 17.0+ required
- Built with SwiftUI
- Uses AVFoundation for audio recording and playback
- Audio session configured to:
- Mix with other audio sources (like music apps)
- Duck other audio when affirmations play
- Support background audio playback
- Recordings saved as high-quality M4A files
- Metadata persisted using UserDefaults
Building & Running 📱
- Open
Reaffirm.xcodeproj in Xcode
- Select your target device or simulator
- Press Cmd+R to build and run
Note: Microphone permissions will be requested on first use.
Project Structure 📁
Reaffirm/
├── ReaffirmApp.swift # App entry point
├── ContentView.swift # Main navigation container
├── Models/
│ └── AudioRecording.swift # Recording data model
├── Managers/
│ └── AudioManager.swift # Audio recording/playback logic
└── Views/
├── RecordingListView.swift # List of all recordings
├── RecordingRowView.swift # Individual recording cell with playback
├── RecordingView.swift # Recording interface
└── SettingsView.swift # App settings
Audio Session Configuration 🔊
The app is specifically configured to allow background music to continue playing:
- Category:
.playAndRecord - Enables both recording and playback
- Options:
.mixWithOthers - Allows music from other apps to play simultaneously
.duckOthers - Lowers music volume when affirmations play
.defaultToSpeaker - Plays through speaker by default
This means you can:
- Open your favorite music app (Apple Music, Spotify, etc.)
- Start playing music
- Return to Reaffirm and play your affirmations
- Both will play together, with music ducking when affirmations speak
License 📄
This project is open source and available for personal use.
Built with 💙 for positive self-talk and personal growth.