CASE / 01 · 2026

Kippu

切符

One Japanese word a day, printed like a train ticket and punched by hand. Our own iOS app, designed, released and run by Liminal.

Overview
PRODUCT
Kippu · Kippu+
TYPE
In-house product
SCOPE
Native iOS · widget · server
YEAR
2026
The challenge

Language apps compete for your attention. Kippu asks for one minute.

Endless sessions, insistent reminders, points to collect: most learning apps are built to hold on to users for as long as possible. It works for the metrics, far less for the desire to come back.

Kippu takes the opposite stance: one thing a day, a gesture that means something, and an object crafted carefully enough that you want to find it again the next day. It is also our own product, from the first mockup to the App Store listing, and we run it ourselves.

iOS app

The ritual, screen by screen.

The crossing

A daily ritual, held by three deliberate choices.

01 · Ritual

One ticket a day, not two

The counter prints the day's ticket, you punch it by dragging the punch across, then it shows “See you tomorrow”. It is the only action of the day, and it takes less than a minute.

02 · Material

An object, not a screen

The sound of the motor and the paper, the haptic feedback of the punch, holographic glints that follow the tilt of the phone: every ticket behaves like a real transit ticket.

03 · Model

Paid, without holding anything back

The ritual stays whole for everyone, with no ads. Kippu+, as a subscription or for life, and six ticket editions open up the rest. No price is written into the app: the App Store is the source of truth.

Behind the scenes

A released app is only half the work. The other half is what keeps it running.

Catalogue

A word gets fixed without an update

A server publishes the catalogue and its calendar. The app ships with all 596 words to work offline, and picks up corrections as soon as it is back online.

Notices

Announcements with no new release

A new feature, a free edition or an apology after an outage is written on the server and shown in the app, whatever its version. Nothing ever leads to a dead end.

Sync

The same journey on another iPhone

An optional account lets you pick up your progress elsewhere. Merging two histories is the most delicate calculation in the app: it lives on its own, held by dedicated tests.

Content

Every word checked, every word spoken

A pipeline checks every entry against the JMdict dictionary before publication. Every word has its pronunciation, shipped with the app and played the moment you punch.

By the numbers
596
words, each with its voice
383
unit tests
2
external dependencies, not one more
What's next

An app to launch, not just to build?

Let's talk →