A decentralized, protest-proof chat application with Bluetooth mesh networking and external platform integration.
Mesh enables secure, peer-to-peer communication that works even when traditional internet infrastructure is compromised. Built with Flutter, it combines Bluetooth Low Energy (BLE) mesh networking with automatic synchronization to Telegram channels.
- Text Messages - Send encrypted text messages across the mesh network
- Voice Notes - Record and share audio messages (15s max)
- Image Sharing - Capture or select photos with automatic compression
- Video Messages - Record and share short videos (15s max)
- Threading - Reply to messages with visual thread indicators
- Captions - Add captions to all media types
- Device Discovery - Automatic scanning for nearby mesh-enabled devices
- Multi-hop Relay - Messages propagate through multiple devices
- Encryption - End-to-end encryption for all mesh communications
- Offline Operation - Works without internet connectivity
- Auto-reconnection - Handles connection drops gracefully
- Telegram Bot - Automatic upload of all media to configured Telegram channel
- Offline Queue - Messages queued when offline, sent when connection restored
- Retry Logic - Automatic retry with exponential backoff for failed uploads
- End-to-End Encryption - All messages encrypted using AES-256
- Content Hashing - Duplicate message prevention
- Secure Storage - Credentials stored using Flutter Secure Storage
- Permission Management - Granular permission requests and handling
- Modern UI - Clean, intuitive interface with dark/light theme support
- Real-time Updates - Live peer count and connection status
- Loading States - Visual feedback for all operations
- Error Handling - Comprehensive error messages and recovery
- Haptic Feedback - Tactile responses for better UX
- Coordinate activities when cellular networks are jammed
- Share real-time updates and media from events
- Maintain communication during internet shutdowns
- Disaster response coordination
- Search and rescue operations
- Community emergency networks
- Communication in areas with poor cellular coverage
- Hiking and camping groups
- Rural community networks
- Decentralized communication without central servers
- Reduced digital footprint
- Censorship-resistant messaging
- Flutter 3.3.1+ - Cross-platform mobile development
- Provider - State management
- Material Design 3 - Modern UI components
- Flutter Blue Plus - Bluetooth Low Energy communication
- HTTP - External platform integration
- SQLite - Local message persistence
- Shared Preferences - App settings
- Flutter Secure Storage - Credential management
- Image Compression - Automatic optimization for transmission
- Video Compression - Size reduction for mesh transmission
- Audio Recording - High-quality voice note capture
- AES-256 Encryption - Message encryption
- SHA-256 Hashing - Content integrity verification
- Flutter SDK 3.3.1 or higher
- Android Studio / VS Code
- Android device with Bluetooth LE support
- Git
git clone https://github.com/Gibson990/mesh_app.git
cd mesh_appflutter pub getCurrent Configuration: The app is pre-configured to upload to the official MO29 channel.
For Production Use:
- Official Channel: https://t.me/theMO29
- Bot: @theMO29_bot (already configured)
- Auto-upload: All media with timestamps and captions
- Access: Public channel for transparency and monitoring
For Custom Setup:
- Create a bot via @BotFather
- Get your bot token
- Create a channel and add your bot as admin
- Get the channel ID
- Update
lib/config/telegram_config.dart:
static String botToken = 'YOUR_BOT_TOKEN_HERE';
static String channelId = 'YOUR_CHANNEL_ID_HERE';# Debug build
flutter run
# Release build
flutter build apk --release- Send and receive messages via Bluetooth mesh
- Share media (images, videos, audio) with automatic compression
- View all content in threads and media tabs
- Participate in mesh network communication
- No internet required for basic functionality
- All regular user capabilities
- Verified badge on messages for authenticity
- Internet access responsibility for external platform sync
- Media consistency management - ensures all collected media from threads is properly compressed and uploaded
- Automatic upload coordination to Telegram channel for permanent storage
- Network reliability - provides backup and synchronization when internet is available
Why Admin Access is Needed: Admins serve as bridge nodes between the offline mesh network and external platforms. When internet connectivity is available, admins automatically compress and upload all collected media from the mesh network to external channels (currently Telegram), ensuring nothing is lost and providing a permanent backup of important communications during protests, emergencies, or remote operations.
π± Install App
β
π Grant Permissions (Bluetooth, Location, Camera, Microphone)
β
π‘ Automatic Bluetooth scanning starts
β
π Optional: Admin configures Telegram integration
β
β
Ready to communicate
π¬ Open App
β
π See peer count (nearby devices)
β
π Send Message/Media
β
π‘ Message propagates through mesh
β
π± Other users receive instantly
β
π Continues offline indefinitely
π¬ Receive mesh messages
β
πΈ Collect media from all threads
β
ποΈ Automatic compression (images <1MB, videos <5MB)
β
π€ Auto-upload to Telegram channel
β
β
Permanent backup created
β
π Sync status shared with mesh
π· Capture/Select Media
β
ποΈ Automatic compression
β
π¬ Add caption (optional)
β
π‘ Send via Bluetooth mesh
β
π± Appears in both Threads & Media tabs
β
π Admin auto-uploads to Telegram (when online)
β
π Permanent link available at: https://t.me/theMO29
- Channel: MO29 Official
- Auto-upload: All media with captions and timestamps
- Compression: Optimized for Telegram limits
- Backup: Permanent storage of mesh communications
- Access: Public channel for transparency
- Participants join mesh network automatically
- Share real-time updates via text and media
- Coordinate movements through threaded conversations
- Admin uploads everything to Telegram for permanent record
- External supporters follow via https://t.me/theMO29
- First responders connect via Bluetooth mesh
- Share situation updates and location info
- Coordinate resources through secure messaging
- Document evidence with automatic media backup
- Command center monitors via Telegram channel
- Team members stay connected without cell towers
- Share location updates and safety check-ins
- Document findings with photos and videos
- Sync with base when internet becomes available
- Maintain records through automated uploads
- Pure Bluetooth mesh communication
- No internet required
- Messages propagate peer-to-peer
- Media shared directly between devices
- Perfect for censored or jammed networks
- All offline functionality continues
- Plus: Automatic backup to Telegram
- Plus: External monitoring capability
- Plus: Permanent record creation
- Plus: Wider audience reach via https://t.me/theMO29
- Install app and grant permissions
- Start communicating immediately
- Messages work offline via Bluetooth mesh
- Media automatically compressed and shared
- Complete regular user setup
- Configure Telegram bot credentials
- Ensure periodic internet access
- Monitor https://t.me/theMO29 for uploads
- Coordinate between mesh and external platforms
// lib/core/constants/app_constants.dart
class AppConstants {
static const Duration bluetoothScanDuration = Duration(seconds: 10);
static const int maxMeshNodes = 8;
static const int maxHopCount = 5;
static const int maxMessageLength = 1000;
}- Images: Auto-compressed to max 1MB
- Videos: 15 seconds max, compressed to 5MB
- Audio: 15 seconds max, 500KB limit
- All messages encrypted with AES-256
- Keys rotated every 24 hours
- Content hashed to prevent duplicates
flutter test- Bluetooth device discovery
- Message sending/receiving
- Media upload/download
- Telegram integration
- Offline functionality
- Permission handling
- Error recovery
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests for new functionality
- Ensure all tests pass:
flutter test - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow Dart Style Guide
- Use meaningful variable and function names
- Add comments for complex logic
- Maintain test coverage above 80%
- Core messaging (text, voice, images, videos)
- Bluetooth device discovery and connection
- Message threading and replies with visual indicators
- Media compression and optimization (images <1MB, videos <5MB)
- Telegram integration with MO29 channel (https://t.me/theMO29)
- Admin/Coordinator access levels with verified badges
- Automatic media upload and backup system
- Local storage and persistence
- Permission management and error handling
- Professional project organization and documentation
- Actual Bluetooth mesh message transmission (BLE communication layer)
- File chunking for large media over BLE network
- Battery optimization for continuous scanning
- Advanced encryption key management
- Group chat functionality with admin moderation
- Message search and filtering capabilities
- Export/backup conversations to external storage
- Advanced mesh routing algorithms for better propagation
- Cross-platform desktop support (Windows, macOS, Linux)
- Web interface for network monitoring and administration
- Bluetooth mesh transmission not fully implemented
- Large file transmission over BLE needs optimization
- Battery optimization needed for continuous scanning
- iOS support requires additional testing
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter team for the amazing framework
- Bluetooth LE community for protocols and best practices
- Open source contributors and testers
- Privacy and security researchers
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Telegram Channel: https://t.me/theMO29
Built with β€οΈ for a more connected and decentralized world.