A secure, decentralized communication application built with React Native and TypeScript, featuring end-to-end encryption and Bluetooth mesh networking for off-grid communication.
- Multi-Platform Support: Runs on iOS, Android, and Web
- Real-time Messaging: Instant secure messaging with encryption
- Message History: Persistent conversation history with timestamps
- Contact Management: Device discovery and contact organization
- End-to-End Encryption: All messages encrypted using modern cryptographic standards
- Bluetooth Mesh Networking: Decentralized communication without internet dependency
- Secure Key Exchange: Automatic public/private key management
- Device Authentication: Trusted device pairing and verification
- Emergency Broadcast System: Critical alert broadcasting across the mesh network
- Predefined Emergency Types:
- π Medical Emergency
- π₯ Fire Emergency
β οΈ Safety Warning- π€ Missing Person Alert
- Custom Emergency Messages: User-defined emergency broadcasts
- Automatic Rebroadcasting: Extended reach through TTL-based mesh forwarding
- Priority System: Critical, High, Medium, Low priority levels
- Dark/Light Theme Toggle: πβοΈ Seamless theme switching with system preference support
- Intuitive Navigation: Clean, modern interface across all screens
- Network Visualization: Interactive network topology mapping
- Connection Status: Real-time network and security status indicators
- Cross-Platform UI: Consistent experience across devices
- Welcome interface with system status
- Quick access to key features
- App status monitoring (Connection, Bluetooth Mesh, Security)
- Emergency broadcast quick access
- Individual and group conversations
- Message bubbles with sender identification
- Attachment support (camera, microphone)
- Real-time message delivery status
- Bluetooth device discovery
- Contact management with avatars
- Device pairing and trust levels
- Signal strength indicators
- Visual network topology
- Device connection visualization
- Zoom and navigation controls
- Network health indicators
- Security preferences configuration
- Theme selection (Light/Dark/Auto)
- Network configuration options
- Privacy controls
- Emergency system settings
- Quick emergency alert buttons
- Custom message composition
- Real-time emergency message feed
- Priority-based message display
- React Native: Cross-platform mobile development
- React Native Web: Web platform compatibility
- TypeScript: Type-safe development
- React Context: State management
- Webpack: Web bundling and optimization
- Bluetooth Service: Mesh networking and device discovery
- Crypto Service: End-to-end encryption implementation
- Emergency Broadcast Service: Critical alert management
- Network Service: Connection and routing management
- Modern Cryptography: Secure encryption algorithms
- Key Management: Automatic key generation and exchange
- Message Authentication: Cryptographic message verification
- Secure Storage: Encrypted local data storage
src/
βββ components/
β βββ common/ # Reusable UI components
β β βββ Button.tsx
β β βββ Card.tsx
β β βββ SearchInput.tsx
β β βββ StatusCard.tsx
β β βββ ThemeToggle.tsx
β β βββ DeviceCard.tsx
β βββ chat/ # Chat-specific components
β βββ MessageBubble.tsx
β βββ MessageInput.tsx
βββ screens/ # Application screens
β βββ HomeScreen.tsx
β βββ ChatScreen.tsx
β βββ ContactsScreen.tsx
β βββ NetworkScreen.tsx
β βββ SettingsScreen.tsx
β βββ EmergencyScreen.tsx
βββ services/ # Core services
β βββ BluetoothService.ts
β βββ CryptoService.ts
β βββ EmergencyBroadcastService.ts
β βββ NetworkService.ts
βββ theme/ # Design system
β βββ colors.ts
β βββ typography.ts
β βββ spacing.ts
β βββ ThemeContext.tsx
βββ types/ # TypeScript definitions
βββ App.tsx # Main application component
- Node.js (v18 or higher)
- npm or yarn
- React Native development environment (for mobile)
-
Clone the repository
git clone <repository-url> cd securecomm
-
Install dependencies
npm install
-
Start development server
For web development:
npm run web
For mobile development:
# iOS npm run ios # Android npm run android
npm run web- Start web development servernpm run build:web- Build web application for productionnpm run ios- Run on iOS simulatornpm run android- Run on Android emulatornpm run test- Run test suitenpm run lint- Run ESLint
Themes can be customized in src/theme/colors.ts:
- Light theme colors
- Dark theme colors
- Typography settings
- Spacing and layout values
Bluetooth and mesh network settings are configured in:
src/services/BluetoothService.tssrc/services/NetworkService.ts
Encryption and security settings in:
src/services/CryptoService.ts- Key generation and management
- Encryption algorithm selection
The emergency broadcast system provides critical communication capabilities:
- Medical Emergency: Immediate medical assistance requests
- Fire Emergency: Fire-related alerts and evacuations
- Safety Warning: General safety and hazard warnings
- Missing Person: Person location and search alerts
- Custom Messages: User-defined emergency communications
- CRITICAL: Life-threatening emergencies
- HIGH: Urgent safety concerns
- MEDIUM: Important notifications
- LOW: General information
- Automatic message rebroadcasting
- TTL (Time To Live) based forwarding
- Mesh network coverage extension
- Priority-based message handling
- End-to-end message encryption
- Secure key exchange protocols
- Message authentication codes
- Forward secrecy implementation
- Device authentication
- Trusted device management
- Secure mesh networking
- Anti-tampering protection
- No central server dependency
- Local data storage
- User-controlled data sharing
- Anonymous communication options
SecureComm features a comprehensive theme system:
- Light Mode: Clean, professional appearance for daytime use
- Dark Mode: Easy on eyes for low-light conditions
- Auto Mode: Follows system preference automatically
- Sun (βοΈ) and Moon (π) icons for intuitive switching
- Available on every screen for maximum convenience
- Instant theme switching with smooth transitions
- Full-featured web application
- Responsive design for desktop and mobile browsers
- Progressive Web App (PWA) capabilities
- WebRTC for peer-to-peer communication
- Native iOS and Android applications
- Bluetooth Low Energy (BLE) support
- Background processing capabilities
- Push notification support
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Generate coverage report
npm run test:coverage- Unit tests for services and utilities
- Component testing for UI elements
- Integration tests for core features
- End-to-end testing for critical workflows
# Build for production
npm run build:web
# Deploy to hosting service
# (Configure with your preferred hosting platform)# iOS App Store
npm run build:ios
# Google Play Store
npm run build:androidWe welcome contributions to SecureComm! Please read our contributing guidelines:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
- Follow TypeScript best practices
- Maintain code coverage above 80%
- Use semantic commit messages
- Document new features and APIs
- Ensure cross-platform compatibility
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue on GitHub
- Check the documentation
- Review the troubleshooting guide
- React Native community for cross-platform framework
- Cryptographic libraries for security implementation
- Design inspiration from modern communication apps
- Open source contributors and maintainers
SecureComm - Secure, decentralized communication for everyone, everywhere.