How would you design a mobile app architecture for offline-first synchronization with a backend service?