Good afternoon, @Fred
I would like to say if it's possibly included recovery keys
example (16 random keys with this format):
xxxxx-xxxxx
This is just in case that if you accidentally delete your 2FA code from the app. So it makes the account recovery safer and still accessible ONLY to the user that has those codes.
I created a flat-file database called PHPDB so you can secure those keys in a encrypted file so it can't be tracked down by any fetches or file_get_contents() methods. If you want to try it out on a seperate page.