Client: Doozer Software/E. A. Renfroe & Company, Inc.
Project Term: January, 2018 – September, 2018
Services Provided: Technical Architecture and Implementation
Target Platforms: Android, iOS
Technologies Used: Xamarin.Forms v2.5, Prism.Forms v7.0, Visual Studio Team Services, MS App Center
Doozer Software provides custom software development services and highly qualified, experienced IT contractors to their clients. Their client, E. A. Renfroe & Company, Inc. (RENFROE), is a full-service staffing and project management company that provides all types of claim handling and support services, built to scale, and customized to serve insurance companies, self-insured corporations and governmental entities.
RENFROE reached out to Doozer Software seeking mobile development expertise to lead their first mobile app development effort. I was brought onto the project to provide architectural guidance, training of existing development staff, and to lead the implementation of the initial release’s user interface, data modeling and web services integration.
I worked on a full time basis for nine months to deliver both “0.9 soft release” and “1.0 official release” versions of the app for the Android and iOS platforms. The Android app is available in the Google Play Store. The iOS app is available as a direct Enterprise download from the RENFROE corporate website.
RENFROE describes the app as being “…the official E. A. Renfroe & Company app! Our mobile app was tailored to meet adjusters needs by providing helpful features that they can use while on the go!”
The RENFROE Mobile app allows users to:
- Reach other project team members or managers via phone, text or email without managing contact information in their device’s address book
- See expected project arrival time and location, including a map view that pinpoints the location
- Review previously accessed data even when data service is limited or unavailable
- Upload new or replacement certifications, licenses and HR documents by taking a new photo or choosing an existing one from their mobile device
- Review answers to commonly asked questions, and contact the appropriate RENFROE resource via phone or email if an answer isn’t provided
- Managers can also view team member statuses, including any pending, expired or missing documents
App Architecture, Visual Design
Xamarin.Forms v2.5 and the Prism.Forms v7.0 MVVM framework, along with a variety of open source addons, were used to expedite development of the app for the Android and iOS platforms. RENFROE management had mostly defined the project’s business requirements when I started, but full fidelity visual designs hadn’t been created. I was tasked with creating the app’s visual design. I created multiple screen layouts in Adobe Photoshop for stakeholder review. I was given approval to make design choices for remaining screens as they were implemented.
Prominent technical features:
- In-memory and local storage caching of most web service interactions provides offline support. Data is encrypted prior to being written to local storage
- Fault tolerant web service interactions are implemented by reattempting failed communications multiple times with an increasing delay between each attempt. This mechanism eliminates most typical communication failures over slow or unstable data connections
- Automatic in-app update checking and installation support for the self-hosted iOS Enterprise app distribution
- Fully integrated usage tracking for analytics reporting, as well as crash/error reporting for diagnostic purposes
App Testing, Continuous Integration and Delivery
Both Visual Studio Team Services (VSTS) and Microsoft App Center services were leveraged to manage the development and testing of the project. RENFROE development staff were already using VSTS to manage source code repositories, schedule development activities and track defects. I added MS App Center to manage the building and internal distribution of both platform versions of the app to internal QA resources for testing and to stakeholders for user acceptance testing, as well as tracking app usage and diagnostic issues.