A Flutter web application for video calling and emergency support services. This app provides secure video communication with real-time signaling and post-call feedback functionality.
- π₯ Video Calling: WebRTC-based video calling with high-quality audio/video
- π Secure Authentication: Login system with validation
- π Real-time Communication: Socket.io for signaling and real-time updates
- π± Responsive Design: Works on desktop and mobile browsers
- π¨ Modern UI: Material Design 3 with custom theming
- π Multilingual Support: Arabic and English interface elements
- π Location Sharing: GPS location sharing during calls
- π Session Management: Post-call feedback and session tracking
- π Auto-reconnection: Automatic socket reconnection on connection loss
- β‘ Error Handling: Comprehensive error handling and user feedback
- Frontend: Flutter Web
- Real-time Communication: WebRTC, Socket.io
- State Management: StatefulWidget with proper lifecycle management
- HTTP Client: Dart HTTP package
- Architecture: Clean architecture with separation of concerns
lib/
βββ main.dart # App entry point
βββ screens/ # UI screens
β βββ login_screen.dart # Authentication screen
β βββ join_screen.dart # Main lobby/waiting screen
β βββ call_screen.dart # Video calling interface
βββ services/ # Business logic services
β βββ signalling.service.dart # Socket.io signaling
β βββ api_service.dart # HTTP API calls
βββ widgets/ # Reusable UI components
β βββ after_call_card.dart # Post-call feedback widget
βββ utils/ # Utilities and constants
βββ constants.dart # App constants and configuration
βββ app_theme.dart # Theme and styling
- Flutter SDK (>=3.8.0)
- Dart SDK
- Web browser (Chrome, Firefox, Safari, Edge)
-
Clone the repository
git clone <repository-url> cd Hemayatkom-webApp
-
Install dependencies
flutter pub get
-
Run the application
flutter run -d chrome
Update the configuration in lib/utils/constants.dart:
class AppConstants {
// Network Configuration
static const String websocketUrl = "https://your-server.com:443";
static const String apiBaseUrl = "https://your-server.com";
// Default Values (for development only)
static const String defaultEmail = 'your-email@example.com';
static const String defaultPassword = 'your-password';
}- Open the application in your web browser
- Use the demo credentials or configure your own authentication
- Click "Sign In" to access the main interface
- Enter the email address of the person you want to call
- Click the "Call" button
- Wait for the recipient to accept the call
- When someone calls you, an incoming call notification will appear
- Click "Accept" to join the call or "Decline" to reject it
After ending a call, you can provide feedback about the session status.
- Follow Flutter/Dart style guidelines
- Use meaningful variable and function names
- Add comments for complex logic
- Implement proper error handling
# Run tests
flutter test
# Run tests with coverage
flutter test --coverage# Build web app
flutter build web
# Build with specific renderer
flutter build web --web-renderer html- Remove hardcoded credentials from
constants.dart - Implement proper authentication with secure token storage
- Use HTTPS for all API communications
- Implement proper input validation and sanitization
- Add rate limiting for API calls
- Use environment variables for sensitive configuration
The application communicates with the following endpoints:
POST /validateMobileCall- Validate callee for video callsGET /session/open- Mark session as openGET /session/closed- Mark session as closed
- β Chrome 88+
- β Firefox 85+
- β Safari 14+
- β Edge 88+
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions, please contact the development team or create an issue in the repository.
- β Code Quality Improvements: Fixed all Flutter linter warnings and errors
- β Deprecated API Updates: Updated to use latest Flutter APIs (withValues, ColorScheme, etc.)
- β Debug Logging: Replaced print statements with proper debug logging using kDebugMode
- β Theme System: Enhanced Material Design 3 theming with proper color schemes
- β Error Handling: Improved error handling throughout the application
- β Code Organization: Better separation of concerns and cleaner architecture
- β Performance: Optimized build process and reduced bundle size
- Initial release with video calling functionality
- Authentication system
- Real-time signaling
- Post-call feedback
- Responsive design
- Error handling and validation