BACKUP AND RESTORE SPECS CASES REQUIREMENTS BACKUP - Backup to independent text format using JSON text files like DB DUMP and Discourse does - Backup all attached files (encrypt?) - Encrypt the backup file archive or each file (need to determine) so that the backup file can't be read independent of RAVEN - Encryption key needs to be user selectable because we don't want any AyaNova user to be able to restore any other AyaNova users db - Optionally automatically send the backups to online destinations such as - AWS web storage - Dropbox - Mailbox if under certain size - Look into whatever apis are available for other online storage services - Download backups - Backup during closed window where server is not available for anything but read only operations during backup window - User configurable backup time - User configurable encryption key in environment variable? If not set then not encrypted?? RESTORE - Automatically closes api before RESTORE - Restore from backup locations can save to? - Or at least a method to fetch and list those backups to fetch to local? - Upload a backup file for restoration - Decrypts data during restore process - Must use user provided key and there should be some kind of marker file or something to verify it decrypted properly and is a valid AyaNova backup - Restore the attached files (decrypt?) - Uses user configurable encryption key ROLES - Ops ful, biz full can - modify backup configuration - Restore - Backup - OpsLImited and biz limited can - view the backup and restore configuration - Backup