- 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.
- Senior iOS Engineer
- Senior Back End Engineer
- Technical Project Manager
- QA Engineer
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.
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.
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.