Designing offline-first mobile applications for regions with poor internet connectivity