Skip to content
◀ Quest Log

Passport Scanner (MKP Travel Tech)

Assignment
Work AssignmentSolo Project
Year
2025
Role
Full-Stack Engineer & Hardware Integration Engineer
Tools
  • React
  • TypeScript
  • Tsup
  • Electron
  • Tailwind CSS
  • Plustek SecureScan X50
  • Newland FM3280
Links
A row of four self-service boarding kiosks at the port, each with a passport scanner and receipt printer
Kiosk Row
Two kiosks seen close up, showing the scan window, receipt slot and card reader
Kiosk Detail
The kiosks from the side in the terminal waiting area, with the ticketing screen active
In the Terminal
A passport held open on the flatbed of a Plustek SecureScan X50 during a scan
Scanning
The SDK test harness showing a scanned passport alongside the fields parsed from its machine-readable zone. Personal data and the holder's photograph are redacted.
MRZ Extraction

Swipe or use the arrow keys

The Problem

Self-kiosk boarding at Benoa International Port Bali needed passport scanning, but there was no developer-friendly way to integrate the Plustek SecureScan X50 into Electron applications. Developers had to work directly with low-level hardware protocols.

What I Built

I built a desktop app and a Node.js SDK that bridges the native drivers of the Plustek SecureScan X50 and Newland FM3280 with frontend apps, exposing clean APIs for initialisation, scanning, autoscan, MRZ parsing, auto-fill and data storage. The hardest part was packaging it reliably with Tsup so any frontend developer could integrate the devices without touching the drivers.