Documentation on Ghost's architecture

Is there any documentation I can read about how Ghost is laid out, how certain components are defined etc.?

For example, I’m finding it very unclear how to add and use a setting. I have found admin/mirage/fixtures/settings.js which seems to be actually creating the settings in the database, but there appear to be several ways to actually use a setting. For example, with the is_private setting ,admin/app/services/frontend.js uses this.settings.isPrivate, while ghost/core/core/frontend/apps/private-blogging/lib/middleware.js uses settingsCache.get(is_private).