← Back
L4 Logo

LIFE4 Mobile App

A iOS/Android app allowing DDR players to track rank progress.

LIFE4 is a comprehensive ranking system around the arcade game Dance Dance Revolution that gives its players ever-increasing goals to challenge them and help them get better at the game. It is a third party community and most likely the largest one centered around DDR, with over a thousand active players engaged in the ranking system!

LIFE4 and its ranks aren't connected to the official game, so players working towards ranks have to keep track of their progress themselves. They need to take pictures of fulfilled requirements and manually fill in submission forms, prompting many to take up the daunting task of keeping spreadsheets and checklists to track everything. LIFE4's goal here is to reduce (or eliminate) that manual work by creating a mobile app that helps players track their progress towards ranks!

Here is an example of a rank, Bronze IV. If a player wants to aim for this rank, they have to know which of the listed requirements they already completed. Instead of writing it all down, why not have an app let you track progress?

  1. Bronze IV Website

  2. Bronze IV App

The State of the Project

The app is currently released on Android only. The main barrier for the iOS release is finding someone with experience in iOS development, who is willing to invest time in an open source project for a third party community.

The current LIFE4 staff is also busy with their personal lives, so the app wasn't the biggest priority since it's only meant to supplement players' experiences. The app was on the back burner for some time—the Google Play store listing shows that its last update was September 2021, over 2 years ago! The LIFE4 website is still actively maintained since it's a necessity (it's where players submit their rankups and update their profiles), so the app's architecture fell way behind the website's.

There has been a recent push for an overhaul of the existing app, to bring it up to date with LIFE4's changes over 2 years. In the process, the developer of the Android app migrated the project to Kotlin Multiplatform as its support and popularity grew. This would allow maintaining the app across the platforms easier by sharing Kotlin logic between Android and iOS. The Android UI and Kotlin logic was already built out, but there was still one problem: the lack of an iOS developer!

Becoming a Contributor

I expressed interest in becoming the iOS developer of the LIFE4 mobile app. I admire LIFE4 as a ranking system and it has helped me tremendously for DDR goal-setting and improvement. I also keep spreadsheets of my own progress, so I can relate to the problem that the app intends to fix and see myself as part of the target audience.

I completed an iOS development course at UT Austin in my Fall 2020 semester, but haven't found an opportunity to use what I learned from that course 3 years later (I've been mostly web-based in my full-time work). Catching up wasn't easy either; my iOS class primarily used Storyboard for all projects and only covered SwiftUI in a couple lectures. SwiftUI has had increased adoption since then, and Kotlin Multiplatform projects use SwiftUI for the iOS UI. I had to catch up with modern SwiftUI crash courses and build apps to apply the knowledge from them.

I also needed to spend time understanding the existing functionality of the Android app. The developer of the Android app helped get me set up so I could run the app on my device, and gave me a tour of the existing UI and logic. The Android UI was built using Jetpack Compose, which I had never learned before. Jetpack Compose is a toolkit designed to replace the Android development I knew 4 years ago: using View objects and building UI elements in an XML layout. There was a loooot of catching up to do!

Once I familiarized myself with both Jetpack Compose and SwiftUI, I could begin contributing to the iOS side of the app. The structure between Jetpack Compose and SwiftUI was surprisingly correspondent; once I understood the structure of the Jetpack Compose code, the SwiftUI code I typed out would have nearly the same structure.

Here's a video of the player onboarding process in the LIFE4 app. As the iOS developer, I was responsible for writing SwiftUI code for the iOS flow (right) to match it with the existing Android flow (left).

The app overhaul is currently a work in progress, and I'm still actively working towards the iOS release with the LIFE4 staff. I will add on to this blog with updates on this app's development as they come!