HRMIS Helper is a Flutter application that assists HRMIS workflows for https://hrmis.neuron.id using an embedded WebView.
The app loads HRMIS in flutter_inappwebview, injects JavaScript for login and attendance form submission, requests the required device permissions, and shows a small status overlay while the automation is running.
- Screenshots
- Features
- Requirements
- Setup
- Running & Building
- Testing
- Android Permissions
- Project Structure
- Notes
- Automated Login: Automated HRMIS login using credentials stored securely in Android Keystore (
flutter_secure_storage). - Credential Management: In-app credential management screen with validation and password visibility toggle.
- Smart Attendance:
- Attendance type selection (WFO / WFH / SPJ) shown before the automation runs.
- Geolocation wait is skipped for WFH and SPJ — HRMIS only validates the office geofence for WFO.
- WFO attendance selection and description injection with GPS wait period before saving.
- Detection for already-recorded attendance messages.
- Session Detection: Existing session detection, skipping login when HRMIS is already authenticated.
- Dashboard & Navigation:
- Dashboard view with today's attendance status, delay minutes, and absence days.
- Bottom navigation for switching between Dashboard and Automation WebView.
- Notifications: Android notifications for HRMIS delay and absence warnings after attendance.
- System Integrations:
- About screen showing app name, package, version, and build number at runtime.
- Android launcher icon support using
assets/images/app_logo.png.
- Flutter 3.41 or newer
- Dart 3.11 or newer
- Android SDK
- Android 6.0 (API 23) or newer
- A physical Android device or emulator with location support
Click to view setup instructions
-
Install dependencies:
flutter pub get
-
Make sure the app logo exists at:
assets/images/app_logo.png -
Generate Android launcher icons when the logo changes:
flutter pub run flutter_launcher_icons
-
Run the app. On the first launch, it opens the credential screen. Enter your HRMIS username and password there. They are saved to encrypted device storage (Android Keystore) and never leave the device.
Note: Credentials can be updated or cleared anytime from the settings FAB on the dashboard.
Run the app on a connected Android device:
flutter runBuild a debug APK:
flutter build apk --debugThe generated APK is available at build/app/outputs/flutter-apk/app-debug.apk.
Build Release APK:
Build the arm64 release APK used for device installation:
flutter build apk --target-platform android-arm64 --split-per-abiGradle automatically creates a copy of every built APK with a friendly name:
build/app/outputs/flutter-apk/HRMIS-Helper-v{version}({build})-{abi}-{buildType}.apk
Example: HRMIS-Helper-v1.2.0(6)-arm64-v8a-release.apk. The original app-*.apk files remain in place for Flutter's post-build checks.
Unit tests cover the extracted core logic (URL routing, summary parsing, JavaScript result normalization, status messages). Widget tests cover the dashboard, credential screen, and about screen.
flutter testWith coverage report:
flutter test --coverageThe Android app requests the following permissions:
INTERNETACCESS_FINE_LOCATION&ACCESS_COARSE_LOCATION: Requested before loading the WebView.CAMERA: Requested before loading the WebView.POST_NOTIFICATIONS: Requested so the app can alert users about HRMIS delay or absence information.
Click to view folder structure
lib/
main.dart # App entry, WebView automation flow, status overlay
dashboard_view.dart # Dashboard widgets (header, metrics, timeline)
config.dart # Secure credential storage wrapper
credential_screen.dart # Credential input UI
about_screen.dart # Runtime app info screen
notification_service.dart # Local Android notifications
core/
app_logger.dart # Release-safe logger (silent in release builds)
hrmis_uri.dart # HRMIS URL routing helpers
attendance_type.dart # WFO/WFH/SPJ enum with HRMIS radio mapping
attendance_prepare_js.dart # Injected JS builder per attendance type
attendance_summary.dart # Attendance summary model + JSON parser
javascript_result.dart # WebView JS result normalization
status_messages.dart # Automation failure message mappers
assets/images/
app_logo.png # Source app logo
android/
app/ # Android app configuration and resources
test/
*.dart # Unit and widget tests
This project is designed for personal/internal HRMIS attendance assistance. Make sure usage complies with your organization's HRMIS and attendance policies.
Android Package Name: com.alamaby.hrmis_helper

