Some are our own products, some were made for clients and communities, and the kiosk systems were built in my engineering job since 2016.
My flagship product. A mobile-first community platform for foreigners living in Korea:
buy and sell listings, a jobs board with in-app applications and employer-applicant messaging, community
Q&A and guides, events with RSVP, in-app chat, and a "Live Info" hub covering air quality, weather, FX
rates, machine-translated Korean emergency disaster alerts, holidays and nearby hospitals. A Visa Finder
wizard covers around 30 Korean visa types.
~2,650 PHP files, 1,200+ git commits, installable PWA with web push
10-language i18n, Google + Kakao OAuth, Kakao Maps
AI writing and translation assistant (OpenAI) with a hard daily cost-budget ledger
Points and referral ledger with anti-farming holds and forensic investigation tools
Production on AWS Lightsail (Seoul) behind Cloudflare, deployed and operated solo
A non-custodial wallet for Cosmos-SDK chains: private keys are generated and stay on the
user's device (CosmJS + bip39 + secp256k1 in the browser), while a PHP API layer handles chain metadata,
price feeds and push notifications.
Outgoing-transaction alarms that ping you the moment funds move
Paid "watch address" tier with quotes and billing
Validator uptime monitoring with an apply/decide workflow
React + Vite SPA, full PWA with VAPID web push, ~50 API endpoints
A revenue-bearing Korean platform (소소한 알바, "small side-work") where users join click, keyword, link
and Q&A missions on a first-come-first-served basis, submit proof, and receive real payouts.
Full payout pipeline: submission review with image galleries, bulk validate/pay/revert
Second-generation admin dashboard, Naver store analytics module, spreadsheet import/export reporting
Lucky-draw ticket system, per-user points and levels
Market-intelligence SaaS for sellers on Naver Shopping, Korea's biggest commerce platform: track
products, keywords, store homes and search ranks; measure clicks, sales and stock over time.
Crawler-ingest API with per-user metric quotas
Backed by the BeeShop Delphi suite: BeePlace place ranking, BeeSales, DataLab controller and monitor,
keyword search, product tracking and click-count worker pools
webpack front end, realtime socket module, SQL performance tuning at scale
A complete photo-booth product. The kiosk drives a tethered Canon DSLR through the Canon EDSDK,
streams live view to the embedded Chromium UI over a local-only WebSocket, composites the shot (chroma key
green screen, background removal, frame and template overlays), generates a QR code for digital delivery
and prints the result.
Split into starter, kiosk, manager and watchdog executables for unattended operation
Hand-written WebSocket server (RFC 6455 handshake and framing) inside a Delphi app
Bilingual KO/EN web dashboard: usage stats, master and user roles, configurable photo retention
policy with a cleanup job
A family of production data pipelines that track products, keywords, ranks and sales on Naver and
Coupang daily, built to survive serious anti-bot defenses.
Browser-pool engine: a state-machine-driven pool of embedded Chromium workers claiming
jobs from a MySQL queue and injecting live JavaScript fetches
Browserless engine: curl-impersonate for a genuine Chrome TLS/JA3 fingerprint, paired
with Playwright-captured login sessions
Self-scheduling daily jobs (KST cron tables), idempotent upserts, retry lifecycles
Self-service ticketing kiosk for a children's safety experience centre, split into a KidSafetyMain
admin application and a KidSafetyKiosk terminal sharing a common ticket-print module, building for both
Win32 and Win64. It handles the full retail transaction end to end.
KSNET card-terminal integration: credit/debit/cash, approval and cancellation flows, personal
and business cash receipts
Ticket and receipt printing on LKT42 and Woosim thermal printers
Excel reporting, hybrid HTML UI in an embedded browser, self-updating from my own server
I also built the reusable KSNET payment component package other kiosks use
Cashier app and kiosk app for the Cheongju Land children's experience center, replacing the site's
legacy MySQL 5.x ticketing program with a documented migration path.
Each cashier PC runs a Delphi VCL shell hosting an embedded web UI plus an embedded REST API server,
so the same UI is reachable from any LAN browser while card payment and receipt printing stay on the
host machine's hardware
Multiple cashier PCs share one MySQL 8 database
KSNET card terminal and thermal receipt printer integration
On-site ticketing for Cheongnamdae (청남대), the former presidential villa attraction in Cheongju,
covering card payment, cash receipts and both card and cash-receipt refunds, with a companion MonoRailLive
app serving live monorail status over its own local HTTP endpoint.
Self-updating launcher: checks a JSON manifest on the update server, then downloads, backs up,
applies, verifies and rolls back on failure
Explicit update state machine: idle, checking, downloading, backing up, applying, verifying,
rolling back
In production, current build April 2026
A complete Digital Information Display platform deployed in the Sangdang-gu, Seowon-gu and
Heungdeok-gu district offices of Cheongju City, built as a large group of cooperating applications.
Dedicated Elevator and ElevatorInside display apps, MultiScreen video-wall engine, WebPlayer and
ImgPlayer players, Settings tool, PatchPositions and DataPatch maintenance tools, RestartProg watchdog,
launchers and auto-updaters
Devices pull layouts and section playlists from a content-manager API keyed by device IP
Versioned PowerShell update pipeline building signed update packages for player and server
separately, with a bilingual HTML runbook; packages shipped through July 2026
Directory and wayfinding kiosk for a Korean government office building. Operators manage departments,
teams, section leaders, staff, seat cards, floor plans, signage images, media and event notices from one
admin console; the kiosk renders floor maps with animated route wayfinding to a chosen desk.
HR data sync job against the Good Morning SSO directory
Bilingual KO/EN operator manual that embeds the real admin pages in click-blocked iframes so it
cannot go stale
Runs on a closed municipal network with fully self-contained assets; backup-first deployment with
dry run and rollback
Public-facing touchscreen system for a Korean city council (시의회): council introduction, member
profiles and roles, a drag-orderable organisational chart, floor maps, bills and rolling announcements.
Still actively developed as of 2026.
Full admin back office: content, user rights, image upload and positioning, template layer, member
and org-chart management, font selection, media slides
PHP over Oracle (OCI), deployed, versioned and maintained in the field, with migration backups and a
PowerShell build-and-deploy script
Self-service kiosk for the Korean sports information portal (g1.sports.or.kr client) that lets
athletes and officials apply for and print sports certificates.
Certificate type catalogue with visibility rules by sport category and user type
Full request, payment, approval and print lifecycle, plus reprint and refund policy
Delphi VCL shell hosting a web UI over a local web server, reading directly from the client's
Oracle database
Workplace attendance product line: employees tap an RFID card on a serial reader and the kiosk records
check-in/out against MySQL, with an HTML attendance UI and announcement panels.
Manager application for workers, departments, ranks, admin levels and card assignment
Separate check-in and leave-work terminals, standalone card-check module
Custom version-control and patch mechanism plus auto-updater for field devices
A complete product around validator and masternode voting on an EVM-compatible chain. One person,
four tiers:
REST API server (Delphi WebBroker/Indy): auth, voting, history, scheduled jobs,
JSON-RPC to the chain node
Desktop operator console with a background voting-strategy engine
Block scanner indexing the chain into MySQL
Android apps (FireMonkey + native Java) with true background services, local
notifications, and AES-encrypted private keys at rest
Kakao and Telegram notification channels
Operations tooling for my Beehive validator business across Evmos, Osmosis, Orbs, Rizon, Medibloc
and MARO: a live dashboard showing block height, heartbeat and RPC status per node, with alert/mute state
and node self-registration.
Standalone Python alarm daemon polling nodes and firing Telegram alerts, plus missed-block detection
Beehive Guard web console: managed networks, alarm users and permissions, dashboards and versioned
in-app tutorials
REStake auto-compounding operator setup, plus Python snapshot and airdrop-event scripts
Runs 24/7. This is the code that wakes me up when a node misbehaves.
Operations console for withdrawals on the Upbit exchange, built for the compliance side of running
a crypto business in Korea.
Registers and whitelists destination addresses per network (Korean travel-rule compliance)
Lists registered networks, current prices and withdrawal status
Records transfer and transaction history against MySQL
JWT-signed requests against the Upbit REST API (firebase/php-jwt)
My master's research, built as a real system and deployed in the field: an IoT network of shock,
movement and voltage sensors on landslide-prone slopes, reporting through gateways to a real-time
analysis backend that predicts slope failure and raises alarms.
PHP/MySQL backend with REST APIs, Google Charts visualisation, a remote-control subsystem, a C#
receiver program and a logging subsystem, delivered against a formal interface specification
SMS and notification delivery through the Popbill service plus KakaoTalk alerting; a companion
NotifCenter desktop notification app
Deployments include a golf course in Namyangju and the West Inland expressway project; presented at
the 2023 Korean Joint Academic Conference
A B2B snack-ordering API server for Korean nursing homes (요양원) on a "pay first, then ship" model.
This is my modern TypeScript stack showcase.
Per-client pricing, order amount finalisation, payment-provider abstraction (bank transfer now,
Toss Payments drop-in later)
Clean modular architecture with Jest, class-validator, scheduled jobs
I am one of the founding members of KAFXA, the Korea-Africa Excellence Awards ("One Continent,
Global Impact"), a community initiative that celebrates Africans creating outstanding impact in Korea.
I serve on the core team and built the entire platform.
Full nomination workflow: nominate, status tracking, nominee profiles, past winners
Community voting, gallery with uploads, feedback channel and an admin dashboard with its own auth
Monthly African Icon feature plus the yearly awards cycle; actively developed through 2026
I built and administer the digital home of CAMASKO, the Cameroonian Association in South Korea:
member registration and login, member and admin dashboards, events, projects, affiliates and media.
Homegrown multi-language layer (EN/FR/KO), the architectural ancestor of Waegook
Clean datamodule API split (auth, admin, user, public)
A recreational futsal tournament I founded and co-organise with Amigo FC, plus the bilingual (EN/KR)
platform that runs it. Two editions shipped in 2024.
Team registration, group stage league tables, knockout brackets
Live scores with a detailed match view, player and team stats, a public vote and rules
Doubles as community organising: sport bringing locals and foreigners together
An online course platform (헤이호 CLASS) with a public catalogue and course detail pages, cart and
checkout, order history, news, FAQ and terms, plus student dashboards.
Video content served from local storage
Admin console for categories, courses, orders, FAQs, terms and site settings, with scheduled jobs
and a missions module
Light and dark theme with no-flash bootstrapping
DOContent Manager, the content-management side of the signage business: define screens and
sub-screens, build multi-zone layouts with a JS layout editor, assign ordered playlists and cards per
zone, and push the result to registered kiosk devices.
Accounts scoped by district and department, hardened sessions
Read-only device API so kiosks can poll their layout by computer name or IP
Ships with install and update scripts plus an HTML update guide for on-site operators
Powers the players in the DODID fleet
A client/server backup and file-share system built from the wire protocol up.
The server exposes selected drives, folders and files as shares over a custom length-prefixed binary
protocol on TCP
Maintains a hashed share index; the client browses and pulls from it
Protocol design and indexing work, a different muscle from CRUD and kiosk projects
A toolkit of reusable components and utilities accumulated across client work, each battle-tested in
at least one real project.
Canon EDSDK camera wrapper component with demo app
Korean road-name address (도로명주소) lookup client for the public Juso API, with XML parsing and paging
Binance auto buy/sell trading bot with a monitor window
DirectShow webcam capture components, NFC and RFID reader harnesses, card and receipt printer tools,
virtual keyboard helper, idle-time and watchdog helpers, an offline media player, and MoveDB, a
browser-based MySQL-to-MySQL migration tool