Skip to content
Hoop-Fit app: animated move, home screen with the 21-day program and a running workout with the coach

Hoop-Fit

Hula hoop training as an app – with 89 animated moves, workouts with a coach who speaks and a rotation counter that uses the motion sensors.

Role
Concept, design, development
Period
2021–2026
Stack
Flutter (Android/iOS), Firebase, RevenueCat
Note
iOS release planned

Starting point

The app started in 2021 as “Hula Hoop Timer”: a timer for training with the hoop. But a timer only counts down. Once the hoop stays up, something else is missing – the next step: which move to practise now, for how long and in which direction. So in 2026 I rebuilt the app under the name Hoop-Fit, as a training app instead of a timer.

What I did

89 moves in six categories, each shown as an animation of body and hoop, with the steps and the typical mistakes. Plus ready-made and custom workouts with a coach who announces the next move and lowers the music instead of stopping it. Five programs over two to three weeks, a daily plan built from your own training history, progress per move and direction, streak and calendar. In German and English; workouts also run without a connection.

The animations are not videos. Each move describes its motion with a few parameters (pivot, plane, tilt, pace, body pose), and a CustomPainter draws it. The hoop is a circle in space: the back half is painted before the figure, the front half after it – depth without a 3D engine.

The rotation counter reads the accelerometer of the phone at your waist and counts rotations, pace and drops. A low-pass filter, a refractory window that adapts to the current pace and an amplitude gate keep bumps from counting as rotations. The detector knows no sensor plugin and is tested with synthetic signals. The daily plan is plain Dart without a backend as well: the same data and the same date give the same workout, and every block names its reason.

On the native side there are home-screen and lock-screen widgets (Swift with WidgetKit, Kotlin with Jetpack Glance), a Live Activity with Dynamic Island during a workout, plus Apple Health and Health Connect.

The app lives in my Flutter workspace: four layers (domain, data, application, presentation) with get_it and ChangeNotifier, typed routing with go_router, shared packages for login, in-app purchases via RevenueCat, push, deep links and analytics. Close to 800 unit and widget tests, tests of the Firestore security rules in the emulator and a CI with GitHub Actions and Codemagic guard every release. The store screenshots are widget tests too: they render the real app in both languages for iPhone, iPad and Android.

Result

Live on Google Play as Hoop-Fit, the iOS release is planned. The landing page hoopfit.app is built in Flutter as well and runs on Cloudflare Pages.

Stack

Flutter, Dart, get_it, go_router, dart_mappable, Firebase (Auth, Firestore, Cloud Functions, Storage, Messaging, Crashlytics), RevenueCat, sensors_plus, Apple Health, Health Connect, WidgetKit, Live Activities, Jetpack Glance, TelemetryDeck, mocktail, GitHub Actions, Codemagic, Cloudflare Pages