Duke Jeon
Flutter developer who ships.
I am a mobile developer with 3 years and 9 months of experience. Flutter is my main stack, from design through store release and operation.
- Logistics, healthcare, unattended stores, and public transit
- Driver and guardian shuttle apps, from planning through Android and iOS release
- Geofence boarding and GPS outlier correction, checked on real drives
- Reservation WebSocket, and state restored after reconnect
- Seonggong Bus daily crashes from 200.2 to 3.3, down 98.3%
- Eight public-bus apps merged into two projects
- Customized a chart library, and synced glucose and insulin chart pan and zoom with rendering optimization
Across these domains and team structures, I have built apps, fixed problems, and organized operations.
| 3Y 9M | / Career |
|---|---|
| −98.3% | / Daily crashes |
| ~80% | / Core coverage |
SELECTED WORK
- OnBus
- Movehi
- Curestream
- HWEGO
- SIDE
OnBus
Developed a driver/guardian shuttle app and maintained 16 existing Android/iOS apps
01 Driver and guardian shuttle apps
- Shuttle App Design and Android/iOS Launch Co-planned the driver/guardian app with a backend developer and owned everything from design through development, live-run QA, and store launch. Split the codebase by feature with Clean Architecture, managed state with Riverpod, and centralized auth/device/network/Firebase code in a shared core module used project-wide.
- Geofence-based automatic boarding and alighting Once a run starts, the app records boarding when the bus enters a stop and when it halts, then sends the record when it leaves the zone. I made it possible to send from the next stop when it is crowded, and to reflect a late passenger by editing the confirmed record.
- Improved GPS Outlier Filtering and Location Correction On real routes, the on-screen path diverged from reality, so I changed how coordinates were snapped to the route. I excluded inaccurate or stale coordinates, filtered out jumps using distance, time, speed, direction, and the following point, then applied a Kalman filter — verified through live runs and on-foot testing.
- Unit/Widget Tests Reaching ~80% Core Line Coverage Verified GPS outlier handling, boarding sync, and key screens with unit and widget tests, reaching about 80% Core line coverage across both apps.
- Flutter
- Dart
- Clean Architecture
- Riverpod
- Firebase
02 Existing Android and iOS apps
- Maintained 16 Existing Android/iOS Apps Separately from developing the shuttle app, maintained 16 existing Android/iOS apps already in operation.
- Cut Seonggong Bus's Average Daily Crashes by 98.3% I analyzed and fixed the crashes, then shipped from 126 (1.24). Average daily crashes fell from 200.2 over the 28 days before the fix to 3.3 across the following four months. The remaining crashes were confirmed to occur only on versions from before the forced update.
- Consolidated 8 Public Bus Apps into 2 Projects Merged the eight projects that kept Seonggong Bus, Naepyeon Jung-gu Bus, Nowon Haengbok Bus, and Gwanak Ganggamchan Bus separate on each platform into one Android project and one iOS project. Differences between the apps were split only through Build Variants and iOS Target settings.
- Java
- Swift
- Android
- iOS
Movehi
Developed and operated a terminal app that shows reservations and a scoreboard for an unattended store
03 Takgu Power Plant 24
- Adopted WebSocket and Reservation State Recovery on Reconnect Worked with a backend developer to move reservation polling (every 1 second) to WebSocket. On disconnect, the last known reservation is shown; on reconnect, the latest data replaces it — cancellations are removed, changed IDs are swapped, and timers keep counting from their original start time.
- Resolved Missing Reservations Using Error Logs Kept error logs (with layer and method info) stored locally, deleted only after server acknowledgment. Cross-checking against network and MDM records showed aging network equipment was the cause; after replacement, the same symptom did not recur.
- Remote Management of ~80 Devices Across 20 Locations Used Headwind MDM to remotely reboot devices and check logs without site visits, with apps set to auto-launch after reboot — managing about 80 devices across 20 locations remotely.
- Flutter
- Dart
- BLoC
- WebSocket
- Firebase
Curestream
Built charts and refactored code for a healthcare app displaying glucose/insulin data
04 Modustream
- Built Glucose/Insulin Charts with Synced Zoom and Pan Modified the MIT-licensed charting library so insulin bar and glucose line charts, stacked vertically, zoom and pan together. Unified gestures with InteractiveViewer and updated tooltip positioning to match coordinates when the chart flips.
- Chart Data Clustering and Rendering Optimization Rendering slowed with 24-hour data, so I bucketed points into 5-minute, 30-minute, 1-hour, or 3-hour intervals based on zoom level and skipped drawing off-screen data.
- Improved readability of pump BLE code Clarified what each pump BLE code means for battery, delivery, or volume, and noted the situation each method handles.
- Reduced Duplicate Code in Onboarding Screens via Code Review Suggested in code review that the AppBar and spacing repeated across each step be extracted into a shared layout; the owning developer refactored the code accordingly.
Chart example
- Flutter
- Dart
- BLoC
- BLE
- Firebase
HWEGO
Owned mobile development for a delivery rider app end-to-end — UI, logic, and API implementation through Android/iOS store submission and review.
05 Tango & Go
- Offline Scan Sync and Duplicate Submission Handling The warehouse network was unreliable, so I changed the logic to offline-first: scan data is saved locally first, then sent to the server once the network is connected.
- Batched Invoice Submission with Retry for Failures Invoices are registered with an external server, not only inside the company network, so sending 200 at once timed out. I sent them in batches of 30. Retries resend only the failed invoices, and together with server improvements, 200–300 invoices finish in about 5 seconds.
- Delivery Status Map Using Administrative Boundary Data Added a map view next to the city/district/neighborhood selector, showing delivery status over administrative boundaries simplified with QGIS. The chosen view (table or map) is persisted via SharedPreferences.

- Delivery Location Tracking Control via System Overlay Used flutter_overlay_window to let riders toggle location tracking even while a navigation app is open; completing a delivery triggers a photo upload, with location obtained via FusedLocationProviderClient.
- Reduced Upload Size for Delivery Completion Photos Compressed 4–5MB delivery photos before upload while keeping enough resolution to read the unit number.
- Flutter
- Dart
- GetX
SIDE
06 Pickaround
- A web MVP covering sashimi recommendations, species info, and ordering/payment — built with bubble.io, TossPayments, webhooks, and Amplitude.
- bubble.io
- TossPayments
- Amplitude
07 Jisponge
- Rebuilt a sponge/sporting goods company's website in Flutter Web, single-handedly covering planning, design, development, and deployment.
- Flutter
- Dart
- Supabase
- Firebase
SKILLS
- Flutter
- Dart
- Android
- iOS
- Java
- Swift
- Kotlin
- Clean Architecture
- Riverpod
- BLoC
- GetX
- REST API
- WebSocket
- Firebase
- BLE
- GitHub
- Jira
- Slack
EDUCATION
- 2024.07–2025.02 Bachelor of Computer Engineering, credit-bank program
- 2020.03–2023.02 Yeungjin College, Computer Information, GPA 4.14/4.5
- 2015.03–2018.02 Gyeongbuk Machinery Technical High School, Industrial Electronics
Industrial Engineer Information Processing, 2022.06, HRD Korea
Republic of Korea Army, sergeant, completed service, 2018.05–2020.01
