A WhatsApp-themed Flutter app for SIP audio calling with power dialer functionality, built with Firebase and Siprix VoIP SDK.
- SIP Audio Calls: Make and receive SIP calls with mute, hold, resume, and DTMF support
- Firebase Authentication: Google and Microsoft sign-in
- Power Dialer: Automated outbound calling with pacing and lead management
- Call Notes: Take notes during calls with categorization
- After-Call Wrap: Record outcomes and schedule recalls
- Analytics & Crashlytics: Comprehensive event tracking and error reporting
- Architecture: MVVM + Riverpod + BLoC for call state management
- Security: TLS/SRTP, secure storage for SIP credentials
- Platform Support: Android and iOS with native call handling
- CI/CD: GitHub Actions with Firebase App Distribution
lib/
├── core/
│   ├── analytics/          # Analytics and Crashlytics
│   ├── config/            # Environment configuration
│   ├── routing/           # App navigation
│   └── theme/             # WhatsApp-like theming
├── features/
│   ├── auth/              # Firebase authentication
│   ├── call/              # SIP calling functionality
│   ├── dialer/            # Power dialer features
│   ├── notes/             # Call notes and wrap-up
│   ├── notifications/     # Push notifications
│   └── settings/          # App settings and testing
└── shared/                # Shared utilities and widgets
- Flutter SDK (stable channel)
- Firebase project with Authentication, Analytics, and Crashlytics enabled
- Siprix VoIP SDK license
- 
Clone the repository git clone <repository-url> cd talkloop 
- 
Install dependencies flutter pub get 
- 
Configure Firebase flutterfire configure 
- 
Set environment variables # For development - Set your SIPRIX license key export SIPRIX_LICENSE="LicensedTo[Licensed_for_Talkloop]_Platforms[ANDR_IOS]_Features[V_MC_MA_MSG]_SupportTill[20260122]_UpdatesTill[20251031]_Key[MC0CFQCQZ3qnNR6BPcpvFlp3uLbMePIRpwIUBLQskVIDr1qHtgK+TJiXiAfAkHo=]" export SIP_SERVER="your-sip-server" export SIP_EXT="your-extension" 
- 
Run the app flutter run 
- Create a Firebase project
- Enable Authentication (Google + Microsoft providers)
- Enable Analytics and Crashlytics
- Run flutterfire configureto generate config files
- Obtain a Siprix VoIP SDK license
- Configure SIP server credentials in the app
- Set up push notifications for incoming calls
- Add secrets to GitHub repository:
- FIREBASE_TOKEN: Firebase CLI token
- FIREBASE_ANDROID_APP_ID: Android app ID from Firebase
- SIPRIX_LICENSE: Siprix license key
 
- Sign in with Google or Microsoft
- User data is stored in Firebase
- Add SIP account in Settings
- Use dial pad to make calls
- Answer incoming calls via native UI
- Create campaigns with lead lists
- Set pacing between calls
- Start/stop dialing sessions
- Record call outcomes
- Take notes during calls
- Categorize notes (Price, Objection, etc.)
- After-call wrap-up with outcomes
- Schedule recalls
The app tracks the following events:
- auth_login_success,- auth_login_fail
- sip_register_ok,- sip_register_fail
- call_outgoing_start,- call_incoming_show,- call_answer,- call_connected
- call_hold,- call_resume,- call_mute,- call_unmute,- call_end,- call_fail
- dialer_start,- dialer_pause,- dialer_next_lead,- dialer_wrap_submit
- recall_scheduled,- recall_triggered
- Permissions for audio, internet, wake lock, notifications
- Foreground service for active calls
- FCM for push notifications
- Background modes for audio and VoIP
- CallKit and PushKit entitlements
- APNs configuration for VoIP notifications
- SIP credentials stored in secure storage
- No secrets in repository
- TLS/SRTP for call encryption
- User consent for recording/transcription
flutter testflutter analyze# Android
flutter build apk --release --dart-define=SIPRIX_LICENSE="LicensedTo[Licensed_for_Talkloop]_Platforms[ANDR_IOS]_Features[V_MC_MA_MSG]_SupportTill[20260122]_UpdatesTill[20251031]_Key[MC0CFQCQZ3qnNR6BPcpvFlp3uLbMePIRpwIUBLQskVIDr1qHtgK+TJiXiAfAkHo=]"
# iOS
flutter build ios --release --dart-define=SIPRIX_LICENSE="LicensedTo[Licensed_for_Talkloop]_Platforms[ANDR_IOS]_Features[V_MC_MA_MSG]_SupportTill[20260122]_UpdatesTill[20251031]_Key[MC0CFQCQZ3qnNR6BPcpvFlp3uLbMePIRpwIUBLQskVIDr1qHtgK+TJiXiAfAkHo=]"- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and analysis
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For issues and questions:
- Create an issue in the repository
- Check the documentation
- Review Firebase and Siprix SDK documentation