local_changes = true
while (local changes):
pull_project()
push_state = push_project()
if push_state == success:
local_changes = get_remaining_changes()
clear retry counter
else if push_state is error, but can be retried:
sleep()
increment retry counter
else (push_state can not be retried || I have retried max times)
break
Following https://github.com/MerginMaps/product/issues/83, let's introduce the sync loop
Acceptance criteria: