Many great examples are provided as Python templates in Blender, but none of them illustrates of to organize files to write an add-on of more than a single file.
This repository intends to give a starter kit as well as to illustrate and intensively comment design patterns commonly used in advanced Blender add-ons. It also gives in the comments pointers to related documentation.
Feel free to suggest or request new examples. I'll happily make this as exhaustive as possible so that it becomes a reference for add-on developers.
Feedback can be given through issues, the BlenderArtists thread or on twitter.
You can download this repo as a zip and install it as a Blender add-on. Then it features hot reloading so you can go to where the add-on is installed (e.g. C:\Users\Elie\AppData\Roaming\Blender Foundation\Blender\2.90\scripts\addons
or .blender/2.90/scripts/addons
), modify the files and run "Reload Scripts" in Blender to update the add-on without restarting Blender.