Synchronize data with cloud, so you can reload data when you change phone
This is actually already happening. All your data is synced to the cloud.
I remember the app asked me if I wanted to sync to the cloud but after purchasing the app I can’t find the option. How do I configure cloud sync? And how does it encrypt the data?
If you sign up anonymously without an email address or Google account the app will ask you every 14 days if you’d like to connect your Google account. If you want to do this right now you can change your phone’s date to 14 days in the future as a workaround. I’ll add an option to the settings menu in the future as well.
The data is synchronized via a secure http connection using SSL. However, the data itself is stored unencrypted on my server. I’m planning to add end-to-end encryption at some point in the future but I didn’t have the time yet as it’s quite a technical challenge.
Please consider supporting 3rd party storage backends like Google Drive or even Amazon S3/DynamoDB. Amazon gives you certain guarantees for encrypted files at rest. “on my server” is a no-go for anything financial.
This is a topic I’m currently thinking about. As I want to support shared trips and live sync between multiple devices 3rd party storage backends are not really an option. The current architecture requires a backend application. So I would probably have to implement end-to-end encryption on the client side.
However, trip sharing and client-to-client live sync becomes harder and less user-friendly with encryption. For example I’d have to implement a convenient encryption key sharing mechanism.
@normoxic I’ve thought about this a little more. Maybe I’ll just migrate the Postgres database from my DigitalOcean droplet to Heroku. There the database will automatically be encrypted at rest.
Hey @normoxic, good news: I’ve finally migrated the TravelSpend infrastructure to Heroku. So all data is now encrypted at rest. (see https://devcenter.heroku.com/articles/heroku-postgres-production-tier-technical-characterization#data-encryption)