Companion apps for smart dashcam & tyre inflator
At a Glance
- A companion app for 2 IoT devices – a smart dashcam and a tyre inflator
- The project had 3 white label variants from a single code base
- Interaction with an endpoint over a WiFi hotspot connection to a dash cam
- Integration with 3rd party APIs to obtain vehicle information
- Setup process for smart devices
Review submitted via Clutch
The Challenge
Osram operates under three distinct brands in different parts of the world Osram, Ring and Sylvania. Each brand was maintaining a separate app written in Xamarin. They were experiencing increasing costs maintaining and adding new features to the separate code bases.
Coderus offered to combine these apps into a single codebase while maintaining the separate branding. This included company information, colour palettes, product photography as well as other items like legal terms and conditions.
The Ring and Sylvania app required support for both the Dash Cam and Tyre Inflator, while Sylvania only required Dash Cam support.
The documentation provided for the dash cam was incomplete and inconsistent from the behaviour observed from the device, so we had to reverse engineer the existing Xamarin app in order confirm how the Dash Cam API worked. The client had a strict budget and go-live which had been communicated with Osram’s internal stakeholders. The resource applied to the project must be carefully monitored to keep the project within budget.
The Methodology
At the start of the project, a workshop session was held with the client so that Coderus to develop a clear understanding of the project requirements, build a high level design overview and create a task breakdown. The project used scrum methodology, working in 2 week sprints to deliver incremental releases. Daily stand ups discussed progress towards the sprint goal, which the client would attend twice a week. This ensured that the client had visibility across all stages of the project and was able to answer any questions to clarify requirements. Each sprint held a backlog refinement session to ensure tasks for the next sprint had enough detail. As well as a review session to look at new features added to the app. Retrospectives were completed at the end of each sprint to identify areas of improvement in the way that the team worked.
As this was a large project we looked for opportunities to break the project down into smaller phases. When capturing requirements we had identified that the Sylvania only required dash cam support as the tyre inflator was not sold in that region. We focused on the Sylvania app first, implementing the smallest scope possible to provide a working product which could be released to production. This helped to reduce project risk and allow Osram to begin capturing customer feedback. The next phase was to produce Osram and Ring branded dash cam apps so that each brand had it’s own production ready dash cam app. Before finally adding support for the tyre inflator.
The iOS Tech_
- Built using Swift & SwiftUI
- Small external libraries used – SwiftyBeaver for logging and XMLCoder for decoding XML data from the dash cam
- Lightweight API manager enabled efficient network requests
- Setup process for smart devices
The Android Tech_
- Kotlin & Kotlin Coroutines for concurrency
- Automated build deployment to the Google Play Store from Jenkins using Fastlane
- Multi module architecture following Google’s best practise guides
- Use of our internal Bluetooth library for connecting to and controlling the dash cam