A mindful iOS app for daily reflection and AI-powered emotional support
Take 3 minutes daily to reflect, record, and receive empathetic AI responses
Features β’ App Flow β’ Installation β’ Usage β’ Architecture
- 3-minute guided sessions with intuitive voice recording
- Real-time countdown timer with pause/resume functionality
- Speech-to-text transcription using Apple's Speech framework
- Hands-free experience for natural, flowing conversations
- OpenAI GPT-3.5-turbo integration for contextual responses
- Empathetic listener personality trained for emotional support
- Text-to-speech synthesis for audio feedback
- Personalized encouragement based on your reflections
- Beautiful dark theme designed for evening reflection
- Onboarding flow for first-time users
- Session history with searchable past conversations
- Daily notifications (9 PM reminder) for consistent habits
- Local data storage with encrypted session persistence
- Secure API key management through environment variables
- No data tracking - your reflections stay private
- Granular permissions for microphone and notifications
- π Home Screen: Simple "How was your day?" prompt with start button
- ποΈ Recording Session: 3-minute timer with pause/resume controls
- π€ AI Reflection: Personalized empathetic response display
- π Session History: Browse and review past conversations
πΈ Screenshots coming soon! Feel free to contribute by adding actual app screenshots to the
docs/
folder.
- Xcode 15.0+ (iOS 15.0+ deployment target)
- macOS 12.0+ for development
- OpenAI API Account (Get one here)
-
Clone the repository
git clone https://github.com/codeanurag/iListenPro.git cd iListenPro
-
Open in Xcode
open iListenPro.xcodeproj
-
Configure OpenAI API Key
- Get your API key from OpenAI Platform
- In Xcode: Product β Scheme β Edit Scheme...
- Go to Run β Environment Variables
- Add:
OPENAI_API_KEY
=your_api_key_here
-
Build and Run
- Select your target device/simulator
- Press
Cmd + R
to build and run
- Launch the app and complete the onboarding flow
- Grant permissions for microphone and notifications
- Start your first session by tapping "Start Conversation"
- Record: Share your thoughts for up to 3 minutes
- Process: AI transcribes and generates an empathetic response
- Reflect: Read and listen to your personalized feedback
- Review: Access your conversation history anytime
- Find a quiet space for clear audio recording
- Speak naturally - the AI is trained to understand conversational tone
- Use daily notifications to build a consistent reflection habit
- Review past sessions to track your emotional journey
- SwiftUI - Modern declarative UI framework
- Combine - Reactive programming and data flow
- AVFoundation - Audio recording and playback
- Speech Framework - Speech-to-text transcription
- UserNotifications - Daily reminder system
- OpenAI API - AI-powered response generation
iListenPro/
βββ π± Views/
β βββ ContentView.swift # Main app interface
β βββ OnboardingView.swift # First-time user flow
β βββ SessionListView.swift # Conversation history
β βββ SessionDetailView.swift # Individual session view
β βββ ReflectionOverlay.swift # AI response display
β βββ LoadingOverlay.swift # Processing states
βββ π§ ViewModels/
β βββ SessionViewModel.swift # Core business logic
βββ π¦ Models/
β βββ Session.swift # Data models
β βββ SessionStore.swift # Persistence layer
β βββ AudioRecorder.swift # Recording functionality
β βββ SpeechSynthesizer.swift # Text-to-speech
β βββ OpenAIChatResponse.swift # API response models
βββ π¨ Utilities/
β βββ CircularCountdownView.swift # Timer UI component
β βββ RecordingControlsView.swift # Recording interface
β βββ PrimaryButtonStyle.swift # Custom button styling
β βββ SessionUIState.swift # UI state management
βββ π Info.plist # App configuration
- MVVM Architecture for clean separation of concerns
- Reactive Programming with Combine publishers
- Dependency Injection through environment objects
- State Management with enum-based UI states
OPENAI_API_KEY
- Your OpenAI API key for AI responses
- Session Duration: Modify
duration
inSessionViewModel
(default: 180 seconds) - Notification Time: Update
dateComponents.hour
inscheduleReminder()
(default: 21:00) - AI Model: Change
model
parameter in API request (default: gpt-3.5-turbo)
- Local Storage: All conversations stored locally using iOS secure storage
- No Cloud Sync: Your data never leaves your device (except for AI processing)
- Encrypted API Keys: Secure environment variable management
- Session Cleanup: Automatic audio file cleanup after processing
- Microphone: Required for voice recording functionality
- Notifications: Optional for daily reflection reminders
- Speech Recognition: Required for transcription features
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow Swift style guidelines
- Write unit tests for new features
- Update documentation for API changes
- Test on multiple iOS versions
- iOS 15.0+
- Xcode 15.0+
- Swift 5.0+
- OpenAI API Key
- Mood Tracking - Visual mood trends over time
- Custom Prompts - Personalized reflection questions
- Export Options - Share or backup your sessions
- Widget Support - Home screen quick access
- Dark/Light Theme - System appearance adaptation
- Accessibility - VoiceOver and Dynamic Type support
- Background recording limitations on iOS
- Network connectivity requirements for AI responses
This project is licensed under the MIT License - see the LICENSE file for details.
- OpenAI for providing the GPT API
- Apple for the Speech and AVFoundation frameworks
- SwiftUI Community for inspiration and best practices
Have questions or need help?
- π Bug Reports: Open an issue
- π‘ Feature Requests: Start a discussion
- π§ Contact: codeanuragpandit@gmail.com
Made with β€οΈ for mindful reflection
"A few minutes of self-care can go a long way."