arrow_back Back to Projects

2026-02-26

[Kiosk - Planning/Overview] Building a 20-Million-Won Parking Kiosk from a 50,000-Won Secondhand One

From refurbishing a secondhand kiosk to live-operation troubleshooting — a full guide to this parking-lot automation series.

0. Introduction

An acquaintance who runs a parking lot recently had to cut staff. That left a gap: without a kiosk, “extending or registering a monthly pass” had always required an attendant, and I was asked to build a kiosk to handle it. The conditions: “easy to maintain, and cheap.”

In this series, I’ll walk through the eventful project of refurbishing a secondhand kiosk picked up on Karrot (Korea’s local marketplace app), building the software for it, and running it in production.

The project breaks down into 4 parts.

Series Table of Contents

  1. Part 1 - Hardware: Refurbishing a secondhand kiosk and getting serial communication working
  2. Part 2 - Software: Flutter app structure and parking API integration
  3. Part 3 - Operations/Troubleshooting: Failures encountered in live operation and recovery strategy
  4. Part 4 - Shipping and Backups: Backup reliability and preventing bugs at shipping time

The core thread running through it:

  • Project overview
  • Hardware refurbishment
  • Software development
  • Real-world operation and troubleshooting

Told across 4 posts.

1. Background — Why Build a Kiosk

Automating the Parking Lot

As vacancy rates climb in regional commercial buildings, there’s been a push to cut the cost of running buildings, parking lots included. As parking lots become more unmanned, operating hours shrink and staff headcount drops — creating a need to replace the functions attendants used to handle.

Isn’t There Already an Existing Solution?

The parking-control company already serving this lot does sell an official kiosk, but the per-unit price is steep enough that the lot only runs a single one. On top of that, functions the lot actually needs — “free passage” and “monthly pass registration/renewal” — simply aren’t supported.

How Hard Could It Be to Build?

Since the parking-control company is already building kiosks of its own, the DB schema and REST API are already provided. That means I could treat their backend as a self-contained “black box” and just needed to handle the API responses and exceptions cleanly. For anything payment-related and sensitive, I followed the PG (payment gateway) provider’s docs closely to match their required format.

2. Project Goal & Scope — What Was the Target?

Core Project Goals

This project set three core values: low cost (reusing secondhand hardware), high polish (improved UI/UX), and robustness (maintainability).

  • Source a secondhand kiosk from Karrot for under 150,000 KRW.
  • Achieve a polished result using a modern Flutter UI/UX.
  • Monitor system status and manage remotely via Firebase RTDB.

3. System Architecture: Overall Structure

Hardware Layer

  • 15-inch touch POS unit
  • Smartro SMT-R231 card reader
  • 3-inch receipt printer

Software Layer

  • Main app: the Flutter Parking app
  • PG software: Smartro EVCAT
  • Parking registration: the parking operator’s REST API
  • DB: MongoDB (local) + Firebase (cloud)

4. Expected Effects

  • Dramatically cheaper than commercial parking equipment (secondhand body + new card reader for a total build cost of roughly 200,000 KRW)
  • A stack of features the original software never had: automatic monthly-pass registration, advanced logging, a dual-DB setup, daily-pass registration, and more
  • Better maintainability via remote access, plus a CI/CD setup that automated the GitHub workflow

5. Coming Up

Working on this taught me a lot about developing for a “real” environment, so each part of the series digs into the details — how the hardware works, PG integration, and deployment/operations issues.

Series Parts

4 parts