I have a web app - it's more complicated than a todo list but for simplicity sake let us assume it is a todo list. The user has the choice to sign up and create an account thus allowing them to store all their todos to a database. The user also has the option to test out the app as a guest. If they are acting as a guest I want them to be able to save their data and access it - even if they never create an explicitly authenticated account.
As far as I know their are two ways to do this.
One is to simply store their data in the client and give the user the choice to export/import it as a JSON doc.
The other choice is to present the user with a unique key one time that acts as their log in credentials in the database. This key would need some ephemeral analog input to make it truly unique - like weather data or something.
My question is:
Are other ways to go about this that I am not aware of? My ultimate goal is to allow a user to have the most friction-less experience as possible when trying out the application ( a medium/large size business app ).