An Unofficial iOS App for F45 LionHeart

, a 6-minute piece by Dev Mukherjee Dev Mukherjee

Announcing LionHeart Unofficial App

Wagga got a F45 Training franchise in April this year, it's conveniently a block across from Anomaly HQ. I decided to join the local branch in effort to streamline my efforts towards fitness. I react rather well to organised fitness regimes like personal training and saw this to be a happy medium.

F45's use of technology is rather impressive, video demonstrations, full synchronised sessions with informed trainers and the ability to book your sessions via their customised Mindbody platform presents a truly modern fitness studio experience. Add to that their LionHeart system and you are collecting vital readings while you work out.

F45 say get the magic forty five points and you've got the most out of your workout. It's brilliant, it adds an element of motivation and competition which represents their ethos of training together. At present all you get from the LionHeart system is an email with a graph and some basic numbers from your session and a portal that shows your history.

The recent burst in fitness wearables has had us thinking on what we could do with these developments. Apple Watch for example pushes data into the Apple Health ecosystem. To see what we could do with LionHeart's data and Apple devices I commissioned an unofficial iOS fan app. The result turned out to be so useful that we decided to publish it.

Get it on App Store

Declaration & Privacy Information

App Features

The premise of the LionHeart client is a visualisation app for your workout data. Features are limited by the data exposed by the service.

Leaderboard: You're greeted by a leader board of all the workouts you have done across every F45 studio. The graph's scale is set to 45 (what you should aim for) and markers to support the hour long sessions.

A ring progress meter animates celebrate the progress of your last workout, complimented with total workouts, average calories and your top F45 LionHeart score.

History: presents a calendar decorated with markers denoting number of workouts on that day, touching the date will reveal details of the workout and how hard you worked during the session.

Workout Browser: F45 offers a number of different programs, the workout view summarises the different programs you have tried across studios, touch through to get a summary of workouts of that type grouped by month and year. You can access the same visualisation as the history view for each one of those workouts.

Today Widget: The app also provides an extension, this can be added to your device's today view. It presents you with a summary of your last F45 workout. Swipe right over the Home screen, Lock screen, or Notification Centre to access it. Here's a Apple's guide on configuring the today view. If your device supports 3D touch, simply press and hold the app icon to access your information about your last workout.

Coming Soon to Apple Watch

We're already working on an Apple Watch extension that will allow you to browse your F45 LionHeart statistics on an Apple Watch paired with your phone.

Apple Watch provides a nice array of user interface elements revolving around fitness and we can't wait to show what we come up with.

Universal app over HealthKit Integration

One of the big things we wanted to do was integrate the data into the Apple Health ecosystem. As it stands in iOS10 the Health app (or the ecosystem) isn't available on the iPad. We had to weigh up between HealthKit integration or availability on the iPad.

iOS11 hints at Health being available on the iPad and hence for our initial release support for iPad won out over HealthKit.

The moment HealthKit support hits iPad we will be able to push all your historical data to HealthKit, all you will have to do is download our iOS11 update.


It's difficult to reliably outline a roadmap for an unofficial product. What we can do with the app is largely dependant on what F45 do with their systems and server side implementation.

We would love to explore social features like sharing data with your friends or running leader board competitions which compliment's F45's challenge weeks. We will continue to work at the app so all F45 members and fans can get more out of the knowledge collected during these intense workouts.

If you are an F45 member and an iOS user do get a copy and spread the word. We always like to hear what you think so feel free to say hello or Tweet at us.

Enjoy visualising all the hard work your have put into your F45 sessions.

Open Sourcing for Education

, a 2-minute piece by Dev Mukherjee Dev Mukherjee

Certain software applications make you stop and wonder how it's engineers implemented features or the entire application. You can't help want to get in their minds and see how they made the pieces fit. Often times it's about learning how they went about implementing the project, where did they start? Growing up I wondered how id Software built DOOM and Wolfenstein or Broderbund, Where in the World Is Carmen Sandiego? At the time I classified them as impossible.

Software is a strange profession. What you spend your life working on is rendered obsolete every decade or so. iPhone was released a decade ago, think of all the exciting application you bought when the AppStore launched and where they are now? Or even how the platform (hardware and software) have changed.

I developed an interest in programming from at a very early age.

Back in the early 90s I programmed in an xBase variant called FoxPro (acquired by Microsoft) building a specialised point of sale application for photograph studios. My dad ran a photography studio and processing laboratory and had one of his friends author him a custom system. I found it lacking in features (one of them being ability to be used over a network) and decided to work on my own fork. This would later end up being a production system, maintaining which occupied large portions of my school holidays.

Zoom (photography reference, and it's name) is now defunct. Before I lost all traces of it, I took a copy and decided to put it up on Github. It's both in service of history and education. Those interested will be able to study how xBase applications were built, and the labour of my teenage years are now preserved for the rest of time. It follows similar efforts of companies like id Software demystifying how some of their master pieces were constructed

Before you call your decades old project obsolete, consider contributing it as open source code, so others may study and learn from it.

Scrollable Graph View for iOS in Swift

, a 5-minute piece by Dev Mukherjee Dev Mukherjee

Last couple of months I have been experimenting with Swift and iOS10 with a small data visualisation project in mind. While experimenting with plotting values onto a graph, I came across Phillip McKenna's rather popular ScrollableGraphView. It's extremely simple to configure:

private func configureGraph() {
    let referenceLines = ReferenceLines()
    referenceLines.positionType = .relative
    referenceLines.relativePositions = [0, 0.5, 0.8, 0.9]
    referenceLines.referenceLineThickness = 1
    referenceLines.referenceLineLabelColor = _COLOR_PURPLE
    referenceLines.dataPointLabelColor = _COLOR_PURPLE
    referenceLines.referenceLineColor = 
        referenceLines: referenceLines)

    // Line plot
    let linePlot = LinePlot(identifier: "percentageLine")
    linePlot.fillColor = _COLOR_LIGHT_PURPLE.withAlphaComponent(0.50)
    linePlot.fillGradientType = .linear
    linePlot.lineColor = _COLOR_PURPLE
    linePlot.shouldFill = true
    linePlot.lineStyle = .smooth

    percentageGraph?.rangeMax = 100
    percentageGraph?.dataPointSpacing = 38
    percentageGraph?.topMargin = 10
    percentageGraph?.bottomMargin = 64

    percentageGraph?.addPlot(plot: linePlot)
    percentageGraph?.dataSource = self
    percentageGraph?.showsHorizontalScrollIndicator = false

There were few feature requests that had been in the queue for a while (some of which I wanted to use). We proudly sponsored some development time for APIv4. If you are in need of an iOS graphing component I highly recommend looking at this project.