A comprehensive Flutter network monitoring application that checks the availability and status of URLs, DNS hosts, and Certificate Revocation Lists (CRLs). The app provides real-time monitoring with certificate expiry warnings and detailed status information.
- URL Monitoring: Check HTTP/HTTPS endpoint availability
- DNS Resolution: Verify DNS hostname resolution
- CRL Verification: Validate Certificate Revocation List availability and integrity
- Certificate Tracking: Monitor SSL certificate validity and expiry dates
- Expiry Warnings: Alert when certificates are expiring within 30 days
- Material Design 3: Modern, responsive UI with Material Components
- Bottom Navigation: Easy access to Monitor and Settings screens
- Tab Navigation: Organized view by monitoring type (URLs, DNS, CRLs)
- Pull-to-Refresh: Manually trigger monitoring checks
- Detail Views: Detailed information for each monitored item
- Settings Management: Configure URLs, DNS hosts, and CRL URLs to monitor
- Real-time status updates
- Automatic grouping by status (URL, DNS, CRL)
- Timestamp tracking for last test time
- Error message display for failed checks
- Certificate validity date ranges
The CRLs (Certificate Revocation Lists) tab displays all configured CRL monitoring targets with their status, last check timestamps, and expiration dates.
- Shows full CRL URLs and filenames
- Displays green checkmarks for successfully verified CRLs
- Shows last check time and CRL expiration dates
- Tap any item to view detailed information
Monitor HTTP/HTTPS endpoints with certificate validation and expiry tracking.
Verify DNS hostname resolution and check resolved IP addresses with ping capability.
Detailed information screen showing comprehensive status, error messages, certificate details, and network diagnostics.
Configure monitoring targets (URLs, DNS hosts, CRL URLs) with an intuitive interface.
- Flutter SDK: 3.10.0 or later
- Android: Minimum SDK 21, Target SDK 33 (Android 13)
- iOS: iOS 12.0 or later
- Internet Permission: Required for network monitoring
-
Install Flutter SDK
- Download from flutter.dev
- Ensure Flutter is in your PATH
- Run
flutter doctorto verify setup
-
Android Setup (for LG V60)
- Install Android Studio
- Ensure Android SDK is installed (API level 33+)
- Enable USB debugging on your device
-
Clone or Download the Project
git clone https://github.com/jgoodloe/monitor.git cd monitorNote: All project files are at the root level of the repository.
-
Install Dependencies
flutter pub get
-
Run the App
flutter run
Or run on a specific device:
flutter devices # List available devices flutter run -d <device-id>
The app comes with default monitoring targets configured:
URLs:
https://pivi.xcloud.authentx.com/portal/index.htmlhttps://piv.xcloud.authentx.com/portal/index.html
DNS Hosts:
piv.xcloud.authentx.compivi.xcloud.authentx.comocsp.xca.xpki.comcrl.xca.xpki.comaia.xca.xpki.com
CRL URLs:
http://crl.xca.xpki.com/CRLs/XTec_PIVI_CA1.crlhttp://66.165.167.225/CRLs/XTec_PIVI_CA1.crlhttp://152.186.38.46/CRLs/XTec_PIVI_CA1.crl
- Open the app on your device
- Navigate to Settings tab
- Select the appropriate tab (URLs, DNS, or CRLs)
- Tap "Add" button to add new targets
- Tap delete icon to remove targets
- Configuration is automatically saved
-
Main Monitor View
- Shows all configured monitoring targets grouped by type (URLs, DNS, CRLs)
- Displays status (up/down) for each target with color indicators
- Shows error messages for failed checks
- Displays certificate expiry information with warnings
-
Manual Refresh
- Tap the refresh icon in the app bar to trigger a new check
- Or pull down on any tab to refresh
- All targets are checked sequentially
-
View Details
- Tap any monitored item to view detailed information
- Includes full error messages, timestamps, and certificate details
- Manage URLs: Add, edit, or remove URLs to monitor
- Manage DNS Hosts: Configure DNS hostnames to check
- Manage CRL URLs: Set Certificate Revocation List URLs to verify
- Reset to Defaults: Restore default configuration
monitor/
├── lib/
│ ├── main.dart # App entry point
│ ├── models/
│ │ └── monitor_status.dart # Data models
│ ├── services/
│ │ ├── url_monitor.dart # URL monitoring logic
│ │ ├── dns_resolver.dart # DNS resolution logic
│ │ ├── crl_verifier.dart # CRL verification logic
│ │ └── configuration_manager.dart # Settings persistence
│ └── screens/
│ ├── monitor_screen.dart # Main monitoring screen
│ ├── settings_screen.dart # Configuration screen
│ └── detail_screen.dart # Detail view
├── android/ # Android configuration
├── ios/ # iOS configuration
├── screenshots/ # App screenshots
├── test/ # Unit tests
├── pubspec.yaml # Dependencies
└── README.md # This file
- dio: ^5.4.0 - HTTP client for network requests
- http: ^1.2.0 - Additional HTTP utilities
- shared_preferences: ^2.2.2 - Persistent storage for settings
The app follows a clean architecture pattern:
- Models: Data classes (
MonitorItem,CertificateInfo) - Services: Business logic (
UrlMonitor,DnsResolver,CrlVerifier,ConfigurationManager) - Screens: UI components (
MonitorScreen,SettingsScreen,DetailScreen)
- UrlMonitor: Handles HTTP/HTTPS URL checks and SSL certificate validation
- DnsResolver: Performs DNS hostname resolution checks
- CrlVerifier: Downloads and validates Certificate Revocation Lists
- ConfigurationManager: Manages persistent configuration using SharedPreferences
- INTERNET: Required for network monitoring operations
- ACCESS_NETWORK_STATE: Check network connectivity status
The app uses cleartext traffic (android:usesCleartextTraffic="true") for HTTP CRL checks.
- The app uses permissive SSL verification for monitoring purposes (accepts self-signed certificates)
- Uses cleartext traffic for HTTP CRL checks
- Certificate expiry warnings are shown for certificates expiring within 30 days
- All monitoring is read-only and does not modify any systems
-
Enable USB Debugging
- Go to Settings > About Phone
- Tap "Build Number" 7 times to enable Developer Options
- Go to Settings > Developer Options
- Enable "USB Debugging"
-
Connect Device
flutter devices # Verify your device is detected -
Run the App
flutter run
flutter build apk --debugOutput: build/app/outputs/flutter-apk/app-debug.apk
flutter build apk --releaseOutput: build/app/outputs/flutter-apk/app-release.apk
Note: Release builds use debug signing by default. For production, configure proper signing in android/app/build.gradle.kts.
The app has been optimized for performance to prevent UI blocking and ensure smooth operation:
- CRL Parsing: Heavy ASN.1 parsing operations are executed in isolates using
compute()to prevent blocking the UI thread - Parallel Execution: All monitoring checks (URLs, DNS, CRLs) run in parallel instead of sequentially
- Parallel Pinging: IP address pinging operations execute concurrently for faster completion
- ListView.builder: Lists use lazy loading to only render visible items
- Selective Rebuilds: Widget rebuilds are optimized with proper
mountedchecks and minimalsetStatecalls - Cache Extent: ListView caching is configured to reduce unnecessary rebuilds
- Const Widgets: Static widgets are marked as
constto minimize rebuild overhead
- Timeouts: All network operations have proper timeouts to prevent hanging
- Async/Await: All I/O operations are non-blocking and use proper async patterns
- Error Handling: Robust error handling prevents crashes and ensures graceful degradation
- All
setStatecalls are guarded withmountedchecks - Proper use of
Future.wait()for parallel execution - Efficient data structures and minimal memory allocations
-
Flutter Pub Get Failed
- Check internet connection
- Verify Flutter SDK is properly installed
- Try:
flutter cleanthenflutter pub get
-
Android Build Failed
- Ensure Android SDK is installed
- Check
android/local.propertieshas correct SDK path - Try:
flutter cleanthen rebuild
-
Network Checks Fail
- Verify internet connectivity on device
- Check firewall settings
- Ensure targets are reachable
- For Android, verify
INTERNETpermission in manifest
-
Configuration Not Saving
- Check device storage permissions
- Clear app data and restart
- Verify SharedPreferences is working
-
Certificate Warnings
- Some certificates may show as invalid if self-signed
- The app accepts all certificates for monitoring purposes
- Check certificate details in the detail view
- Version: 1.0.0+1
- Package Name:
com.jgoodloe.monitor - Target Platform: Android 13 (API 33), iOS 12.0+
This project is open source and available for use.
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
For issues and questions, please open an issue on GitHub.
Note: This application is designed for monitoring network endpoints and certificates. Ensure you have permission to monitor the configured targets before use.




