AccelOne rebuilt the iWitness app for iOS and Android, which contains features designed to:
  • Protect users in unsafe areas: If the user feels unsafe, they can open iWitness, and the app will begin recording video and the user’s GPS location. The user can tap anywhere on the screen to automatically make a 911 call.
  • Prevent crimes from escalating: Tapping on the screen also sounds an alarm and causes the phone to emit bright light, which draws attention from others and makes it easier for the user to identify their attacker – this alone will cause many criminals to flee.
  • Facilitate contact with emergency response: In addition to calling 911 with one tap, the app also sends a text with the user’s location to pre-set emergency contacts.
  • Facilitate the capture and prosecution of criminals: Videos are stored to the cloud, meaning that even if your device is stolen or destroyed, video evidence of the crime will still be available.
iWitness is easy for people of all ages to use, including children.

THE CHALLENGE

The original version of the iWitness app was developed using legacy architecture for the back end and cloud infrastructure. This made the application complex for users to operate, lent a dated appearance to the app, and made use of an inefficient video processing server implementation. This inefficiency led to a slow video processing speed, as well as frequent failures. Some features were not working at all, and the original development team was no longer available to make improvements. iWitness brought on AccelOne to make usability improvements, fix features that were no longer working properly, update libraries and frameworks, and update the programming languages used to the latest versions. AccelOne needed to reverse-engineer the legacy architecture in order to rebuild the back end components.

THE PLAN

AccelOne’s team consisted of four members:
  • Senior iOS Engineer
  • Senior Back End Engineer
  • Technical Project Manager
  • QA Engineer
The project was divided into two phases.

Phase 1:
The goal of phase 1 was to implement immediate, partial updates to both the iOS and Android apps in order to get key features working again. As it was a priority for iWitness to fix these features first, AccelOne designed a solution that would allow those fixes to be done as soon as possible, with more complex overhauls handled in phase 2. AccelOne created a new backend using Node.js and Express, which ran in parallel with the original legacy backend, which powered some features but not the entire app. Both backends used the same database. This fix helped get several of the broken features working again, but problems with video processing speed persisted, as well as issues with user signups. The AccelOne team had developed a plan to solve these issues in the second phase.

Phase 2:
After implementing the immediate fixes necessary in phase 1, the back end was fully rewritten in Node.js and Express, and a much more modern architecture for the app infrastructure was created. This improved the app’s performance greatly. To solve the video processing issues, a Node.js-based media server was created. Using Node.js for both the app backend and the media server improved efficiency by streamlining the development process and reducing the likelihood of file corruption or problems with slow processing as videos move from the app to the cloud. The iOS app was migrated to Swift 5. Libraries were updated, and all app screens were tested and prepared to display correctly on the latest iPhone model, which at the time was the iPhone X. Issues with videos and signups in iOS were also corrected. Despite the significant amount of work involved, phase two was completed in only three months.

QA Testing
The Quality Assurance (QA) engineer assigned to the project worked with the development team from beginning to end, testing at every phase in order to ensure the proper functioning of each feature and a smooth launch after each phase. The app has been monitored with a QA framework for crash and bug reporting, and has proven to be stable in all current models of iPhone. The once-problematic video media server has been working without issue, and is providing usage statistics.

RESULTS

AccelOne’s version of the iWitness application proved to be stable, scalable, and resolved the problems of the previous outdated version. The new Node-js-based media server solved all the video processing issues of the previous back end platform, which means that videos are now always available and are processed significantly faster than before. The old application code had been updated to all the newest coding languages and frameworks, making it easier to obtain support for modern versions of mobile operating systems. All features now work as expected, and thanks to these updates, the iWitness platform is seeing new paying subscriptions every week. Additionally, as the app was updated for the latest model of iPhone, owners of this popular device now have a dramatically improved experience using the app. Because the code base for the app was migrated to the newest versions of its frameworks and languages, both the Android and iOS versions of the app are much more able to support modern versions of mobile operating systems.