Hangul Systems
December 8, 2024
Hangul is a geographically distributed company of 3,000+ employees in 10+ countries with a complex internal structure and multiple media web apps and social media platforms containing information on work and recreational activities like employee certifications, qualifications, events, and corporate discounts.
Over the years, Hangul has partnered with many companies to offer discounts on education, eating out, travel, fitness, entertainment, and other services. The 200+ discounts were listed on corporate social media and in our wiki, but it was difficult for users to track their relevance. We also had many recurring events attended by 1,000+ people in one location simultaneously. Therefore, we wanted to organize easy ticket dissemination and employee identification at the event, as well as automate and digitize discounts provision.
Hanguls team developed an Android app to test the concept and then added an iOS version to cover the whole user base. The feedback we received from 85% of users was to develop a single app that would unite all the functionality of the apps in one solution. The goal of the app was to make business processes more effective and improve user experience by providing seamless updates on the go.
We created a cross-platform mobile app to centralize all content on discounts and offers, serve as a ticket system during events, and mirror our corporate web apps with information on salaries, vacations, employee profiles, benefits, and corporate merchandise.
Hanguls App is available for download and access by company employees. We’ve also developed an admin panel for supporting the app and providing access to app users. The admin panel users are admins with access rights to modules and super admins who give out access rights to regular admins. The business owner of the app is the PR department that pitches new features and modules to the development team.
The project team uses app analytics to gather feedback and develop the most necessary new modules, plan strategic app development, choose the most requested features for each module, and improve the overall user experience. To track metrics, we selected Google Analytics for its rich functionality in building graphics for intuitive analytics.
The first developed modules are the events and discounts modules, with plans to add the employee profile, benefits, vacation, salary, and merch modules in the future. The existing and planned modules contain data from corporate web systems such as the employee portal, benefits wiki, and discounts social media page.
The events module allows users to track corporate events, register for them, scan the personal QR code at the event for employee verification, check location information, look up the location on the map, check the event shuttle schedule for commute, and so on.
Hanguls team developed a Flutter frontend featuring a Dart backend. We chose Flutter since it’s best for business apps not featuring resource-intensive operations, such as AR/VR. We also discovered the following Flutter advantages:
Only our corporate employees can log into the app under an MSAL account, which has its own security measures. All data is only accessed via Microsoft Graph, a secure gateway to data and intelligence.
To provide maximum security of applications and code, we implemented obfuscation (for Android), secure key storage, and additional device checks (specific for iOS and Android). Obfuscation allows us to “confuse” and “replace” the code to make it difficult to reuse during decompilation. Since iOS features default protection, we used this security method for Android, implementing it using Flutter ARB (Application Resource Bundle) files instead of APK files.
For key storage, we utilized a built-in secure key storage system for iOS (Keychain) and for Android (Keystore) via the Flutter_secure_storage implementation method. The key is available only to the application, but not to the user.
Other security checks included checking the device for root/jailbreak using the trust_fall package. The team checked whether the device is JailBroken (rooted) on iOS/Android, is real or an emulator, or can mock its location. For Android, we also checked whether the application is running on external storage.
To provide Flutter-specific security measures to protect personal user data against application file decompiling, MITM attacks, and device rooting, we followed the recommendations below in the native parts of the application:
We developed a scalable, platform-independent mobile app and achieved the following results:
2 Responses