Enable 'Backup my data' and 'Automatic restore' in Settings > Backup and restore. This backs up and restores Google contacts, Keep notes, Calendar, home screens, WiFi passwords and some other settings.
SMS/MMS can be backed with a dedicated SMS backup app or with general backup apps like MyBackup Pro or Helium, which can backup much more than just texts. Google Photos is very good for photos. Documents and other files can be manually backed up to a computer or cloud storage such as Google Drive or Dropbox. Photos, too.
Some apps like AquaMail, Nova Launcher, X-plore, FolderSync and VoiceChoice 2.0 have a backup function that will generate backup configuration files. Manually copy those for quick, easy restoration wihout having to go through setup and up all the options again. If there's no built-in backup function, you may be able to find and copy the configuration file for some apps.
When setting up, enter the appropriate Google account as the administrator, get WiFi working, add any other accounts. android will automaticlly start downloading and installing. Copy over any backup configuration files you have for AquaMail, Nova etc and all that extensive app configuration that took hours originally is restored bang - bang.
Most of the time in setting up is spent reconfiguring those apps that do not generate backup configuration files. Unfortunately, seems many developers who write otherwise nice apps sometimes overlook this important and handy function. All in all it really isn't too bad if you have a plan and apps such as AquaMail and Nova that will save the most complicated setups and restore them in seconds.