INZENYR LLC
← Back to Works

// Own Product

ParkingMeter icon

ParkingMeter

“How much so far?” — right on your Lock Screen.

iOSIn development, heading for the App Store (planned for release in Japan only)

// Overview

Tap once when you park, and the elapsed time, the current charge, and the countdown to the next increment stay on your Lock Screen and Dynamic Island. Knowing what you owe without ever opening the app is the whole point of this product.

Japanese pay-by-the-hour car parks are complex — free for the first 30 minutes, then ¥220 per 20 minutes, capped at ¥1,100 for the day and ¥400 overnight — and parking timers built overseas have no concept of these caps at all. We designed a data model that can express a real fee sign as written, and pinned the calculations down with tests built from actual signs.

Typing in a fee table by hand is where users give up, so the app reads the sign for you: photograph it and the tariff is extracted. On-device AI handles it locally by default, and for dense, hard-to-read signs a Premium subscription switches to higher-accuracy extraction in the cloud.

// Features

  • Elapsed time, current charge, and the countdown to the next increment, always visible on the Lock Screen and Dynamic Island
  • Handles introductory free periods, time-of-day and weekday/weekend rates, and daily, since-entry, and overnight maximums
  • Reproduces whether a maximum charge repeats — the detail that doubles the final bill and is the easiest thing to misread on a sign
  • Import a tariff by photographing the sign — on-device AI for free, cloud AI for higher accuracy with Premium
  • Every extraction passes through a review-and-edit screen, with a fee preview you can check against the sign before saving
  • End the session with one tap from the Lock Screen — the final amount is fixed and saved to your history
  • Review your parking history — date, car park, final amount, and duration — newest first
  • No ads, no tracking, and no analytics SDKs

// Engineering highlights

ActivityKit: a Live Activity cannot be updated while the app is not running. So the elapsed time and the countdown to the next increment are rendered by the OS itself via Text(timerInterval:), keeping the display alive even when the amount cannot be refreshed. The Lock Screen “end parking” button runs as a LiveActivityIntent in the app's own process and commits the final amount to SwiftData shared through an App Group.

The fee engine is a Swift package fully independent of the UI, backed by tests written from real fee signs. Coverage focuses on the boundaries that break naive implementations — crossing midnight, overnight caps, repeating caps, and introductory free periods — making the accuracy itself the asset.

Sign extraction runs in two tiers, on-device and cloud, behind a single protocol so either can be swapped in. The cloud path never ships an API key in the binary: requests go through a Cloudflare Workers proxy that verifies the StoreKit signed transaction (JWS) up the certificate chain to Apple's root, so only subscribers get through.

Swift 6 with strict concurrency, SwiftUI, and SwiftData, targeting iOS 18 and later. Concept, fee modeling, implementation, backend, and subscription infrastructure were all built in-house.

// Screenshots

ParkingMeter screenshot 1ParkingMeter screenshot 2ParkingMeter screenshot 3

// Legal

// Disclaimer

* Amounts shown in the app are estimates and do not guarantee the actual fee charged.