Open tijlleenders opened 2 years ago
A free option for backing up is available by just auto-syncing between two devices that you own (for example, your laptop and phone). This will be implemented in #1944.
If you lose one device, you can buy a new one and setup a new account, then sync to that from the device you still have.
This makes the cloud backup option low prio - as it would only be useful for people who don´t have two devices - or people who are afraid of losing both simultaneously.
Setting up cloud backup is a first step towards cloud storage however, and in that sense interesting. Think of adding documents, photos etc in your own cloud storage as attachments in your goal hierarchy.
The UI should have an option in settings where a user can enable a daily backup to the cloud.
It is turned off by default, as some people might not want this.
deviceUuid1
for device1BACKUP
getBackupUuid
API withdeviceUuid1
=> returns abackupUuid1
backupUuid1
and the encryption password. On this page, always ask user to store thebackupUuid1
and the password outside of the device (easy copy/share button available to use a secure app to transfer out of device)."Make cloud backup now" button to continue.
storeBackup
API withbackupUuid1
anddeviceUuid1
as metadatacreditsUuid
(if person previously purchased ZZ credits and want to re-use those)backupUuid1
as theclient_reference_id
5c. Optional, if payment is successful, Stripe will trigger ZZ backend with theclient_reference_id
(backupUuid1
), sending a message todeviceUuid1
via the backend (to give peace of mind that payment has been received), including thecreditsUuid
that will be stored on the device1.RESTORE
When device1 breaks, or gets lost/stolen:
deviceUuid2
for device2backupUuid1
(the one stored by user outside of device1) and passwordbackupUuid1
, backend sends a push message to uuid1 (as an extra safety mechanism)creditsUuid
(if person previously purchased ZZ credits and want to re-use those to pay the 10 000 ZZs)backupUuid1
as theclient_reference_id
5b. Optional, if payment is successful, Stripe will trigger ZZ backend with theclient_reference_id
(backupUuid1
), sending a push message todeviceUuid1
(as an extra safety mechanism) and todeviceUuid2
that cloud backup can be downloaded.deviceUuid2
also gets acreditsUuid2
backupUuid1
, either by reduced payment upon setup, or by payment when it was actually needed, if device2 now calls thegetCloudBackup
API with thebackupUuid1
andCreditsUuid(2)
. Since it has a valid backupUuid and a valid creditsUuid, it then gets a presigned URL to download the backup.Additional context:
Initial draft of this issue had a restore process where you have to email restore@zinzen.me to receive a customer-password protected file. This is abandoned in favor of a process where an email is not required by ZinZen. The payment provider Stripe requires an email - but this is not stored by ZinZen ... and is not required to be a working email for the payment to go through?