The idea started with a phone propped against a chair leg. I was halfway through a stretch, neck craned sideways, trying to read how many seconds were left. It struck me that the screen was the wrong place for that information. A good class has someone who counts for you.

That became DongDong, a home workout app for iPhone and iPad. You tell it what you have at home (a chair, a mat, a pair of dumbbells, or nothing), how hard you want to go and how long you have. Each day it picks one short session, and a coach counts you through it in English or Mandarin Chinese. Version 1.0 reached the App Store on September 30. It is not a travel app, and it has its own home at dongdong.now, but it was built by the same small team, so the engineering story lives here.

Rule one: the app never goes online

The first decision shaped everything else: DongDong makes no network requests. There is no account, no analytics and no ad SDK, and the app does not download workouts or stream audio. Preferences and history stay on the device.

A promise like that is easy to break by accident, usually months later, when someone adds a convenient library. So it is a test, not a policy. One of the unit tests reads every source file in the app and fails the build if any of them makes a network call. The App Store privacy label says "Data Not Collected", and the test suite is what keeps that sentence true.

What "everything is in the app" costs

If nothing is fetched, everything has to ship. DongDong 1.0 carries 121 exercises, each with a demonstration, and 4,945 coach voice clips across five voices. The voices were generated with a voice model ahead of time and each line was saved as an audio file, so nothing is synthesized on the phone while you exercise. That is why the coach sounds the same on a plane as it does at home.

The cost is size: the download is roughly 375 MB. I think that is the honest side of the trade. You pay once in storage, and after that the app works in a basement, on a flight, or with the phone in airplane mode.

It also changed how the project is stored. Thousands of audio files and more than a hundred films do not belong in git, where every revision of every file is kept forever. The repository holds small manifests instead: a list naming every voice clip and film, with a hash for each film. The media lives in cloud storage, a script fetches exactly what the manifests name before a build, and a check fails if a file is missing, altered, or present without being listed. Retiring an exercise means removing lines from a manifest, and the build drops its clips.

Full-screen exercise demonstration in DongDong with the exercise name, a spoken cue and a countdown
Every exercise can be watched full screen while the coach keeps counting.

The same workout after you close the app

"Today's workout" sounds simple until you close the app and open it again. Swift's built-in hashing is seeded differently on every launch, on purpose, so anything built on it can pick a different session each time. A daily plan that changes when you answer a text message is not a plan.

DongDong uses its own small, documented pieces instead: an FNV-1a hash of your settings and the date, feeding a SplitMix64 generator. The same profile on the same day produces the same session on every launch and every device, with no server deciding it. If you do not like today's pick, "Another workout" draws a different one, and that choice sticks too.

DongDong's Today screen showing a chair mobility session with three exercises and a start button
Today's session, built only from exercises that fit the equipment you chose.

Screenshots that are also tests

The App Store screenshots were not taken by hand. A UI test walks the real app to each screen, in English and in Chinese, on an iPhone and an iPad, and exports the images at exactly the sizes Apple requires. When the design changes, one script produces a fresh, matching set.

The first run failed on the Chinese coach screen, and the failure was useful: the test was looking for a card whose label began with the coach's name, and in Chinese the label does not begin that way. It is the kind of bug that only appears in the second language, and it is far better found by a script than by a reviewer. Behind that sit 538 unit tests and 91 UI tests, including ones that check each coach is only offered in a language it can actually speak.

What 1.0 is not

I want to be plain about the limits. DongDong's workouts are general exercises for adults. They have not been reviewed by an exercise professional, a physiotherapist or a doctor, and the app says so before your first session. If you have a health condition, are recovering from an injury or have not exercised in a while, check with a health professional first.

It is also a 1.0. There is no Apple Watch app and no health-data integration yet. Some of that is deliberate: each of those features is a reason to share something, and I would rather add them carefully than quickly.

Try it

DongDong is on the App Store for iPhone and iPad, and it is free to download as I write this. There is no subscription. The full feature list, privacy policy and support page are at dongdong.now.

If the on-device approach interests you, this earlier piece on what a phone can do without the cloud covers the wider idea, and the travel apps from the same team are on the apps page.

This article describes DongDong 1.0 as released on September 30, 2026. Exercise counts, app size and pricing can change in later versions. DongDong provides general exercise guidance and is not medical advice.