An open-source Flutter sleep and meditation sounds app that brings nature's most calming audio directly to your device with seamless media controls and complete offline functionality.
I built this in less than a day. Publishing to Github is a good stopping point. Publishing to the app stores is a task for the future.
- π§οΈ Ambient Sounds - Rain and flowing water with true gapless looping
- π Dark Theme - Sleep-friendly interface with warm, low-brightness colors
- π Background Playback - Audio continues when app is minimized or screen is locked
- π± Media Controls - Play/pause from notification (Android) or Control Center (iOS/macOS)
- π Completely Offline - No internet connection required
- π Privacy First - Zero data collection, no analytics, no ads
- π΅ Gapless Looping - Powered by flutter_soloud for seamless, low-latency audio
- Flutter SDK (3.9.2 or higher)
- Dart SDK (included with Flutter)
- For Android: Android Studio or VS Code with Flutter extension
- For iOS: Xcode (macOS only)
-
Clone the repository:
git clone https://github.com/13rac1/StillFlow.git cd StillFlow -
Install dependencies:
flutter pub get
-
Run the app:
# For Android flutter run # For iOS (macOS only) flutter run -d ios # For a specific device flutter devices flutter run -d <device-id>
Use the included Makefile for easy building:
# Show all available commands
make help
# Build for specific platforms
make build-android # Build Android APK
make build-macos # Build macOS app
make build-linux # Build Linux app
make build-dmg # Build macOS DMG installer (requires: brew install create-dmg)
# Build everything
make build-all
# Prepare releases (copies to releases/ folder with version number)
make release-android # Creates releases/StillFlow-1.0.0-android.apk
make release-macos # Creates releases/StillFlow-1.0.0.dmg
make release-linux # Creates releases/StillFlow-1.0.0-linux-x64.tar.gzManual builds:
Android:
flutter build apk --releaseiOS:
flutter build ios --release
# Open ios/Runner.xcworkspace in Xcode to archive and exportmacOS:
flutter build macos --releaseLinux:
flutter build linux --release# Run all tests
flutter test
# Run tests with coverage
flutter test --coverage
# Run specific test file
flutter test test/models/sound_test.dart-
Enable Developer Options:
- Go to Settings β About Phone
- Tap "Build Number" 7 times until you see "You are now a developer"
-
Enable USB Debugging:
- Go to Settings β Developer Options
- Enable "USB Debugging"
-
Connect and verify device:
# Connect via USB cable # On your device, approve the "Allow USB debugging" prompt # Verify device is connected flutter devices
-
Run the app:
flutter run # Or specify device if you have multiple flutter run -d <device-id>
Once running on device, verify the core functionality:
- Play a sound - Tap Rain or Flowing Water
- Test background playback - Press home button β verify audio continues
- Test lock screen - Lock device β verify audio continues
- Test notification controls - Check notification panel β tap play/pause
- Test seamless looping - Let audio play for several minutes to verify no gaps
Device not showing?
# Check ADB connection
flutter doctor -v
# Restart ADB server
adb kill-server
adb start-server
adb devicesBuild fails?
# Clean and rebuild
flutter clean
flutter pub get
flutter runlib/
βββ main.dart # App entry point
βββ models/
β βββ sound.dart # Sound data model
βββ screens/
β βββ home_screen.dart # Main screen with audio controls
βββ services/
β βββ audio_handler.dart # Audio service handler for media controls
β βββ audio_service.dart # flutter_soloud audio engine wrapper
βββ widgets/
βββ sound_tile.dart # Sound selection tile widget
assets/
βββ audio/ # Ambient sound loops (.ogg format)
βββ images/ # App icons and branding
test/
βββ models/
βββ screens/
βββ services/
βββ widgets/
The app includes ambient sound loops in assets/audio/:
- Rain sounds - Gentle rain ambience (OGG format, 5.7MB)
- Flowing water - Peaceful stream sounds (OGG format, 5.5MB)
Audio files use OGG Vorbis format for:
- High quality compression
- Gapless looping support
- Cross-platform compatibility
Total app size: ~15MB with audio assets and icons
- β Android 6.0+ (API level 23) - Full media controls and background playback
- β iOS 12.0+ - Control Center integration and background audio
- β macOS 10.14+ - Native desktop experience with media controls
- β Linux - Desktop experience with media controls
- β Web - Background audio limitations in browsers
- β Windows - Not currently supported
This project is licensed under the AGPL-3.0 License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- flutter_soloud - Low-latency, gapless audio playback with native SoLoud integration
- audio_service - System integration for media controls and notifications
- audio_session - Audio focus and session management
- True gapless looping at the native level (no gaps between loop points)
- Low-latency audio playback for responsive controls
- Background audio support with proper session management
- Media controls integration (notifications, lock screen, Control Center)
- Proper audio focus handling (pauses when other apps need audio)
- Audio files sourced from royalty-free libraries
- Built with Flutter
- Audio powered by flutter_soloud and audio_service
- App icon: Custom water drop with ripples design
