A cross-platform push-to-talk communication system designed for group activities like cycling, running, and fitness sessions.
This is a monorepo containing multiple packages that work together to provide a complete communication solution:
├── packages/
│ ├── mobile/ # Flutter mobile app (iOS/Android)
│ └── server/ # Go backend API server
├── docs/ # Documentation
├── scripts/ # Build and deployment scripts
└── .github/workflows/ # CI/CD pipelines
- Push-to-Talk (PTT) functionality with Bluetooth headset support
- Dual PTT modes: Toggle mode and Hold mode
- Cross-platform: iOS and Android support
- Real-time communication ready infrastructure
- Modern UI with state-aware visual feedback
- RESTful API built with Go
- WebRTC signaling support (planned)
- Room management for group communications
- OpenAPI/Swagger documentation
- Flutter SDK >= 3.2.0
- Go >= 1.21
- Node.js >= 18 (for tooling)
cd packages/mobile
flutter pub get
flutter runcd packages/server
go mod tidy
go run main.go- ✅ Flutter Mobile App: Core PTT functionality implemented
- ✅ Android Support: Full Bluetooth headset button capture
⚠️ iOS Support: UI complete, button capture limited by system restrictions- 🚧 Backend API: Basic structure in place, needs WebRTC integration
- 📋 Documentation: In progress
- iOS: Media button capture restricted by Apple's security policies
- Long Press: Triggers system voice assistants on both platforms
- Recommendation: Focus on Android deployment for full functionality
Run all tests:
# Mobile tests
cd packages/mobile && flutter test
# Backend tests
cd packages/server && go test ./...
# Integration tests
./scripts/test-all.sh- GitHub Actions for automated testing and builds
- Flutter: Automated builds for iOS and Android
- Go: Automated testing and Docker builds
- Quality Gates: Linting, testing, and security checks
# Build mobile apps
./scripts/build-mobile.sh
# Deploy backend
./scripts/deploy-server.sh- 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
- Code Style: Follow language-specific style guides
- Testing: Maintain >80% test coverage
- Documentation: Update docs for all public APIs
- Linting: All code must pass linting checks
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter Team for the excellent cross-platform framework
- WebRTC Community for real-time communication protocols
- Open Source Contributors who make projects like this possible
Built with ❤️ for better group communication